1

我正在做一个小型内部软件来搜索我公司的分支线。除了支线,我还在数据库中放了一个电子邮件字段,如下所示:

在此处输入图像描述

我的本意是点击注册的邮箱,软件通过ShellExecute打开的窗口发送邮件。我正在使用该选项dgRowSelectTRUE因为该OnCellClick事件无法正确识别单击了哪个单元格。

在我的搜索中没有找到任何方法来做到这一点。然后我想到TLabel在该领域内使用 a 。我可以使用中的onclick事件,TLabel也可以更改光标图标。

如果TLabel是一个好的解决方案,我如何在 DBGrid 中添加一个 TLabel?

或者什么是另一个好的解决方案?

4

1 回答 1

1

我猜 dgRowSelect=true 的目的是突出显示整个选定的行。TLabel 不是我要走的路——我会设置 dgRowSelect=false 并在 OnDrawColumnCell 中绘制选定的行或创建我自己的固定 dbgrid。有一个类似的问题: 如何在关闭行选择的情况下为 DBGrid 中的整行着色?

无论如何,如果您想使用 dgRowSelect=true 并获取有关单击单元格的有效信息,这里是:

type THackDBGrid=class(TDBGrid);


procedure TForm1.dbgrd1CellClick(Column: TColumn);
var p:TPoint;
    col:TGridCoord;
    i: Integer;
    grid:THackDBGrid;

begin
    p := Mouse.CursorPos;
    grid := THackDBGrid(Column.Grid);
    p := grid.ScreenToClient(p);
    col := grid.MouseCoord(p.X,p.Y);
    i := grid.RawToDataColumn(col.X);
    Label1.Caption := 'Column index: ' +  IntToStr(i);
end;
于 2014-03-14T20:31:00.227 回答