Перейти к содержанию
Fire Monkey от А до Я
  • 0

[TGrid] Как получить значение ячейки при использовании LiveBinding?


Morfi

Вопрос

Всем доброго времени суток.

 

На форме есть TGrid:

 

post-94-0-17845900-1428776272_thumb.jpg

 

Данные к нему прикручены через LiveBinding от TFDQuery:

 

post-94-0-97738900-1428776318.jpg

 

Как мне узнать значение ячейки первого столбца, активной строки?

 

post-94-0-52536000-1428776712.jpg

 

Пробовал реализовать через событие Grid1SelectCell:

procedure TForm5.Grid1SelectCell(Sender: TObject; const ACol, ARow: Integer;
  var CanSelect: Boolean);
var
 CellStr: string; //Значение ячейки первого столбца.
begin
 CellStr := TTextCell(Grid1.Columns[0].Controls.Items[ARow]).Text;
end;

Вот этот код:

TTextCell(Grid1.Columns[0].Controls.Items[ARow]).Text;

я вычитал здесь: http://fire-monkey.ru/topic/120-tgrid-kak-ustanovit-tekst-v-iacheike-tcheckcolumn-delphi-xe-4/

Однако, при его выполнение срабатывает исключение: "argument out of range".

 

Подскажите, как мне решить эту задачу?

 

Версия среды: XE7 FMX.

Ссылка на комментарий

Рекомендуемые сообщения

  • 0
  • Администраторы

Спрошу завтра у автора. Но пока я вижу только такой "красивый" вариант:

type
  TOpenGrid = class(TGrid);

procedure TForm3.Grid1SelectCell(Sender: TObject; const ACol, ARow: Integer; var CanSelect: Boolean);
begin
  TOpenGrid(Grid1).CallbackGetValue(ACol, ARow,
    procedure(AValue: TValue)
    begin
       // AValue - выбранное значение
    end);
end;
Ссылка на комментарий
  • 0

С того момента, как "стал рассматривать" TGrid непосредственно как компонент отображения существующих данных, работать с ним стало проще и приятнее. В похожих ситуация работаю непосредственно с данными (выборкой). То, что FDQuery и Grid связаны через LiveBinding, значения не имеет:

    FDQuery1.RecNo := Grid1.Selected+1;
    ... := FDQuery1.FieldByName['id'].AsInteger;
    //или по порядковому номеру:
    ... := FDQuery1.Fields.Fields[0].AsInteger; 
    //или тип Variant: 
    ... := FDQuery1['id'] 
    //и т.д.

В зависимости от необходимого способа реакции код можно подвесить на onClick, onMouseMove и т.д. по желанию.

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
×
×
  • Создать...