• 0
Morfi

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

Вопросы

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

 

На форме есть 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.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 ответа на этот вопрос

  • 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 и т.д. по желанию.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
  • 0

Об этом варианте, я как-то не подумал. 

 

Благодарю за оперативный ответ.

Поделиться сообщением


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

  • Похожий контент

    • От SIARHEI RAHOUSKI
      Создал проект там куча компонентов. Но разворачивании формы на весь экран компоненты размер не меняют:
      Прочитал про свойства align Но как только я выставлю Group box например left другим right все сбивается в кучу и поправить это не могу. 
      Как настроить align ?

    • От SIARHEI RAHOUSKI
      Как сделать форму с компонентами под все разрешения?

    • От SIARHEI RAHOUSKI
      Как сделать мозаику (drag/drop) ? Получается есть 2 прямоугольника (которые надо перетаскивать)  и есть ещё 2 прямоугольника (которые должны принимать) и ещё есть кнопка проверки. При нажатии определяет правильно ли разместили прямоугольники.
    • От SIARHEI RAHOUSKI
      Здравствуйте, у меня возник вопрос Как базу данных подключить к TGrid? Я использую Delphi XE3 и База данных Accsess: ADOConnection + ADOQuery + DataSource. И вот как отобразить в TGrid Таблицу бд ?
    • От Антон Емельянов
      Приложение не даёт DeviceToken...  ,  (DeviceID есть)
      FDeviceToken := FPushService.DeviceTokenValue[TPushService.TDeviceTokenNames.DeviceToken];

      Тест пример реализован по статье нашего замечательного модератора
      http://blog.rzaripov.kz/2017/02/firebase-android-ios-2.html

      Используется:
      Компиляция SDK Android 5.1
      Среда-разработки Delphi XE 10.2 

      Пожалуйста запустите проект на своей версии Delphi..
      Посмотрите будет  сгенерирован ТОКЕН или нет.. 
      в случае удачи ,  напишите какая у вас версия Дельфи..

      Исходник-проекта:  https://drive.google.com/open?id=1mCPvYYd0tXBALt-J_ymVuzChj_TtztC0
      Только APK: https://drive.google.com/open?id=1x8q4RyVylpGOMjcQYjlvFxFBSQaYs7NL 


      Помогите люди добрые 
      За помощь и консультацию отблагодарю..
       

    • От AliZairov
      Привет. Я сделал новую версию YouTubeApi компоненты. Поддерживаемые VCL & FMX + Mobile.
      Никаких официальных YouTube Api компоненты. Только данные с парсинг. Пример доступен в архиве.
       
      Новый
      ===
      v1.4 - 25/02/2018
        + Устранение проблем
      YouTubeApiDelphi
    • От Niddarun
      На форме стоит tgrid при прокрутке есть заддержка. не большая но все равно не приянто. программа под windows. И еще при прокрутке идет нагрузка на процессор. 
    • От YPOK5C
      Добрый день ! Кто подсказки почему при компиляции приложения под Андроид через USB выдаёт такие ошибки, при этом все apk файлы создаётся все они рабочие.  Unable to crete process unable to install Failure install failed update incompatible

    • От gresaggr
      Добрый день.
      Как под FMX в ListView сделать подчеркивание Detail в рантайме?
      Пытался делать так:
      LV.ItemAppearanceObjects.ItemObjects.Detail.Font.Style := [TFontStyle.fsUnderline]
      но не срабатывает.
      P.S. Возможно это применить не ко всем строкам, а только к некоторым?
    • От GoldenEalge
      Всем привет, подскажите как организовать MultiSelect в grid
      Нашел статью ,но как понимаю она уже не очень актуальна
      Поиск по форуму тоже не дал результатов
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу