将鼠标悬停在 dbgrid 的标题上

Mouse over dbgrid's title

有没有一种方法可以通过将鼠标移到 Dbgrids 标题上来捕获标题的名称?

想法是让标题名称仅在光标移到标题字段上时可见。

提前发送。

要回答这个问题,您需要了解的是

1:鼠标悬停在哪个单元格上(因此是否悬停在标题单元格上)

2:字段名(标题)。

这两种情况都是可能的,但不确定您将如何使用此信息使标题名称可见。

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

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

但也许更直接的方法是在选项中设置 dgTitleHotTrack 并设置热轨样式(可能必须是自定义样式)。

下面的代码显示了如何获取鼠标指针悬停的网格列的"title"。

其实TDBGrid的header列显示的是Titleobject列的Caption属性,有其他属性也是如此。下面的代码读取并显示 Title.

Caption 属性

正如您从联机帮助中看到的那样,作为网格列的 TColumn objects 也具有 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;