Использование Delphi Firemonkey TGrid

Я пытаюсь использовать TGrid в библиотеке графического интерфейса Delphi Firemonkey, и я очень сильно падаю здесь.

На данный момент в моей форме есть TGrid, который состоит из трех ячеек, строковой ячейки и двух ячеек с флажками.

При текущем выполнении Grid обнаруживается с тремя отдельными столбцами. Однако в строковую ячейку ничего не сохраняется, и ячейки флажков не появляются, пока вы дважды не щелкнете по ячейке. Если вы щелкнете по ячейке с флажком, флажок исчезнет.

Я полагаю, что я здесь упускаю какой-то важный шаг. Я нашел функцию для класса TGrid, OnGetValue а также OnSetValue, Я полагаю, что это как-то связано с моей проблемой, но проблема в том, что я понятия не имею, как их использовать.

Каждый призывает к (Sender: TObject; const ACol: Integer; const ARow: Integer; const Value: TValue)

Я делаю предположение с отправителем, как при создании событий для других элементов управления, вы передаете self как параметр отправителя. ACol и ARow довольно очевидны. Но я заблудился с параметром TValue, так как не могу понять, какого черта это TValue. Embarcadero предоставляет эту документацию для TValue, но она не говорит мне много полезного.

На данный момент я просто пытаюсь заставить ячейку отображать ее значение, а не терять ее при нажатии. Я знаю, что я что-то упускаю, но я просто не знаю, где искать. Похоже, что все вопросы на этом сайте и другие, связанные с TGrid для Delphi, сильно устарели (я видел, что они простираются вплоть до 2003 года).

1 ответ

В конце концов я нашел это руководство.

Короче говоря, данные НЕ хранятся в TGrid (что кажется мне ужасным задом наперед, но теперь я понимаю, почему).

Чтобы получить данные для отображения, вам нужно два события для самого объекта TGrid (не столбцы):

OnGetValue и OnSetValue

OnGetValue запрашивает данные из структуры данных, поэтому для нахождения данных в вашей структуре требуются строка и столбец. Это помещает это в GUI для вас.

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

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

Определите эти два метода аналогично тому, как описано в руководстве.

Другие вопросы по тегам