請問,程式中,如何快速得知 滑鼠點到 哪一個Form的抬頭?或Focus |
答題得分者是:syntax
|
harktrip
一般會員 發表:30 回覆:30 積分:12 註冊:2007-04-11 發送簡訊給我 |
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
連這種問題你都很傷腦經
那接下來你要如何走下去? 1.思考是滑鼠點在 form 上才算,還是 form 上的元件都算 2.思考是否有現成的事件,如 On Click, OnFocused,或是必須使用組合處理 On MouseEnter On MouseUp/ On MouseDown On MouseLeave 之類的 3.寫出程式 就這樣,不難,難在於,你沒有去試試看(有的話,程式碼呢?),就來問 ===================引 用 harktrip 文 章=================== 例如...我有 MyForm[x] ,假設x是0~19,有20個MDIChild Form 但使用者操作時,會亂點, 我又要做TreeView的相對節點圖案改變 問題來了,程式如何做,可以在點到該Form時,就知道被點選的Form不一樣了, 讓程式可以去更改TreeView的節點圖案? 各位兄弟幫個忙..這很傷腦筋的 |
harktrip
一般會員 發表:30 回覆:30 積分:12 註冊:2007-04-11 發送簡訊給我 |
各Form建立的程式
Edit_Form[Page_Code] = new TForm(Application); Edit_Form[Page_Code]->Parent=Form1; Edit_Form[Page_Code]->FormStyle= fsMDIChild; Edit_Form[Page_Code]->DoubleBuffered = true; Edit_Form[Page_Code]->ClientHeight=480; Edit_Form[Page_Code]->ClientWidth=640; Edit_Form[Page_Code]->OnClose= My_CloseForm; Edit_Form[Page_Code]->Tag= Page_Code; Edit_Form[Page_Code]->Caption=str1; Edit_Form[Page_Code]->OnMouseMove =MyMouseMove_Form; Edit_Form[Page_Code]->OnMouseDown =MyMouseClick_Form; Edit_Form[Page_Code]->OnClick =MyClick; Edit_Form[Page_Code]->OnMouseUp = MyMouseUp ; Edit_Form[Page_Code]->OnClose=MyFormClose; Form建立後,各Form有各自的各種物件在上面,不過相同滑鼠事件,都指向同一個 TImage_MMI *Parts_Image= new TImage_MMI(Edit_Form[Page_Code]); Parts_Image->Parent=Edit_Form[Page_Code]; Parts_Image->PopupMenu=PopupPart; Parts_Image->OnMouseDown = MyMouseDown; Parts_Image->OnMouseMove = MyMouseMove; Parts_Image->OnMouseUp = MyMouseUp; Parts_Image->OnDragDrop = MyEndDrag; Parts_Image->Tag= Label_Index; 加上MyClick void _fastcall TForm1::MyClick(TObject *Sender) { // i=dynamic_cast Application->MessageBoxA("點到了", "訊息提示", IDOK); } 問題是這樣的, .點到各Form的空白處,可以觸發MyClik,但點到Form的抬頭,是觸發啥事件? 各位兄弟幫幫忙.感恩啦 ===================引 用 syntax 文 章=================== 1.思考是滑鼠點在 form 上才算,還是 form 上的元件都算 2.思考是否有現成的事件,如 On Click, OnFocused,或是必須使用組合處理 On MouseEnter On MouseUp/ On MouseDown On MouseLeave 之類的 3.寫出程式 就這樣,不難,難在於,你沒有去試試看(有的話,程式碼呢?),就來問 ---> 這很傷人耶...會來問,當然是困擾許久,動手N遍了
編輯記錄
harktrip 重新編輯於 2008-01-22 09:02:51, 註解 無‧
|
syntax
尊榮會員 發表:26 回覆:1139 積分:1258 註冊:2002-04-23 發送簡訊給我 |
傷到你,很抱歉
但是,就算你做 1 萬遍,沒有貼上來,那要如何知道你做了哪些東西?問題在哪? 你可以想想,你會打電話到醫院看病,還是親自去醫院看病? 沒東西,沒搞頭! 2.思考是否有現成的事件 --> 你是思考了,但是應該會發現「點到Form的抬頭,是觸發啥事件?」這個沒有現成的 所以必須自己處理--> 抓取 WM_MOUSEMOVE WM_NCxBUTTONDOWN 顯然你沒有訊息處理的知識喔!趕快去加強囉! 你的程式,是沒有什麼問題,但是,相信你會很累的在維護這所有的關係上,每新增、刪除一個元件,就必須維護滑鼠事件 所以你必須改變你的切入點,相信你會發現簡單又快的方法 ===================引 用 harktrip 文 章=================== 各Form建立的程式 Edit_Form[Page_Code] = new TForm(Application); Edit_Form[Page_Code]->Parent=Form1; Edit_Form[Page_Code]->FormStyle= fsMDIChild; Edit_Form[Page_Code]->DoubleBuffered = true; Edit_Form[Page_Code]->ClientHeight=480; Edit_Form[Page_Code]->ClientWidth=640; Edit_Form[Page_Code]->OnClose= My_CloseForm; Edit_Form[Page_Code]->Tag= Page_Code; Edit_Form[Page_Code]->Caption=str1; Edit_Form[Page_Code]->OnMouseMove =MyMouseMove_Form; Edit_Form[Page_Code]->OnMouseDown =MyMouseClick_Form; Edit_Form[Page_Code]->OnClick =MyClick; Edit_Form[Page_Code]->OnMouseUp = MyMouseUp ; Edit_Form[Page_Code]->OnClose=MyFormClose; Form建立後,各Form有各自的各種物件在上面,不過相同滑鼠事件,都指向同一個 TImage_MMI *Parts_Image= new TImage_MMI(Edit_Form[Page_Code]); Parts_Image->Parent=Edit_Form[Page_Code]; Parts_Image->PopupMenu=PopupPart; Parts_Image->OnMouseDown = MyMouseDown; Parts_Image->OnMouseMove = MyMouseMove; Parts_Image->OnMouseUp = MyMouseUp; Parts_Image->OnDragDrop = MyEndDrag; Parts_Image->Tag= Label_Index; 加上MyClick void _fastcall TForm1::MyClick(TObject *Sender) { // i=dynamic_cast 問題是這樣的, .點到各Form的空白處,可以觸發MyClik,但點到Form的抬頭,是觸發啥事件? 各位兄弟幫幫忙.感恩啦 ===================引 用 syntax 文 章=================== 1.思考是滑鼠點在 form 上才算,還是 form 上的元件都算 2.思考是否有現成的事件,如 On Click, OnFocused,或是必須使用組合處理 On MouseEnter On MouseUp/ On MouseDown On MouseLeave 之類的 3.寫出程式 就這樣,不難,難在於,你沒有去試試看(有的話,程式碼呢?),就來問 ---> 這很傷人耶...會來問,當然是困擾許久,動手N遍了
編輯記錄
syntax 重新編輯於 2008-01-22 15:13:03, 註解 無‧
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |