TShape的MouseDown可否陣列處理 |
答題得分者是:taishyang
|
yeeddt
初階會員 發表:18 回覆:28 積分:29 註冊:2008-11-10 發送簡訊給我 |
各位前輩好!
我想模擬小畫家中色塊工具列,因此應用了TShape的MouseDown事件。 當左鍵點到某個TShape畫筆顏色就會改變。 但是每個TShape的事件裡判斷式都很類似,只是換個元件名稱。 請問這樣有辦法將它們陣列處理嗎? [code cpp] TColor Lcolor=clBlack; //預設左鍵為黑色 TColor Rcolor=clWhite; //預設右鍵為白色 void __fastcall TForm1::Shape1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { if (Shift.Contains(ssLeft)) Lcolor=Shape1->Brush->Color; else if (Shift.Contains(ssRight)) Rcolor=Shape1->Brush->Color; } [/code] 將事件變成類似下面這樣? [code cpp] void __fastcall TForm1::Shape(i)MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) [/code] 編輯記錄
yeeddt 重新編輯於 2008-12-01 11:05:14, 註解 無‧
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
yeeddt
初階會員 發表:18 回覆:28 積分:29 註冊:2008-11-10 發送簡訊給我 |
副站長,您好!
請問這樣是否表示還是會有28個事件? 還是您指的就是這篇討論的方法如何讓不同元件執行同一動作 但是我卻無法如法炮製。 [code cpp] TShape *Shape[28]; void __fastcall TForm1::Shape3MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { for(int i=1; i<=28; i ) { TShape *Shape=dynamic_cast(FindComponent("Shape" IntToStr(i))); //我已宣告但是complier後顯示Shpae never used if (Shift.Contains(ssLeft)) { Lcolor=Shape[i]->Brush->Color; leftShape->Brush->Color=Lcolor; //顯示左鍵為何種顏色 } else if (Shift.Contains(ssRight)) { Rcolor=Shape[i]->Brush->Color; rightShape->Brush->Color=Rcolor; //顯示右鍵為何種顏色 } } } [/code]
編輯記錄
yeeddt 重新編輯於 2008-12-01 11:06:15, 註解 無‧
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
1.在Object Inspector中將所有Shpae的mouse down事件通通指向Shape1的mouse down事件
2.加入下面的程式碼 TColor Lcolor=clBlack; //預設左鍵為黑色 TColor Rcolor=clWhite; //預設右鍵為白色 void __fastcall TfrmMain::Shape1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { TShape *sp = (TShape*)Sender; if (sp){ if (Shift.Contains(ssLeft)){ sp->Brush->Color = Lcolor; }else if (Shift.Contains(ssRight)){ sp->Brush->Color = Rcolor; } } }
編輯記錄
taishyang 重新編輯於 2008-12-01 11:36:00, 註解 無‧
|
yeeddt
初階會員 發表:18 回覆:28 積分:29 註冊:2008-11-10 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
yeeddt
初階會員 發表:18 回覆:28 積分:29 註冊:2008-11-10 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |