cxGrid でマウス下のセルを取得する
TcxCustomGridViewまたは、TcxCustomGridViewInfoのGetHitTestメソッドを使用します。
例として、TableViewのOnMouseMoveでマウス下のセルの情報を取得してみます。
procedure TForm1.cxGrid1TableView1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); var AHitTest: TcxCustomGridHitTest; AGRCHitTest: TcxGridRecordCellHitTest; begin AHitTest := TcxGridSite(Sender).ViewInfo.GetHitTest(X, Y); if AHitTest.HitTestCode = htCell then begin AGRCHitTest := AHitTest As TcxGridRecordCellHitTest; Memo1.Lines.Add(AGRCHitTest.ViewInfo.Text); end; end;
TcxGridSite(Sender).ViewInfo.GetHitTest(X, Y)で、マウス下の要素の情報を取得し。AHitTest.HitTestCodeで要素が何であるかを調べます。
サンプルではセルの時のみ処理をするのでhtCellと比較しています。
要素が何であるか判ったら、AHitTestをその要素毎のHitTestClassにキャストします。サンプルではセルなのでTcxGridRecordCellHitTestにキャストしています。
TcxGridRecordCellHitTestは、Itemプロパティが列の情報、GridRecordプロパティが行というかレコードの情報にアクセスできます。
サンプルではViewInfoプロパティから表示テキストを取得しています。
ヘルプのキーワード "Understanding HitTests" および、この項目からリンクされているTable View/Banded Table View/Card View/Chart Viewにより詳細な情報(各View毎に取りうるHitCodeや、取得できるHitTestClass)が載っています。