【发布时间】:2017-09-13 22:44:21
【问题描述】:
我需要在 Delphi 中获取一个 DBGrid 的选定单元格的值。
我不知道该怎么做。我试过 dbGrid 的 OnMouseMove
pt : TGridCoord;
...
pt:=dbGrid.MouseCoord(x, y);
[已编辑] 我可以使用 OnCellClick 来获取具有“Column.Field.AsString”的单元格的值,但是当我单击该行的任何列时,我想从第一列获取值。
【问题讨论】:
我需要在 Delphi 中获取一个 DBGrid 的选定单元格的值。
我不知道该怎么做。我试过 dbGrid 的 OnMouseMove
pt : TGridCoord;
...
pt:=dbGrid.MouseCoord(x, y);
[已编辑] 我可以使用 OnCellClick 来获取具有“Column.Field.AsString”的单元格的值,但是当我单击该行的任何列时,我想从第一列获取值。
【问题讨论】:
找到了。
dbGrid.Fields[0].AsString获取选中行第一列的值。
【讨论】:
procedure TForm1.DBGrid_DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumnEh; State: TGridDrawState);
const defaultCheckBoxFieldNumber = 1;
begin
if DBGrid.SelectedField.FieldNo = defaultCheckBoxFieldNumber then
....;
else
...;
end;
DBGrid.SelectedField.FieldNo 在TDBGrid 中的事件DrawColumnCell 上获取选定字段。
【讨论】:
我知道这已经晚了,不确定这是否是标题的意思。 但是如果它意味着获取选定的单元格值,那么试试这个:
procedure Form1.dbGrid1CellClick(Column: TColumn);
begin
ShowMessage(table1.Fields[Column.Index].AsString);
end;
确保
dbGrid1.Options.dbRowSelect := False;
【讨论】:
我认为最简单的方法是将 hidden DBText 连接到您的数据集,然后将 DBText 设置为显示您需要的字段,这样 DBText 将始终包含活动记录所需的值
【讨论】:
DBGrid 没有焦点,因此您无法确定选择了哪一行。而是查看链接的DataSet。 DataSet 有一个活动行。
【讨论】:
试试这个来获取 dbgrid 中选定单元格的值:
procedure Form1.dbGrid1CellClick(Column: TColumn);
begin
ShowMessage(table1.Fields[DBGrid1.SelectedIndex].AsString);
end;
【讨论】: