windows – 如何处理从Delphi 6和WinXP到Delphi 2007和Vista / W
我有一个用Delphi 6编写的应用程序,并在
Windows XP上编译.通常我会在控件和表单边缘之间留出8px的空闲内容.
当这个应用程序在Vista或Win 7上运行时,这个差距更小或根本不存在.我认为这可能是因为这些版本的Windows具有较厚的表单边框. 现在我将应用程序移动到Delphi 2007.在表单设计器中,表单已经失去了底部和右侧的差距. 我应该怎么处理这个?我有数百种表格,不想改变它们.此外,我们的大多数用户在Win XP上运行应用程序,因此我不想让它在XP中看起来很糟糕.
简短版本:将所有表单更改为AutoScroll = False
问题是表单的AutoScroll属性,以及它如何影响DFM中存储的表单大小. 如果AutoScroll为true(默认值),DFM将存储宽度和高度: object Form1: TForm1 Left = 192 Top = 114 Width = 544 Height = 375 Caption = 'Form1' ... 如果AutoScroll为false(首选设置),DFM将存储ClientWidth和ClientHeight: object frmSplash: TfrmSplash Left = 192 Top = 114 ClientWidth = 536 ClientHeight = 348 Caption = 'Form1' 存储高度的问题是当用户的标题栏与开发机器的大小不同时发生的问题,例如, >您在Windows 2000上开发,程序在Windows XP上运行 Windows 2000有一个4像素的边框,带有23像素的标题栏. DFM存储高度为375,这为表单客户区留下348px. 在Windows XP上运行相同的程序,它具有更高的(28像素)标题栏. DFM存储高度为375像素,这为客户区留下了343px. 你的表格“缩短了5个像素”. 您需要通过关闭AutoScroll强制Delphi将ClientWidth和ClientHeight存储在DFM中. 现在,当您在Windows XP上创建348px高的表单时,它将在客户端区域中继续保留348像素 – 但是需要超高才能拥有标题栏. 如果我的帮助库代码找到任何错误地将AutoScroll设置为true的表单,我甚至会有一个OutputDebugString和一个断点触发器. 编辑:因为我试图成为一个优秀的开发人员,我使我的表格尊重用户的字体偏好.在我的所有表单的OnCreate期间,我调用StandardizeForm(Self)函数: >缩放表单以匹配用户的默认字体大小 你可以做类似的事情.是的,你必须添加: procedure TCustomerEditForm.FormCreat(Sender: TObject); begin StandardizeForm(Self); //Pay your taxes! ... end; 但这对我来说是值得的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 打开一个文件夹,并使用WPF突出显示一个特定的文件
- Windows可以处理跨越32位/ 64位边界的继承吗?
- Windows相当于linux cksum命令
- windows-server-2012-r2 – 在启用了配额的故障转移群集中添
- group-policy – 如何在GPO中禁用“重新启动计算机以完成安
- windows-7 – Windows经典设计有扁平元素
- windows-server-2008 – 如何验证还原?
- Windows – 打开.bat文件脚本后如何保持cmd运行
- 如何在Windows Phone中显示HTML内容?
- filesystems – 没有为NTFS使用512字节集群的任何理由?