将鼠标悬停在数据库网格的标题上



是否有一种方法来捕获标题的名称鼠标移动到Dbgrids标题?

的想法是使标题名称可见,只有当光标移动到标题的字段。

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

实际上,在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;

要回答这个问题,您需要知道的是

1:鼠标位于哪个单元格上(因此它是否位于标题单元格上)

2:字段名(title)。

这两种都是可能的,但不确定如何使用这些信息来使标题名称可见。

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

2:使用结果列值(如果Row值为0)和Fields[ACol]。字段名财产。

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

最新更新