有關螢幕解析度的問題 |
答題得分者是:Justmade
|
yabula
初階會員 發表:47 回覆:117 積分:42 註冊:2002-10-02 發送簡訊給我 |
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
你可試試 Form1.ScaleBy(75/100); //即 75% ,改成你喜歡的比率
會將所有可變大小的 WinControl 的大小變為原本的 75%
不過由於 Fonts 大小等不會變(只改變Control 大小) 所以不是完全沒問題。你可以順便改一改 Form 的 Fonts 使所有用 Parant Fonts 的的一起把 Fonts 變小。
這樣做結果不會很好看但總比有些部份看不到好。
另外的做法就是將主要的 Panel 會變成 ScrollBox 讓 800X600 的用家可以 Scroll,但若你很多 Panel 用 alClient 的話也是很難做好。 要讓以800X600的為藍圖的程式在 1024 跑易,反之則很難,所以現時來說若你想大部份人能用便應以 800X600 為基本藍圖。
|
yabula
初階會員 發表:47 回覆:117 積分:42 註冊:2002-10-02 發送簡訊給我 |
小弟使用了ScrollBox 的方式來處理,因為所有元件都是動態create出來的,
我在form creat 後,所有元件產生了,利用一個button來處理,結果都出現
ScrollBox has no parent window 錯誤 procedure TForm1.Button1Click(Sender: TObject);
var
i,ScrollBoxCount:integer;
CreateScrollBox:boolean;
begin
CreateScrollBox:=false;
if (screen.Width<1024) and (screen.Height<768) then
CreateScrollBox:=true; if CreateScrollBox then
begin
ScrollBoxCount:=0;
for i:=0 to ComponentCount-1 do
begin
if Components[i] is TWinControl then
if Components[i] is TTabSheet then
begin
with TScrollBox.Create(self) do
begin
inc(ScrollBoxCount);
name:='scrollbox' inttostr(ScrollBoxCount);
parent:=TTabSheet(findcomponent('tabsheet' inttostr(ScrollBoxCount)));
Align:=AlClient;
end; end;
end;
for i:=0 to ComponentCount-1 do
begin
if Components[i] is TWinControl then
if TControl(Components[i]).parent is TTabSheet
and ((Components[i] is TDBEdit)
or (Components[i] is TLabel)
or (Components[i] is TButton)
or (Components[i] is TEdit)
or (Components[i] is TDBCheckBox)
or (Components[i] is TDBRadioGroup)
or (Components[i] is TDBMemo) )then
begin
TControl(Components[i]).parent:=TScrollBox(FindComponent('scrollbox' (copy(TControl(Components[i]).parent.name,9,length(TControl(Components[i]).parent.name)-8))));
end;
end;
end; end; 發表人 - yabula 於 2003/04/30 14:38:23
|
Justmade
版主 發表:94 回覆:1934 積分:2030 註冊:2003-03-12 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |