請問如何添加Button「按鈕按下」和「按鈕彈起」事件 |
答題得分者是:m8815010
|
Terry6666
一般會員 發表:32 回覆:19 積分:10 註冊:2002-12-20 發送簡訊給我 |
|
soya
一般會員 發表:2 回覆:3 積分:1 註冊:2002-10-09 發送簡訊給我 |
|
m8815010
版主 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: 求助] 請問如何添加Button「按鈕按下」和「按鈕彈起」事件! 我想添加「按鈕按下」和「按鈕彈起」事件,就是當按鈕按下是執行一段命令,但按鈕彈起時再執行另一段命令,請問要如何添加這兩個事件,或者說是函數?按下後就不會自動彈起來..,要等在按一次才會彈起來....謝謝...Terry6666你好: 記得 >。 不過有這樣一個功能的 >! 反正如果要自已處理的話就是如你所說的要把兩個事件拆開就對了< >! class="code"> In Unit1.h ~~ class TForm1 : public TForm { __published: // IDE-managed Components TButton *Button1; TMemo *Memo1; private: // User declarations TWndMethod OldButtonWndProc; //add this line void __fastcall ButtonWndProc(TMessage&); //add this line public: // User declarations __fastcall TForm1(TComponent* Owner); }; ~~ In Unit1.cpp ~~ TForm1 *Form1; bool If_Pressed=false; //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { OldButtonWndProc=Button1->WindowProc; Button1->WindowProc=ButtonWndProc; } //--------------------------------------------------------------------------- void __fastcall TForm1::ButtonWndProc(TMessage& Message) { if (Message.Msg==BM_SETSTATE) { if (!If_Pressed) { if (SendMessage(Button1->Handle,BM_GETSTATE,0,0)==104) { OldButtonWndProc(Message); If_Pressed=true; Button1->Caption="按下"; //這裡可以寫按下要做的事,例: Memo1->Lines->Add("我被按下了"); return; } if (SendMessage(Button1->Handle,BM_GETSTATE,0,0)==108) { Message.WParam=0; OldButtonWndProc(Message); //If_Pressed=true; Button1->Caption="彈起"; //這裡可以寫彈起要做的事,例: Memo1->Lines->Add("我被彈起了"); return; } } else { If_Pressed=false; return; } return; } OldButtonWndProc(Message); } ~~反正就是WM_LBUTTONUP、WM_LBUTTONDOWN、BM_SETSTATE等等等這幾個click的事件把它分開就是! < src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=17661351&CC=394989"> Conclusion: 我的sample並不完善enough: 1.按下button後,如果不放掉再繼續移動的話,事件會持續觸發。所以這裏需要擋掉! 2.目前我沒有擋掉,因為我沒辦法一下寫好,需一些時間,所以放棄^^!Terry6666兄視需要自行改良之! 3.整個sample可能並不effective and wise enough,但是我目前想到可行的! 應該是有現成的元件可利用啦,但目前如果還找不到的話,就參著參著上述拙招了! |
Terry6666
一般會員 發表:32 回覆:19 積分:10 註冊:2002-12-20 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |