将鼠标悬停在 dbgrid 的标题上
Mouse over dbgrid's title
有没有一种方法可以通过将鼠标移到 Dbgrids 标题上来捕获标题的名称?
想法是让标题名称仅在光标移到标题字段上时可见。
提前发送。
要回答这个问题,您需要了解的是
1:鼠标悬停在哪个单元格上(因此是否悬停在标题单元格上)
和
2:字段名(标题)。
这两种情况都是可能的,但不确定您将如何使用此信息使标题名称可见。
1: 是捕获OnMouseMove 事件并使用MouseCoord 属性.
2:是使用结果列值(如果Row值为0)和Fields[ACol].FieldName 属性.
但也许更直接的方法是在选项中设置 dgTitleHotTrack 并设置热轨样式(可能必须是自定义样式)。
下面的代码显示了如何获取鼠标指针悬停的网格列的"title"。
其实TDBGrid的header列显示的是Title
object列的Caption
属性,有其他属性也是如此。下面的代码读取并显示 Title
.
的 Caption
属性
正如您从联机帮助中看到的那样,作为网格列的 TColumn objects 也具有 Field
和 FieldName
属性,您可以根据需要阅读这些属性。
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;
有没有一种方法可以通过将鼠标移到 Dbgrids 标题上来捕获标题的名称?
想法是让标题名称仅在光标移到标题字段上时可见。
提前发送。
要回答这个问题,您需要了解的是
1:鼠标悬停在哪个单元格上(因此是否悬停在标题单元格上)
和
2:字段名(标题)。
这两种情况都是可能的,但不确定您将如何使用此信息使标题名称可见。
1: 是捕获OnMouseMove 事件并使用MouseCoord 属性.
2:是使用结果列值(如果Row值为0)和Fields[ACol].FieldName 属性.
但也许更直接的方法是在选项中设置 dgTitleHotTrack 并设置热轨样式(可能必须是自定义样式)。
下面的代码显示了如何获取鼠标指针悬停的网格列的"title"。
其实TDBGrid的header列显示的是Title
object列的Caption
属性,有其他属性也是如此。下面的代码读取并显示 Title
.
Caption
属性
正如您从联机帮助中看到的那样,作为网格列的 TColumn objects 也具有 Field
和 FieldName
属性,您可以根据需要阅读这些属性。
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;