如何固定Form內的物件??? |
缺席
|
firewing
一般會員 發表:23 回覆:47 積分:19 註冊:2002-12-13 發送簡訊給我 |
各位大大~~
感謝你們給我的答覆....讓我學會了不少...今天我又來請教你們一個問題...
有什麼方法可以讓在 Form 中的某一塊區域不隨著 HScroll 或 VScroll而移動
說的清楚一點...
若是有出現 HScroll 或 VScroll 時候...當我按下 HScroll/VScroll時候
Form裡面的東西都會改變位置,最後變成看不見,.
可是我想要最左邊或最上方的東西是固定的,不會離開畫面,
請問有什麼方法可以做到嗎???
我之前的做法是將 Label1->Left=10;Label1->Top=10;
這樣才能交他固定在那個位置....但是我想要固定的是Image1....
當我用此種方法時候,畫面會閃動......
請問還有較好的方法嗎???? 發表人 - firewing 於 2003/01/03 16:08:55
|
Cooky Kid
初階會員 發表:5 回覆:68 積分:44 註冊:2002-07-11 發送簡訊給我 |
引言: 有什麼方法可以讓在 Form 中的某一塊區域不隨著 HScroll 或 VScroll而移動 說的清楚一點... 若是有出現 HScroll 或 VScroll 時候...當我按下 HScroll/VScroll時候 Form裡面的東西都會改變位置,最後變成看不見,. 可是我想要最左邊或最上方的東西是固定的,不會離開畫面,....這樣好了,給你一個有趣的程式碼, 讓你的Form1跑出螢幕不見時,都固定不動, 一勞永役..... 新增一 class="code"> //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) {//預設Button3功能失效 Button3->Enabled = false; //防止Form1無法取得焦點時,預設之結束視窗功能 Button1->Caption = "結束Form1"; //重設Panel元件狀態功能 Button2->Caption = "移出Form1範圍"; Button3->Caption = "回到Form1範圍"; } //--------------------------------------------------------------------------- //讓Panel元件具有自由拖曳功能 void __fastcall TForm1::Panel1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) {//當滑鼠按住Panel元件時,即先釋放滑鼠的捕捉功能, //並送出訊息,以Panel全部範圍為視窗標題區域,允許滑鼠可自由拖曳Panel ::ReleaseCapture(); SNDMSG(Panel1->Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0); } //--------------------------------------------------------------------------- //防止Form1無法取得焦點時,預設之結束視窗功能 void __fastcall TForm1::Button1Click(TObject *Sender) { Close(); } //--------------------------------------------------------------------------- //重設Panel元件狀態功能,允許Panel移出Form1範圍自由拖曳 void __fastcall TForm1::Button2Click(TObject *Sender) {//取得指定元件的狀態資料,並去除子視窗與去除擁有標題列性質 DWORD dwStyle = ::GetWindowLong(Panel1->Handle, GWL_STYLE); dwStyle &= ~WS_CHILD & ~WS_CAPTION; ::SetWindowLong(Panel1->Handle, GWL_STYLE, dwStyle); //設定系統桌面為Panel1的父視窗 ::SetParent(Panel1->Handle, NULL); //將Button2與Button3功能切換 Button2->Enabled = false; Button3->Enabled = true; } //--------------------------------------------------------------------------- //重設Panel元件狀態功能,設定Panel回至Form1範圍自由拖曳 void __fastcall TForm1::Button3Click(TObject *Sender) {//取得指定元件的狀態資料,並賦予子視窗性質 DWORD dwStyle = ::GetWindowLong(Panel1->Handle, GWL_STYLE); dwStyle |= WS_CHILD; ::SetWindowLong(Panel1->Handle, GWL_STYLE, dwStyle); //設定Form1為Panel1的父視窗 ::SetParent(Panel1->Handle, Form1->Handle); //若Panel1位置移出至Form1範圍,則回到固定位置 if(Panel1->Top >= Height || Panel1->Left >= Width) { Panel1->Top = 30; Panel1->Left = 30; } //將Button2與Button3功能切換 Button2->Enabled = true; Button3->Enabled = false; } //--------------------------------------------------------------------------- |
Cooky Kid
初階會員 發表:5 回覆:68 積分:44 註冊:2002-07-11 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |