关于程序界面问题:(50分)

  • 主题发起人 主题发起人 lwz
  • 开始时间 开始时间
L

lwz

Unregistered / Unconfirmed
GUEST, unregistred user!
我发觉我的程序界面在经过一些设置之后,在各种分辩率下,如:
800*600,1024*768,1200*1024 改变窗口大小,各组件都能随着窗口的改变而
改变,不存在问题。但假使原系统属性为大字体,在修改字体为小字体重
新启动后,布局就变得很难看,即程序主窗口的右边、下边将剩下部分空地方,
反之:假使原系统属性为小字体,在修改字体为大字体重新启动后,靠右边和
下边部分组件,又变得不够显示。请教如何解决。
 
你不让它随系统设置改变不就行了?
把Form的Scaled设置为False
 
假设你在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 - 1do
wnto 0do
TFooClass(Controls).Font.Size :=
(NewFormWidth div OldFormWidth) *
TFooClass(Controls).Font.Size;
end;
 
你可以在程序运行时设置form的字体,其他控件的parentfont:=true;
 
同意hnlygtjj,我以前基本就是这么作的。
那时,在写《东方影都》
 
NewFormWidth 、 OldFormWidth
两个是什么变量,编译报错
 
哦,要你自己定义。
他的意思是新的窗口宽度和旧的窗口宽度。
New 和 Old
也就是分辨率改变后和分辨率改变前的。
 
后退
顶部