一个初学者的求助,界面布局问题!谢谢!(50分)

  • 主题发起人 cl_xiao0711
  • 开始时间
C

cl_xiao0711

Unregistered / Unconfirmed
GUEST, unregistred user!
为什么我设计的窗口界面,在屏幕分辨率不同时,只有窗口可以最大化,其它的控件老是集中在屏幕的一角,如何解决望赐教!
 
控件不会随窗体最大化自动改变大小,需要代码来实现
 
使用相对位置,自己去算!
 
使用panel进行控件分组,然后只需要编写panel的resize事件就ok了
 
假如你在800*600的分辨率下的form,第一步:
inplementation
const
ScreenWidth: LongInt = 800; {I designed my form in 800x600 mode.}
ScreenHeight: LongInt = 600;

{$R *.DFM}

procedure TForm1.FormCreate(Sender: TObject);
begin
scaled := true;
if (screen.width <> ScreenWidth) then
begin
height := longint(height) * longint(screen.height) div ScreenHeight;
width := longint(width) * longint(screen.width) div ScreenWidth;
scaleBy(screen.width, ScreenWidth);
end;
end;

下一步,要每個子控制的字体改變到合适的大小:
type
TFooClass = class(TControl); { needed to get at protected }
{ font property }

var
i: integer;
begin
for i := ControlCount - 1 downto 0 do
TFooClass(Controls).Font.Size :=
(NewFormWidth div OldFormWidth) *
TFooClass(Controls).Font.Size;
end;
[:D]
 
我想并不是想控件也改变大小吧,只是对齐的问题吧。谁见过把一个窗口最大化后按钮也变大的?
如果楼主是想改变控件的大小的话,以上几位可以帮助你实现,如果只是解决“其它的控件老是集中在屏幕的一角”的问题的话,请看我的:
设置控件的align属性:靠左、靠右、扩展、等等
设置控件的anchors属性:左边界对齐窗体的左边界、右边界对齐窗体的右边界、等等
这两个属性配合使用可以得到你想要的布局。
 
有以下几个方法:
1、设置Align属性为alClient;
2、正确设置部分控件,如Button的Anchor属性;
3、当窗体尺寸改变时,在OnResize事件中重绘部分控件;
4、使用合适的字体,呵呵
 
顶部