線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1544
推到 Plurk!
推到 Facebook!

n個shape共用一個事件

答題得分者是:salo0610
wu330033
一般會員


發表:29
回覆:28
積分:11
註冊:2007-10-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-08-05 13:37:39 IP:140.124.xxx.xxx 訂閱
我目前寫了一個可以動態產生n個shape元件在form上的程式
想在每個shape元件的mousedown事件裡寫按下這個shape顏色就會改變
有沒有什麼方法可以讓我不用在每個shape元件的mousedown事件裡寫程式碼
而可以只寫一次,讓其他shape共用呢?
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-08-05 15:14:06 IP:220.132.xxx.xxx 未訂閱


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

http://delphi.ktop.com.tw/board.php?cid=168&fid=913&tid=94475
wu330033
一般會員


發表:29
回覆:28
積分:11
註冊:2007-10-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-08-05 15:31:17 IP:140.124.xxx.xxx 訂閱
這篇我有看過了
但這句話"所有Shape的MouseDown事件通通指向shape1的MouseDown事件"
意思我不是很懂,該如何做呢?
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-08-05 15:41:27 IP:220.132.xxx.xxx 未訂閱

http://delphi.ktop.com.tw/download/upload/489803daec5a7_1.JPG


這樣懂嗎??

===================引 用 wu330033 文 章===================
這篇我有看過了
但這句話"所有Shape的MouseDown事件通通指向shape1的MouseDown事件"
意思我不是很懂,該如何做呢?
wu330033
一般會員


發表:29
回覆:28
積分:11
註冊:2007-10-15

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-08-05 16:59:59 IP:140.124.xxx.xxx 訂閱

因為我是動態產生shape的
目前一開始一定要產生一個shape1元件出來才能在mousedown事件上寫程式
才能讓之後動態產生的shape執行shape1的mousedown事件
有沒有一開始不用產生一個shape1元件就能能在mousedown事件上寫程式的方法呢?
另外TShape *shape[101];這種寫法,陣列裡面的數字無法由介面輸入決定大小
有其它的方法嗎?
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-08-05 18:01:47 IP:220.132.xxx.xxx 未訂閱
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Shape2->On MouseDown = Shape1MouseDown;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Shape1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
ShowMessage("111");
}
//---------------------------------------------------------------------------
編輯記錄
salo0610 重新編輯於 2008-08-05 18:02:23, 註解 無‧
wu330033
一般會員


發表:29
回覆:28
積分:11
註冊:2007-10-15

發送簡訊給我
#7 引用回覆 回覆 發表時間:2008-08-05 19:15:22 IP:140.124.xxx.xxx 訂閱

感謝salo大
剩下最後一個問題
我動態產生的shape是由程式介面Edit1輸入決定幾乘幾
int row=StrToInt(Edit1->Text);
int column=StrToInt(Edit2->Text);
但是好像沒辦法像下面這樣寫
TShape *shape[row*column];
有別種的寫法嗎?
salo0610
高階會員


發表:42
回覆:120
積分:107
註冊:2003-02-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2008-08-06 08:40:53 IP:220.132.xxx.xxx 未訂閱

善用搜尋功能
以下搜尋的應該是你要的吧??
"動態宣告陣列" 字眼搜尋的
矩陣如何存成這樣的型式
http://delphi.ktop.com.tw/board.php?cid=168&fid=912&tid=58428
請問這樣的構想可行嗎?
http://delphi.ktop.com.tw/board.php?cid=168&fid=912&tid=63759

關於int arr[16][n] ;
你要利用動態宣告陣列的方式...
int **ary;
int n;
ary=new int*[16];
for(int i=0; i<16; i++)
ary[i]=new int[n];


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