0

我目前正在开发一个 iPad 应用程序,该应用程序使用具有动态创建内容的 TGrid。

但这给了我一些问题:出于某种原因,我无法释放和释放添加到 TGrid 的对象(再次删除它们)。在 Windows 中,FreeAndNil 解决了这个问题,但显然 FreeAndNil 在 Mac Simulator 或 iPad 设备上什么也没做。我能想出的唯一解决方案是将 RowCount 设置为适当的数量,但控件仍然存在并且被覆盖。

还有可能以某种方式禁用 TGrid 中的水平滚动,还是我需要为此实现自定义控件?

4

2 回答 2

1

在带有 ARC 的移动平台上,Free/FreeAndNil不会立即释放对象。请参阅ARC 下的 Free 和 DisposeOf 方法

而是使用DisposeOf(),它会立即调用析构函数。

DisposeOf 强制执行对象中的析构函数代码。新的 Delphi 移动编译器引入了一种通过调用 DisposeOf 实现的新 dispose 模式,即使存在对对象的未决引用的变量,它也会执行析构函数代码。调用 DisposeOf 方法后,对象处于一种特殊状态,即 Disposed 状态。这意味着如果再次调用 DisposeOf 或引用计数达到零(释放内存的时刻),则不会再次调用析构函数。

于 2014-07-08T10:28:05.727 回答
0

还有可能以某种方式禁用 TGrid 中的水平滚动...

当然,只需调整列的大小以适应网格的大小。或者,如果您不能这样做,请使用 TColumn.Visible 属性。如果可见列的宽度之和小于网格的宽度,您将没有滚动条。但是如果没有滚动条,您必须处理左右穿过网格的问题。

示例:有 5 列的网格,只有前 2 列可见,左右按钮。当按下右键时,最左侧可见的第 0 列不可见,第 2 列开始可见/现在第 1 列和第 2 列可见/。

于 2014-07-08T08:55:32.913 回答