0

我正在尝试在 Delphi Firemonkey GUI 库中使用 TGrid,但在这里我的脸很糟糕。

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

在当前执行时,Grid 出现,带有三个单独的列。但是,除非您双击该单元格,否则不会将任何内容保存到字符串单元格并且不会出现复选框单元格。当您单击复选框单元格之外的位置时,复选框会消失。

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

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

我正在对发件人进行假设,例如在为其他控件创建事件时,您将self作为发件人的参数传入。ACol 和 ARow 非常明显。但是我迷失了 TValue 参数,因为我似乎无法弄清楚 TValue 到底是什么。Embarcadero 为 TValue 提供了这个文档,但它并没有告诉我很多有用的信息。

在这一点上,我只是想简单地让一个单元格显示它的值,并且当你点击离开时不会失去它的值。我知道我一定错过了一些东西,但我只是不知道去哪里找。感觉这个网站上的所有问题以及其他与 TGrid for Delphi 相关的问题都已经过时了(我已经看到它们一直延伸到 2003 年)。

4

1 回答 1

4

我最终找到了这个指南

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

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

OnGetValue 和 OnSetValue

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

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

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

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

于 2016-07-29T22:36:13.530 回答