DBGRID中的超链接字段

时间:2014-03-14 19:29:24

标签: delphi dbgrid tdbgrid

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

enter image description here

我的目的是通过ShellExecute打开一个窗口点击注册的电子邮件和软件发送电子邮件。我使用dgRowSelect选项作为TRUE,因此OnCellClick事件无法正确识别单击的单元格。

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

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

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

1 个答案:

答案 0 :(得分:1)

我猜dgRowSelect = true的目的是突出显示整个选定的行。 TLabel不是我想要的方式 - 我会设置dgRowSelect = false并在OnDrawColumnCell中绘制选定的行或创建我自己的固定dbgrid。 有一个类似的问题: how can i colour whole row in DBGrid with rowselect turned off?

无论如何,如果你想使用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;