Delphi Firemonkey TGrid 使用

Zul*_*kas 1 delphi tgrid firemonkey

我正在尝试使用 Delphi Firemonkey GUI 库中的 TGrid,但我在这里摔得很厉害。

此时,我的表单中有一个 TGrid,其中包含三个单元格、一个字符串单元格和 2 个复选框单元格。

在当前执行时,将显示网格,其中包含三个独立的列。但是,不会将任何内容保存到字符串单元格中,并且除非双击该单元格,否则复选框单元格不会出现。当您单击远离复选框单元格时,复选框就会消失。

我认为我在这里错过了一些关键步骤。我找到了 TGrid 类的函数,OnGetValue并且OnSetValue. 我认为这些一定与我的问题有关,但问题是我完全不知道如何使用它们。

每个要求一个(Sender: TObject; const ACol: Integer; const ARow: Integer; const Value: TValue)

我正在对发送者做出假设,就像为其他控件创建事件时一样,您将self作为发送者的参数传入。AColl 和 ARow 非常明显。但我迷失了 TValue 参数,因为我似乎无法弄清楚 TValue 到底是什么。Embarcadero 为 TValue 提供了此文档,但它并没有告诉我很多有用的信息。

此时,我只是想让一个单元格显示其值,并且当您单击时不会丢失其值。我知道我一定错过了一些东西,但我就是不知道去哪里寻找。感觉这个网站上的所有问题以及其他与 TGrid for Delphi 有关的问题都已经过时了(我看到它们一直可以追溯到 2003 年)。

Zul*_*kas 6

我最终找到了这个指南

长话短说,数据并不保存在 TGrid 中(这对我来说似乎很糟糕,但我现在可以理解为什么)。

为了显示数据,您需要 TGrid 对象本身(而不是列)的两个事件:

OnGetValue 和 OnSetValue

OnGetValue 请求数据结构中的数据,因此需要一行和一列来定位结构中的数据。它会为您将其放入 GUI 中。

OnSetValue 则相反,它通过行和列从 GUI 向您提供结构数据。

希望这可以帮助将来的人,我花了一段时间才找出 Embarcadero 没有费心告诉你的东西,或者至少指出你在某个地方可以看的东西。

定义这两种方法的方式与指南中的解释方式类似。