0

我对 Android 上的 Delphi Firemonkey TStringGrid 有一个非常奇怪的问题。看起来 TStringGrid 上的事件在 Windows 和 android 平台上的触发方式不同。例如:在 windows firemonkey 应用程序中,我有一个带有几列的字符串网格。TStringGrid 设置为只读。OnClick 事件我有以下代码:

TStringGrid(Sender).Cells[TStringGrid(Sender).ColumnIndex,TStringGrid(Sender).Selected] := 'result';

Android 应用程序具有完全相同的代码 OnClick 事件

TStringGrid(Sender).Cells[TStringGrid(Sender).ColumnIndex, TStringGrid(Sender).Selected] := 'result';

当我运行 Windows 应用程序并单击字符串网格单元格时,它会被选中,然后在单元格中写入“结果”。

点击前的窗口

在此处输入图像描述

点击后的窗口

在此处输入图像描述

当我运行android应用程序并单击(点击)时,会发生“结果”写入先前选择的单元格,然后在我单击的那个单元格中被选中。

点击前的安卓

在此处输入图像描述

点击后的安卓

在此处输入图像描述

我不确定这是 Firemonkey 中的错误还是预期的行为。有没有办法克服这个问题?

4

2 回答 2

1

TGrid 不是移动设备上受支持的控件,因此您应该避免使用它。最好的选择可能是具有自定义样式的 TListBox。

于 2014-04-12T16:58:40.087 回答
0

这可能是线程问题。但我不太确定您使用的是最好的事件处理程序。如果您尝试更新正在选择的单元格,那么我建议您处理 TStringGrid.OnSelChanged 事件。此事件在单元格选择更改后触发。

但请注意......它并不是严格通过鼠标点击(或手指点击)触发的。如果您在 Android 设备或桌面平台上连接了某种键盘,当您使用箭头键和其他方式时,它也会触发。我想你明白我的意思......但也许这正是你正在寻找的。

于 2014-04-10T09:02:29.813 回答