怎麼讓程式畫面隨著螢幕大小變動? |
尚未結案
|
waterfat
一般會員 ![]() ![]() 發表:22 回覆:16 積分:7 註冊:2003-11-10 發送簡訊給我 |
|
aquarius
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
|
waterfat
一般會員 ![]() ![]() 發表:22 回覆:16 積分:7 註冊:2003-11-10 發送簡訊給我 |
|
aquarius
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
|
dllee
站務副站長 ![]() ![]() ![]() ![]() ![]() ![]() 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
對不起,插個話,可不可以說明一下 VB 是如何設定的呢?
... 如果 VB 都有提供的話,按理說 Delphi 應該也會提供才是,如果 Delphi 有提供的話,BCB 就有可能提供... 沒空更新的網頁...
http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://dllee.adsldns.org 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com |
waterfat
一般會員 ![]() ![]() 發表:22 回覆:16 積分:7 註冊:2003-11-10 發送簡訊給我 |
|
aquarius
資深會員 ![]() ![]() ![]() ![]() ![]() 發表:3 回覆:347 積分:330 註冊:2003-05-21 發送簡訊給我 |
|
hornacek
一般會員 ![]() ![]() 發表:29 回覆:76 積分:21 註冊:2004-02-02 發送簡訊給我 |
|
jimmy_and_you
初階會員 ![]() ![]() 發表:20 回覆:74 積分:33 註冊:2003-05-12 發送簡訊給我 |
你可以試試Anchors這個屬性,所有物件把akLeft,akTop,akRight,akBottom都調成調成false,在form ReSize時全部重新計算大小及位置下面是我的範例程式碼:
int OldHeight; int OldWidth; int CTop[100]; int CLeft[100]; int CHeight[100]; int CWidth[100]; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { OldHeight = Height; OldWidth = Width; TWinControl *TheFirst=NULL,*TheFind; TheFirst = FindControl(Handle); TheFirst = FindNextControl(TheFirst, true, false, false); TheFind = TheFirst; int i=0; while(1) { CTop[i] = TheFind->Top; CLeft[i] = TheFind->Left; CHeight[i] = TheFind->Height; CWidth[i] = TheFind->Width; i ; if( (TheFind=FindNextControl(TheFind, true, false, false))==TheFirst ) break; } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormResize(TObject *Sender) { TWinControl *TheFirst=NULL,*TheFind; TheFirst = FindControl(Handle); TheFirst = FindNextControl(TheFirst, true, false, false); TheFind = TheFirst; int i=0; while(1) { TheFind->Top = CTop[i] * Height / OldHeight; TheFind->Left = CLeft[i] * Width / OldWidth; TheFind->Height = CHeight[i] * Height / OldHeight; TheFind->Width = CWidth[i] * Width / OldWidth; i ; if( (TheFind=FindNextControl(TheFind, true, false, false))==TheFirst ) break; } } |
yashan27
一般會員 ![]() ![]() 發表:0 回覆:1 積分:0 註冊:2005-08-09 發送簡訊給我 |
引言: 你可以試試Anchors這個屬性,所有物件把akLeft,akTop,akRight,akBottom都調成調成false,在form ReSize時全部重新計算大小及位置下面是我的範例程式碼:我試著用大大的方法 但是出現下列錯誤 [C Error] main_Unit1.cpp(42): E2316 '_fastcall TForm1::FormResize(TObject *)' is not a member of 'TForm1' 已解決int OldHeight; int OldWidth; int CTop[100]; int CLeft[100]; int CHeight[100]; int CWidth[100]; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { OldHeight = Height; OldWidth = Width; TWinControl *TheFirst=NULL,*TheFind; TheFirst = FindControl(Handle); TheFirst = FindNextControl(TheFirst, true, false, false); TheFind = TheFirst; int i=0; while(1) { CTop[i] = TheFind->Top; CLeft[i] = TheFind->Left; CHeight[i] = TheFind->Height; CWidth[i] = TheFind->Width; i ; if( (TheFind=FindNextControl(TheFind, true, false, false))==TheFirst ) break; } } //--------------------------------------------------------------------------- void __fastcall TForm1::FormResize(TObject *Sender) { TWinControl *TheFirst=NULL,*TheFind; TheFirst = FindControl(Handle); TheFirst = FindNextControl(TheFirst, true, false, false); TheFind = TheFirst; int i=0; while(1) { TheFind->Top = CTop[i] * Height / OldHeight; TheFind->Left = CLeft[i] * Width / OldWidth; TheFind->Height = CHeight[i] * Height / OldHeight; TheFind->Width = CWidth[i] * Width / OldWidth; i ; if( (TheFind=FindNextControl(TheFind, true, false, false))==TheFirst ) break; } } |
jow
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
我的做法是自己改寫一個元件(自TCustomControl下來),這個元件可以指定其邏 輯點數(float ScaleWidth, ScaleHeight),所有顯示元件以這個元件為Parent, 然後在此 Parent 元件Resize的時候引發一個Event,然後就可以在相對的 EventHandler內,用 (Control).BoundsRect = CalcRectByLogicPoint(); (Control).Font.Height = AdjustControl_sFontHeight(); 的方式,來調整所有元件的位置,及字形大小.運用上這個Parent元件有點像是一 張墊底的方格紙,並且可以重複使用,因為已經元件化了. NOTE: Resize時,邏輯點的大小會改變,利用以下的值來計算元件所在的位置. RatioX = (float) ClientWidth / ScaleWidth; RatioY = (float) ClientHeight / ScaleHeight;發表人 - jow 於 2005/12/08 18:05:35 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |