Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows 启动过程中的形状收缩_Windows_Delphi - Fatal编程技术网

Windows 启动过程中的形状收缩

Windows 启动过程中的形状收缩,windows,delphi,Windows,Delphi,几周前,一位用户报告说,我的程序的GUI正在收缩。 今天,我在多显示器模式下启动笔记本电脑,可以重现这个问题:在windows启动时,主窗体的大小是325x243像素,而不是648x700像素 我没有控制表单宽度/高度的单行代码。位置设置如下:MainForm.position:=poDefault。用户无法调整窗体的大小(BorderStyle:=bsSingle) 是什么导致了这种奇怪? 这是我第二次启动附加显示器的笔记本电脑。第一次一切都很好。是否与此多监视器配置有关 如果编译器不生成与窗

几周前,一位用户报告说,我的程序的GUI正在收缩。 今天,我在多显示器模式下启动笔记本电脑,可以重现这个问题:在windows启动时,主窗体的大小是325x243像素,而不是648x700像素

我没有控制表单宽度/高度的单行代码。位置设置如下:
MainForm.position:=poDefault
。用户无法调整窗体的大小(
BorderStyle:=bsSingle

是什么导致了这种奇怪? 这是我第二次启动附加显示器的笔记本电脑。第一次一切都很好。是否与此多监视器配置有关

如果编译器不生成与窗体大小相关的代码,那么它就像一些外部程序向我的程序中注入代码来更改其大小一样。这是有道理的。有些程序这样做是为了控制窗口如何分布在多个监视器上。我安装了其中一个,但它在Windows启动时未运行

位置设置如下:MainForm.position:=poDefault

这就是答案

表单显示在屏幕上的某个位置,其高度和宽度由操作系统决定

不过,还有其他选择,如

poDefaultPosOnly:表单以设计时创建的大小显示,但操作系统会选择其在屏幕上的位置

poscreencecenter:表单保持设计时留下的大小,但位于屏幕中央

还有很多其他的


此外,您可以避免修复该问题,而是添加一个解决方法:只需使用该程序运行多年来设置固定的表单大小即可!!!这样地。我不明白为什么操作系统决定更改我的表单的宽度/高度。当您可以通过对象检查器在DFM中设置它时,为什么要编写代码?谁知道为什么。。。但事实是,您的程序没有确保所需的条件,而是打赌其他人会这样做。它是易碎的。典型的情况是,这种方法工作了几年,然后一些蝴蝶拍打翅膀,它就不再工作了——通常你很难说触发的原因是什么:——)我只是想在程序启动时记录大小:)要记录它,你只需使用自己的超码方法
TMainForm.AfterConstruction
TMainForm.Loaded
并添加事件
tmaninform.OnShow
-这些钩子将告诉您所有的故事…该程序称为Windows。打开
MainForm.Position
值列表时,您看到了三个不同的默认值:默认大小、默认位置和默认大小和位置。我只想知道,看到你没有好奇他们之间有什么不同。