为什么TJvFormStorage没有正确存储表单的位置?
我有一个叫的表格。如果程序终止,我使用JVCLTJvFormStorage来存储INI文件中的表单位置,表单大小和表单位置。但是,如果我试图在运行时拖动Windows控件到底部,直到它看起来只在任务栏附近的标题部分,那么我释放它并终止程序,不在该位置开始当程序再次启动时。为什么TJvFormStorage没有正确存储表单的位置?
我建议在TJvFormStorage
中使用StoredProps
和StoredValues
方法,但我并不真正了解如何使用该方法。
为什么TJvFormStorage没有正确存储表单的位置?有没有什么办法可以使用TJvFormStorage
正确存储表单的位置?
在此先感谢。
当窗体关闭时,实际上保存在INI文件中的是什么?
也许,也许,也许,JFS采取措施不偶尔地将表格放在显示之外,因此忽略了太过分极端的值。尝试跟踪INI加载顺序以查看它被忽略的条件。要缩小目标,请尝试发布并跟踪RestorePlacement
方法。
现在你已经引述ini文件,这似乎是正确的路线:NormPos = 135,734,623,1367 如此反复,呼叫添加到上述RestorePlacement
和线跟踪到它线。 你会看到INI文件没有被读取,或者值没有被应用。
很可能你会以JvJVCLUtils.pas
的procedure InternalRestoreFormPlacement
结束。继续追踪它以查看数据不是从INI中读取的,或者未被分配的位置和原因。
同样,即使你不能工作了,那么你有两个选择:
使用
StoredProps
特性(不是方法)很简单:双击JSF组件并添加窗体的左/顶部/宽度/高度属性保存列表,从保存列表中取消选择form position
。使用
StoredValues
属性(不是方法)很简单:双击p属性,然后添加一个字符串属性或4个整数属性。使用组件的OnRestorePlacement
和OnSavePlacement
事件将它们更新到表单的实际位置。
PS。采取安全措施,如果用户更改了显示,显示计数或显示分辨率,窗口将不会放置在屏幕之外。
PPS。 JvFormPlacement和JvFormStorage示例,您可以检查为d:\ DelphiProjects \ Libs \ JediVCL \ jvcl \ examples \ JvAppStorage \ *。*
PPPS。 JediVCL官方论坛是在http://newsportal.delphi-jedi.org/index.php
我需要保存最后的表单位置ini INI文件.. – Andromeda 2013-03-19 06:51:00
什么是实际保存在INI文件,当窗体关闭? PS:JVCL官方论坛位于http://newsportal.delphi-jedi.org/index.php – 2013-03-18 10:11:26
@ Arioch'The Yeah ..我一直在尝试'RxLib'中的'TFormStorage'来存储表单值,并且它正常工作。但是,我需要进入'JVCL',所以我尝试使用'JVCL'中的'TJvFormStorage',但它无法正常工作。它只是正确地存储表单的大小,而不是与表单的位置。 – Andromeda 2013-03-18 10:20:56
你还没有回答,实际上什么是保存在INI文件中,当表单关闭时?它是保存还是错误? – 2013-03-18 10:24:42