我正在研究一个使用TGrid和动态创建内容的iPad应用程序。
但它给了我一些问题: 出于某种原因,我无法释放并释放添加到TGrid的对象(再次删除它们)。在Windows中,FreeAndNil解决了这个问题,但在Mac模拟器或iPad设备上,FreeAndNil无需任何操作。我能想出的唯一解决方案是将RowCount设置为适当的数量,但控件仍然存在并被覆盖。
还可以以某种方式禁用TGrid中的水平滚动,还是需要为此实现自定义控件?
答案 0 :(得分:1)
在使用ARC的移动平台上,Free/FreeAndNil
不会立即释放对象。
请参阅The Free and DisposeOf methods under ARC。
而是使用DisposeOf(),它会立即调用析构函数。
DisposeOf强制在对象中执行析构函数代码。 新的Delphi移动编译器引入了一个通过调用DisposeOf实现的新的dispose模式,即使存在对该对象的挂起引用的变量,它也会执行析构函数代码。调用DisposeOf方法后,对象将处于特殊状态,即Disposed状态。这意味着如果再次调用DisposeOf,或者引用计数达到零(释放内存的时刻),则不会再次调用析构函数。
答案 1 :(得分:0)
也可以以某种方式禁用TGrid中的水平滚动...
当然,只需调整列的大小以适应网格的大小。或者,如果您不能这样做,请使用TColumn.Visible属性。如果可见列的总和' witdh小于网格的宽度,你没有滚动条。但是没有滚动条,你必须处理左右穿过网格。
示例:包含5列的网格,只有前2个可见,左侧和右侧按钮。当按下右键时,最左边的可见列0变为不可见,列2开始可见/现在列1和2可见/。