StringGridでマウスがどのセルに位置しているのかを調べる
|
72 |
StringGridMouseToCell |
動作確認 |
Delphi2007 |
更新日 |
2008/02/02(土) |
MouseToCellプロパティにマウス位置を与える事で
どのセル上にマウスカーソルがあるのかを知ることができます。
テストコードを書いてみました。
実際に動作させてみるとよくわかります。
────────────────────
var
ColBuffer, RowBuffer: Integer;
procedure TForm1.StrGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
ACol, ARow: Longint;
begin
TStringGrid(Sender).MouseToCell(X, Y, ACol, ARow);
if (ColBuffer <> ACol) or (RowBuffer <> ARow) then
begin
ColBuffer := ACol; RowBuffer := ARow;
Memo1.Lines.Add('Col:'+IntToStr(ACol) +' Row:'+IntToStr(ARow));
end;
end;
procedure TForm1.StrGrid1MouseEnter(Sender: TObject);
begin
Memo1.Lines.Add('MouseEnter');
end;
procedure TForm1.StrGrid1MouseLeave(Sender: TObject);
begin
Memo1.Lines.Add('MouseLeave');
end;
────────────────────
動作確認画面です。
セルが存在しない場所では
ACol=-1、ARow=-1という値がとれますし
MouseEnterやMouseLeaveのイベントは
StringGridのスクロールバー部分以外で
動作することもわかります。
|