全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1422
推到 Plurk!
推到 Facebook!

針對24個shape各別呼叫其MouseDown的訊息,有沒有比較好的作法?

答題得分者是:taishyang
sunwingman
一般會員


發表:26
回覆:47
積分:14
註冊:2008-05-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-07-16 14:13:39 IP:61.61.xxx.xxx 訂閱
就像下圖一樣,我有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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-07-16 14:19:15 IP:118.169.xxx.xxx 訂閱
搜尋關鍵字[FindComponent]
sunwingman
一般會員


發表:26
回覆:47
積分:14
註冊:2008-05-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-07-16 14:44:22 IP:61.61.xxx.xxx 訂閱
副站長你好:

我在為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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-07-16 14:53:28 IP:118.169.xxx.xxx 訂閱
你可以把所有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;
}

編輯記錄
taishyang 重新編輯於 2008-07-16 14:56:26, 註解 無‧
taishyang 重新編輯於 2008-07-16 14:56:58, 註解 無‧
sunwingman
一般會員


發表:26
回覆:47
積分:14
註冊:2008-05-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-07-16 15:07:30 IP:61.61.xxx.xxx 訂閱
I got it

真是多謝副站長了
我先試試看
結果晚點再上來說
順便結案

真的多謝
sunwingman
一般會員


發表:26
回覆:47
積分:14
註冊:2008-05-14

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-07-17 10:47:26 IP:61.61.xxx.xxx 訂閱
太強了~
沒想到一行指令就可以達到我想要的效果
實際測試結果完全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;
}

系統時間:2024-05-08 5:06:53
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!