DBGrid получить выбранную ячейку

Мне нужно получить значение выбранной ячейки DBGrid в Delphi.

Я понятия не имею, как это сделать. Я попробовал OnMouseMove от dbGrid.

pt : TGridCoord;
...
pt:=dbGrid.MouseCoord(x, y);

[Отредактировано] Я могу использовать OnCellClick, чтобы получить значение ячейки с «Column.Field.AsString», но я хочу получить значение из первого столбца, когда я нажимаю на любой столбец этой строки.


person Remus Rigo    schedule 30.11.2009    source источник


Ответы (6)


Нашел.

dbGrid.Fields[0].AsString получает значение первого столбца выбранной строки.

person Remus Rigo    schedule 30.11.2009
comment
Я искал его около часа и не мог найти. Спасибо! - person Soon Santos; 10.12.2018

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 получает выбранное поле в событии DrawColumnCell в TDBGrid.

person user757239    schedule 17.05.2011

Я знаю, что это поздно, и не уверен, что это то, что означает название. Но если это означает получить выбранное значение ячейки, попробуйте следующее:

procedure Form1.dbGrid1CellClick(Column: TColumn);
begin
  ShowMessage(table1.Fields[Column.Index].AsString);
end;

Убедитесь, что
dbGrid1.Options.dbRowSelect := False;

person Daniel Yahdav    schedule 30.08.2017

я думаю, что самый простой способ - подключить скрытый DBText к вашему набору данных, а затем настроить DBText для отображения того поля, которое вам нужно, таким образом, DBText всегда будет содержать необходимое значение активной записи.

person Alin Sfetcu    schedule 01.12.2009

DBGrid не имеет фокуса, и поэтому вы не можете узнать, какая строка выбрана. Вместо этого посмотрите на связанный файл DataSet. DataSet имеет активную строку.

person Birger    schedule 30.11.2009

попробуйте это, чтобы получить значение выбранной ячейки в dbgrid:

procedure Form1.dbGrid1CellClick(Column: TColumn); begin ShowMessage(table1.Fields[DBGrid1.SelectedIndex].AsString); end;

person Asad Alamdar    schedule 13.09.2017