delphi - 如何获取 TDbGrid 中光标下的文本

标签 delphi mouseover tdbgrid

屏幕宽度不足以显示某些文本字段。我不知道如何自动包装它们,并且我怀疑这是否可以轻松完成。

所以,我想我会做类似的事情

procedure TForm1.FormMouseMove(Sender: TObject;
    Shift: TShiftState; X,Y: Integer);

   var column, row : Integer;
begin
  myDbGrid.MouseToCell(X, Y, column, row);
  myDbGrid.Hinst := myDbGrid.Cells(column, row); // <==== ooops
end;

或者,也许可以在 OnShowHint 中执行此操作并获取鼠标坐标并将其转换为列和行(更高效)

但是,TDbGrid 当然没有Cells。知道当用户将鼠标移动到网格的“单元格”上时如何设置控件的提示吗?

最佳答案

使用此代码:

type
 THackGrid = class(TDBGrid);

procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
var
  Cell: TGridCoord;
  ActRec: Integer;
begin
  Cell := DBGrid1.MouseCoord(X, Y);
  if dgIndicator in DBGrid1.Options then
    Dec(Cell.X);
  if dgTitles in DBGrid1.Options then
    Dec(Cell.Y);
  if THackGrid(DBGrid1).DataLink.Active and (Cell.X >= 0) and
    (Cell.Y >= 0) then
  begin
    ActRec := THackGrid(DBGrid1).DataLink.ActiveRecord;
    try
      THackGrid(DBGrid1).DataLink.ActiveRecord := Cell.Y;
      Caption := DBGrid1.Columns[Cell.X].Field.AsString;
    finally
      THackGrid(DBGrid1).DataLink.ActiveRecord := ActRec;
    end;
  end;
end;

关于delphi - 如何获取 TDbGrid 中光标下的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13065902/

相关文章:

delphi - 在其他应用程序窗口上创建按钮

objective-c - 在 Cocoa 中,使用 webview,鼠标悬停时如何在状态栏中显示链接?

javascript - jQuery:如何将鼠标悬停事件放在由ajax生成的标签选择上

mysql - 添加搜索,在 DBGrid 中搜索数据并临时更改 DBGrid 显示的内容 - Delphi

delphi - 如何让 DBGrid 绘制 Yes/No 而不是 True/False

delphi - 如何在没有文档的情况下重构一个 10000 行的 Delphi 单元?

delphi - delphi程序中的隐藏主菜单,使用Alt键自动显示

delphi - 我自己的存储和检索使用 Delphi 文本 DFM 格式的生命周期很长

javascript - 如何使用 jQuery 阻止鼠标离开太快而缩短背景图像转换

delphi - DB 网格 - 我可以在第一行而不是第一列显示标题吗?