Использование 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 не удосужился рассказать вам, или указать вам, по крайней мере, куда-то посмотреть.
Определите эти два метода аналогично тому, как описано в руководстве.