firewing
一般會員
![](./myimg/board/mystar_empty.gif)
![](images/icon_photo_none.gif) 發表: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
初階會員
![](./myimg/board/mystar.gif)
![](images/icon_photo_none.gif) 發表: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;
}
//---------------------------------------------------------------------------
|