2016-08-15 205 views

回答

5

下面的代码显示了如何获取鼠标指针结束的网格列的“标题”。

实际上,TDBGrid列的列标题中显示的是Title对象的Caption属性,该属性也具有其他属性。下面的代码读取并显示TitleCaption属性。

正如您从联机帮助中看到的那样,作为网格列的TColumn对象也有FieldFieldName属性,您可以根据需要阅读这些属性。

procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: 
    Integer); 
var 
    Col, 
    Row : Integer; 
begin 
    Col := DBGrid1.MouseCoord(X, Y).X; 
    Row := DBGrid1.MouseCoord(X, Y).Y; 
    Caption := Format('Col: %d, Row:%d', [Col, Row]); 
    if (Col > 0) and (Col <= DBGrid1.Columns.Count) then 
    Caption := Caption + DBGrid1.Columns[Col - 1].Title.Caption; 
end; 
+0

这个伎俩。 感谢您的帮助。 – Ledzouz

1

要回答这个问题,你需要知道这里是什么

1:鼠标是哪个小区过(因此无论是在标题单元格)

2:字段名称(标题)。

这两个都是可能的,但不知道如何使用这些信息使标题名称可见。

1:捕获OnMouseMove事件并使用MouseCoord属性。

2:使用结果列值(如果行值为0)和Fields [ACol] .FieldName属性。

但也许更直接的方法来实现你想要的是在选项中设置dgTitleHotTrack并设置一个hottrack样式(可能必须是自定义样式)。

+1

不知道这是如何回答这个问题。似乎更像是对我的冗长评论。 –