【问题标题】:Delphi XE4 TGrid how do I get the value of a cell in the row I double clicked?Delphi XE4 TGrid 如何获取双击行中单元格的值?
【发布时间】:2013-06-29 19:22:57
【问题描述】:

我正在使用 TGrid 类在 XE4 中编写 FMX 程序。我想从我在 TGrid 中双击的行的特定列中提取值。网格加载了数据库表中的字符串(使用实时绑定)。

例如,假设 TGrid 显示 5rows x 10columns,我对第 9 列中的值感兴趣。如果我双击第 2 行中的任意位置,我想要 cell(row=2, col=9) 的值放入 TEdit 中。

我可能会简单地看待事物,但在 TGrid 中我没有找到任何可以根据其 (row,col) 获取单元格值的函数。

【问题讨论】:

    标签: delphi firemonkey


    【解决方案1】:

    您可以使用受保护的方法GetValue

    function GetValue(Col, Row: Integer): TValue; virtual;
    

    然后使用ColumnIndexSelected 属性可以获得当前的列和行。

    试试这个

    type 
      TGridClass=class(TGrid);
    
    procedure TForm1.Grid1DblClick(Sender: TObject);
    begin
      ShowMessage(TGridClass(Sender).GetValue(TGrid(Sender).ColumnIndex, TGrid(Sender).Selected).ToString);
    end;
    

    【讨论】:

    • +1。我在问题发布后不久就阅读了这个问题,并认为“罗德里戈会给出答案,但我还是会看看。”并开始试图弄清楚。我意识到TGrid 的 FMX 实现很糟糕(它是一个 grid - 访问特定 cell 的需求应该很清楚,而且不应该那么难这样做,TStringColumn 应该可以让您轻松访问它在特定单元格中保存的 字符串)。
    • 谢谢。如果绑定向导已经创建了 TGrid 怎么办?我遵循了一些关于如何使用 dbExpress 的说明,这就是我最终使用 TGrid 的方式。我的第一个错误可能是选择了 FMX 而不是 VCL。有没有其他方法可以深入 TGrid 并获取特定单元格中的值?我的跨平台编码梦想开始有了噩梦:)
    【解决方案2】:

    或者你可以使用类似的东西

    Grid1.Columns[Col].Controls[Row]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-31
      • 2022-06-17
      • 2016-08-23
      • 1970-01-01
      • 1970-01-01
      • 2022-12-03
      相关资源
      最近更新 更多