Form裡的元件作放大縮小 |
尚未結案
|
kraen4468
初階會員 發表:66 回覆:112 積分:35 註冊:2003-12-04 發送簡訊給我 |
http://delphi.ktop.com.tw/loadfile.php?TOPICID=8083551&CC=180789
這是Delphi語法
請問大大有辨法翻成BCB嗎 ~我還在學習狀態希望多多向您學習~ 發表人 - taishyang 於 2004/07/27 15:37:59
|
kraen4468
初階會員 發表:66 回覆:112 積分:35 註冊:2003-12-04 發送簡訊給我 |
http://delphi.ktop.com.tw/loadfile.php?TOPICID=16840039&CC=376621
這是我翻好的可是不能動 ~我還在學習狀態希望多多向您學習~
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
kraen4468你好: 試一試以下BCB的方式,純粹就你的元件放大縮小移動而說明。 .hpp檔先宣告 #define smNone 0 #define smMove 1 #define smLeft 2 #define smRight 4 #define smUp 8 #define smDown 16 private: // User declarations 或 public: // User declarations int ClickX; int ClickY; int ClickLeft; int ClickTop; int ClickWidth; int ClickHeight; int SizeMode; 開一專案Form上隨便放幾個元件(可視元件) 就其中一個元件的 MouseMove MouseDown MouseUp 中輸入以下程式碼 void __fastcall TForm1::xxxMouseUp(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { SizeMode = smNone; } void __fastcall TForm1::xxxMouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if ( Shift.Contains(ssLeft)) { TControl *vcl = (TControl*)Sender; // //現在所選VCL名稱 ClickX = X; ClickY = Y; ClickLeft = vcl->Left; ClickTop = vcl->Top; ClickWidth = vcl->Width; ClickHeight = vcl->Height; switch(vcl->Cursor) { case crSizeNS: if (Y<5) SizeMode = smUp; else SizeMode = smDown; break; case crSizeWE: if (X<5) SizeMode = smLeft; else SizeMode = smRight; break; case crSizeNWSE: if (X<5) SizeMode = smLeft | smUp; else SizeMode = smRight | smDown; break; case crSizeNESW: if (X<5) SizeMode = smLeft | smDown; else SizeMode = smRight | smUp; break; default: SizeMode = smMove; break; } } } void __fastcall TForm1::xxxMouseMove(TObject *Sender, TShiftState Shift, int X, int Y) { TControl* vcl = (TControl*)Sender; //判斷Cursor是否指向 if ( X<5) { if (Y<5) //左上對角 vcl->Cursor = crSizeNWSE; else if (Y>vcl->Height -5) //左下對角 vcl->Cursor = crSizeNESW; else //左邊 vcl->Cursor = crSizeWE; } else if (X >vcl->Width -5) { if (Y<5) //右上對角 vcl->Cursor = crSizeNESW; else if (Y>vcl->Height -5) //右下對角 vcl->Cursor = crSizeNWSE; else //右邊 vcl->Cursor = crSizeWE; } else if ((Y<5) || (Y>vcl->Height-5)) //上下 vcl->Cursor = crSizeNS; else vcl->Cursor = crSizeAll; if (SizeMode == smNone) return; if (SizeMode == smMove) { vcl->Left=vcl->Left X-ClickX; vcl->Top=vcl->Top Y-ClickY; return; } if (SizeMode & smLeft) { vcl->Left = vcl->Left (X-ClickX); vcl->Width =ClickWidth -(vcl->Left-ClickLeft); } if (SizeMode & smRight) { vcl->Width =ClickWidth X-ClickX; } if (SizeMode & smUp) { vcl->Top = vcl->Top (Y-ClickY); vcl->Height =ClickHeight -(vcl->Top-ClickTop); } if (SizeMode & smDown) { vcl->Height = ClickHeight Y -ClickY; } } 其他元件的 MouseMove MouseDown MouseUp 指向這元件即可 請參考Andy Chang
------
Andy Chang |
kraen4468
初階會員 發表:66 回覆:112 積分:35 註冊:2003-12-04 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
|
kraen4468
初階會員 發表:66 回覆:112 積分:35 註冊:2003-12-04 發送簡訊給我 |
|
andychang1690
資深會員 發表:20 回覆:694 積分:442 註冊:2003-03-14 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |