【问题标题】:Delphi Firemonkey TGrid usageDelphi Firemonkey TGrid 用法
【发布时间】:2016-07-29 21:17:55
【问题描述】:

我正在尝试在 Delphi Firemonkey GUI 库中使用 TGrid,但我在这里遇到了非常糟糕的情况。

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

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

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

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

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

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

【问题讨论】:

  • 在旁注中,我不确定您是如何看待这些可以追溯到 2003 年的,那时 Firemonkey 甚至都不存在。
  • 也许不是 Firemonkey,我只是看到与 TGrid 相关的东西可以追溯到很久以前,当我尝试寻找那些人提到的方法时,它们不再存在了。
  • this question 的答案是显示如何使用 TGrid 的 Delphi 代码。
  • 我遇到了那个答案,它很模糊。我发现monkeystyler.com/guide/TGrid 有点用处。

标签: delphi firemonkey tgrid


【解决方案1】:

我最终找到了这个this guide

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

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

OnGetValue 和 OnSetValue

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

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

希望这对将来的某人有所帮助,我花了一段时间才发现 Embarcadero 没有费心告诉你的事情,或者至少给你指了个地方看。

按照指南中的说明类似地定义这两种方法。

【讨论】:

    猜你喜欢
    • 2011-12-10
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多