我在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应用程序并点击(点击)时,会发生的事情是'结果'写在先前选择的单元格中,然后在我单击的单元格后,单击被选中。
android之前点击
单击后
android
我不确定这是Firemonkey中的错误还是预期的行为。有办法克服这个问题吗?
答案 0 :(得分:1)
TGrid不是移动设备支持的控件,因此您应该避免使用它。最好的选择可能是具有自定义风格的TListBox。
答案 1 :(得分:0)
这可能是一个线程问题。但我不确定你是否使用最好的事件处理程序。如果您正在尝试更新正在选择的单元格,那么我建议您处理TStringGrid.OnSelChanged事件。更改单元格选择后会触发此事件。
请注意......不是通过鼠标点击(或手指点击)严格触发它。如果您将某种键盘连接到Android设备或桌面平台,则在使用箭头键和其他方式时也会触发。我想你明白了我的意思......但也许那就是你在寻找的东西。