如何通过单击表单上dbgrid中的单元格来获取所选单元格的内容?
请注意,Delphi的DBGrid是可识别数据的网格,与其他网格(例如Delphi的TStringGrid)相比,它的网格稍有不同, 使用“行”和“列”值不容易访问网格。
答案 0 :(得分:2)
最简单的方法是
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
S : String;
begin
S := DBGrid1.SelectedField.AsString;
Caption := S;
end;
它之所以有效,是因为TDBGrid的编码方式,相关的数据集是 同步到当前选定/单击的网格行。一般来说, 最容易从数据集的当前记录中获取值,但是您问过, 所以。尝试通过操纵单元格的值来避免更改当前记录的值 文字,因为DBGrid会与您抗争。
首先,我已经看到了更多的“围绕房屋”的方式来获取单元格文本,但是 我更喜欢KISS原则。
请注意,获取单元格文本的更可靠的方法包括 雷米·勒博(Remy Lebeau)的建议是使用Column.Field而不是SelectedField, 如下:
procedure TForm1.DBGrid1CellClick(Column: TColumn);
var
S : String;
AField : TField;
begin
AField := DBGrid1.SelectedField;
// OR AField := Column.Field;
// Note: If the DBGrid happens to have an unbound column (one with
// no TField assigned to it) the AField obtained mat be Nil if
// it is the unbound column which is clicked. So we should check for
// AField being Nil
if AField <> Nil then begin
S := AField.AsString;
Caption := S;
end;
end;