我正在使用delphi
我有一个在多个商店运行的程序,但有些人的屏幕分辨率很低,有些人的屏幕分辨率很高.
当我在具有较低分辨率的屏幕上运行程序时,组件更靠右,并出现滚动条.无论分辨率如何,我希望我的组件完全出现在表单的中间.怎么样?
屏幕分辨率没有问题,除非你在谈论最大化的表格,所以我会假设.这意味着您在更改表单大小的中心对齐组件时遇到问题.
考虑到这方面的单一控制,那么解决方案相对容易:在OnResize事件处理程序中更改其位置:
procedure TForm1.FormResize(Sender: TObject);
begin
Control.Left := (ClientWidth - Control.Width) div 2;
Control.Top := (ClientHeight - Control.Height) div 2;
end;
Run Code Online (Sandbox Code Playgroud)
对于多控制情况,最简单的解决方案是将它们放置在单个容器(例如面板)上,并使用上述方法.但对于小形式,这可能导致容器太大导致显示窗体的滚动条(如表所示,可以通过AutoScroll窗体的属性来抑制),对于大的窗体大小,容器可能渲染得太小.
另一种解决方案是相对锚点解决方案:只需将Anchors属性设置[]为所有控件,并且所有控件都将保持其相对位置,无论表单大小如何.(这个技巧也适用于解决方案#1).
在这两种情况下,控件的大小和字体大小保持不变,这可能会或将扭曲布局.有多种可能的解决方案,但这超出了你的问题的范围,我认为这个答案.