cja*_*cja 6 forms windows delphi size border
我有一个用Delphi 6编写的应用程序,并在Windows XP上编译.通常我会在控件和表单边缘之间留出8px的空闲内容.
当这个应用程序在Vista或Win 7上运行时,这个差距更小或根本不存在.我认为这可能是因为这些版本的Windows具有较厚的表单边框.
现在我将应用程序移动到Delphi 2007.在表单设计器中,表单已经失去了底部和右侧的差距.
我应该怎么处理这个?我有数百种表格,不想改变它们.此外,我们的大多数用户在Win XP上运行应用程序,因此我不想让它在XP中看起来很糟糕.
Ian*_*oyd 11
简短版本:将所有表格更改为 AutoScroll = False
问题是表单的AutoScroll
属性,以及它如何影响DFM中存储的表单大小.
如果AutoScroll
为true(默认值),DFM将存储Width
并且Height
:
object Form1: TForm1
Left = 192
Top = 114
Width = 544
Height = 375
Caption = 'Form1'
...
Run Code Online (Sandbox Code Playgroud)
如果AutoScroll
为false(首选设置),DFM将存储ClientWidth
并且ClientHeight
:
object frmSplash: TfrmSplash
Left = 192
Top = 114
ClientWidth = 536
ClientHeight = 348
Caption = 'Form1'
Run Code Online (Sandbox Code Playgroud)
存储的问题Height
是当用户的标题栏与开发机器的大小不同时发生的情况,例如
Windows 2000有一个4像素的边框,带有23像素的标题栏.使用存储Height
375 的DFM ,这为表单客户区留下了348px.
在Windows XP上运行相同的程序,它具有更高的(28像素)标题栏.DFM存储Height
375像素,这为客户区留下了343px.
你的表格"缩短了5个像素".
您需要强制Delphi 通过关闭来存储ClientWidth
和存储ClientHeight
在DFM中AutoScroll
.
现在,当您在Windows XP上创建348px高的表单时,它将在客户端区域中继续保留348像素 - 但是需要超高才能拥有标题栏.
OutputDebugString
如果我的帮助库代码找到任何错误AutoScroll
设置为true的表单,我甚至会有一个和一个断点触发器.
编辑:因为我试图成为一个优秀的开发人员,我使我的表格尊重用户的字体偏好.在OnCreate
我的所有表单中,我调用一个StandardizeForm(Self)
函数:
Scaled
AutoScroll
true 则发出ODS和断点(并将其设置为false)ShowHint
为false 则发出ODS和断点(并将其打开)你可以做类似的事情.是的,你必须添加:
procedure TCustomerEditForm.FormCreat(Sender: TObject);
begin
StandardizeForm(Self); //Pay your taxes!
...
end;
Run Code Online (Sandbox Code Playgroud)
但这对我来说是值得的.
归档时间: |
|
查看次数: |
4577 次 |
最近记录: |