針對24個shape各別呼叫其MouseDown的訊息,有沒有比較好的作法? |
答題得分者是:taishyang
|
sunwingman
一般會員 發表:26 回覆:47 積分:14 註冊:2008-05-14 發送簡訊給我 |
就像下圖一樣,我有24各shape:
然後我希望,當滑鼠點任一個shape時,顏色可以複製到下圖的「standard」的shape中: 不過依我目前的作法,就是每一塊shape都去呼叫他的MouseDown訊息,如下: [code cpp] void __fastcall TForm1::Shape3MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Shape2->Brush->Color = Shape3->Brush->Color; } //--------------------------------------------------------------------------- void __fastcall TForm1::Shape4MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Shape2->Brush->Color = Shape4->Brush->Color; } //--------------------------------------------------------------------------- .. .. .. (有24各這樣的訊息) [/code] 可是這樣程式感覺很多行,不知道有沒有更好的方法? |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
|
sunwingman
一般會員 發表:26 回覆:47 積分:14 註冊:2008-05-14 發送簡訊給我 |
副站長你好:
我在為24各shape上色時,就有用到FindComponent,如下: [code cpp] TShape *Shape = NULL; for(int i=3; i<27; i ) { Shape = NULL; Shape = (TShape*)Form1->FindComponent("Shape" AnsiString(i)); if(Shape) { Shape->Brush->Color = (TColor)RGB(resultR[i-3], resultG[i-3], resultB[i-3]); } } [/code] 可是由於我的問題是要去呼叫每各shape的MouseDown訊息,然後當滑鼠點到才有動作 由於我搜尋過站上使用FindComponent的文章 似乎沒有針對訊息這樣子的用法 所以我不是很清楚我的問題要怎麼利用FindComponent 不知道是否能有更進一步的說明 麻煩了,感謝~ |
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
你可以把所有Shape的MouseDown事件通通指向shape1的MouseDown事件
然後在 void __fastcall TForm1::Shape1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Shape2->Brush->Color = ((TShape*)Sender)->Brush->Color; } |
sunwingman
一般會員 發表:26 回覆:47 積分:14 註冊:2008-05-14 發送簡訊給我 |
|
sunwingman
一般會員 發表:26 回覆:47 積分:14 註冊:2008-05-14 發送簡訊給我 |
太強了~
沒想到一行指令就可以達到我想要的效果 實際測試結果完全ok 謝謝副站長 ===================引 用 taishyang 文 章=================== 你可以把所有Shape的MouseDown事件通通指向shape1的MouseDown事件 然後在 void __fastcall TForm1::Shape1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { Shape2->Brush->Color = ((TShape*)Sender)->Brush->Color; } |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |