经过了一个上午折腾,终于搞定了,其实代码很简单!
与大家分享: const ScreenWidth: LongInt = 1024; {I designed my form in 800x600 mode.} ScreenHeight: LongInt = 768;
var
Form1: TForm1;implementation{$R *.dfm}
Function TForm1.BigToSmall():double;
begin
BigToSmall:=Screen.Width/ScreenWidth ;
end;
Function TForm1.SmallToBig():double;
begin
SmallToBig:=Screen.Width/ScreenWidth;
end;
Function TForm1.initWindowsPosition():boolean;
var
SizeDiv:double;
i:integer;
begin
if Screen.Width<= ScreenWidth then
begin
SizeDiv:= BigToSmall
end
else
begin
SizeDiv:= SmallToBig
end; //============================================
for i:=ComponentCount-1 downto 0 do
begin
if(Components[i] is TSpeedButton) then
begin
TSpeedButton(Components[i]).Top:=Round(SizeDiv*(TSpeedButton(Components[i]).Top));
TSpeedButton(Components[i]).left:=Round(SizeDiv*(TSpeedButton(Components[i]).left));
TSpeedButton(Components[i]).Width:=Round(SizeDiv*(TSpeedButton(Components[i]).Width));
TSpeedButton(Components[i]).Height:=Round(SizeDiv*(TSpeedButton(Components[i]).Height));
end;
If (Components[i] is TPanel) then
begin
TPanel(Components[i]).Top:=Round(SizeDiv*(TPanel(Components[i]).Top));
TPanel(Components[i]).left:=Round(SizeDiv*(TPanel(Components[i]).left));
TPanel(Components[i]).Width:=Round(SizeDiv*(TPanel(Components[i]).Width));
TPanel(Components[i]).Height:=Round(SizeDiv*(TPanel(Components[i]).Height));
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;begin
Form1.Width:=990;
Form1.Height:=724;
initWindowsPosition;
end;
与大家分享: const ScreenWidth: LongInt = 1024; {I designed my form in 800x600 mode.} ScreenHeight: LongInt = 768;
var
Form1: TForm1;implementation{$R *.dfm}
Function TForm1.BigToSmall():double;
begin
BigToSmall:=Screen.Width/ScreenWidth ;
end;
Function TForm1.SmallToBig():double;
begin
SmallToBig:=Screen.Width/ScreenWidth;
end;
Function TForm1.initWindowsPosition():boolean;
var
SizeDiv:double;
i:integer;
begin
if Screen.Width<= ScreenWidth then
begin
SizeDiv:= BigToSmall
end
else
begin
SizeDiv:= SmallToBig
end; //============================================
for i:=ComponentCount-1 downto 0 do
begin
if(Components[i] is TSpeedButton) then
begin
TSpeedButton(Components[i]).Top:=Round(SizeDiv*(TSpeedButton(Components[i]).Top));
TSpeedButton(Components[i]).left:=Round(SizeDiv*(TSpeedButton(Components[i]).left));
TSpeedButton(Components[i]).Width:=Round(SizeDiv*(TSpeedButton(Components[i]).Width));
TSpeedButton(Components[i]).Height:=Round(SizeDiv*(TSpeedButton(Components[i]).Height));
end;
If (Components[i] is TPanel) then
begin
TPanel(Components[i]).Top:=Round(SizeDiv*(TPanel(Components[i]).Top));
TPanel(Components[i]).left:=Round(SizeDiv*(TPanel(Components[i]).left));
TPanel(Components[i]).Width:=Round(SizeDiv*(TPanel(Components[i]).Width));
TPanel(Components[i]).Height:=Round(SizeDiv*(TPanel(Components[i]).Height));
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i: integer;begin
Form1.Width:=990;
Form1.Height:=724;
initWindowsPosition;
end;
问题是窗体上的控件能不能随着自动适应才是重要的吧?
什么方法
for i:=ComponentCount-1 downto 0 do
begin
if(Components[i] is TSpeedButton) then
begin
If (Components[i] is TPanel) then
begin
TPanel(Components[i]).Top:=Round(SizeDiv*(TPanel(Components[i]).Top));
TPanel(Components[i]).left:=Round(SizeDiv*(TPanel(Components[i]).left));
TPanel(Components[i]).Width:=Round(SizeDiv*(TPanel(Components[i]).Width));
TPanel(Components[i]).Height:=Round(SizeDiv*(TPanel(Components[i]).Height));
end;
end;
可以改成
for i:=ControlCount-1 downto 0 do
with Controls[i] do
begin
Top:=Round(SizeDiv*Top);
left:=Round(SizeDiv*left);
Width:=Round(SizeDiv*Width);
Height:=Round(SizeDiv*Height);
end;