線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1343
推到 Plurk!
推到 Facebook!

如何固定Form內的物件???

缺席
firewing
一般會員


發表:23
回覆:47
積分:19
註冊:2002-12-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-01-03 15:48:43 IP:139.223.xxx.xxx 未訂閱
各位大大~~ 感謝你們給我的答覆....讓我學會了不少...今天我又來請教你們一個問題... 有什麼方法可以讓在 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-01-04 13:02:55 IP:210.58.xxx.xxx 未訂閱
引言: 有什麼方法可以讓在 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-01-04 13:05:42 IP:210.58.xxx.xxx 未訂閱
sorry... 這樣好了,給你一個有趣的程式碼, 讓你的Form1跑出螢幕不見時,某一區域都固定不動, 一勞永役.....< >< >
系統時間:2024-04-25 12:47:22
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!