1

我有一个名为fmTest. 如果程序终止,我使用JVCL TJvFormStorage将表单位置、表单大小和表单位置存储在 INI 文件中。

但是,如果我尝试在运行时将 windows 控件拖到底部,直到它只在任务栏附近看到标题部分,然后我释放它并终止程序,程序fmTest启动时不会在该位置启动再次。

有人建议我使用StoredPropsandStoredValues方法,TJvFormStorage但我真的不明白如何使用这些方法。

为什么 TJvFormStorage 不能正确存储表单位置?有什么方法可以正确存储表单位置TJvFormStorage吗?

提前致谢。

4

1 回答 1

0

当表单关闭时,实际保存在 INI 文件中的是什么?

也许,只是也许,JFS 偶尔会采取措施不将表格带到显示之外,从而忽略太极端的值。尝试跟踪 INI 加载序列以查看它在哪种情况下被忽略。要缩小目标,请尝试发布和跟踪RestorePlacement方法。

现在您已经引用了 ini 文件,这似乎是正确的行:NormPos=135,734,623,1367 因此,再次添加对上述的调用RestorePlacement并逐行跟踪它。您会看到未读取 INI 文件或未应用值。

很可能你会procedure InternalRestoreFormPlacementJvJVCLUtils.pas. 继续跟踪它以查看未从 INI 读取数据或未能分配数据的位置和原因。

同样,即使您无法解决,您还有两个选择:

  1. 使用StoredProps属性(非方法)很简单:双击 JSF 组件,将 Form 的 Left/Top/Width/Height 属性添加到保存列表中,form position然后从保存列表中取消选中。

  2. 使用StoredValues属性(不是方法)很简单:双击pproperty,然后添加一个字符串属性或4个整数属性。使用组件OnRestorePlacementOnSavePlacement事件将它们从/更新到表单的实际位置。

PS。采取安全措施,如果用户更改显示、显示计数或显示分辨率,则窗口不会位于屏幕之外。

聚苯乙烯。JvFormPlacement 和 JvFormStorage 示例可以检查为 d:\DelphiProjects\Libs\JediVCL\jvcl\examples\JvAppStorage\*.*

购买力平价。JediVCL 官方论坛在http://newsportal.delphi-jedi.org/index.php

于 2013-03-18T10:22:25.777 回答