請問主視窗內是否可get到子視窗image元件上mouse的訊息 |
尚未結案
|
jsjs2601
一般會員 發表:7 回覆:7 積分:2 註冊:2008-09-30 發送簡訊給我 |
請問一下我原本在主視窗內有一個image元件,所以去檢查其image元件上是否有滑鼠按下,"主視窗"程式碼可以這樣的敘述,
void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { //do something~ } 但當我建立子視窗,將image元件搬到子視窗去,直接在"主視窗"去得知子視窗內的image元件上是否有滑鼠按下,若在"主視窗"內加上程式碼如下: void __fastcall TMDIChild::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { //do something~ } 會出現這樣的錯誤訊息 [C Error] ImgMain.cpp(581): E2316 _fastcall TMDIChild::Image1MouseDown(TObject *,TMouseButton,TShiftState,int,int) is not a member of TMDIChild 我的問題是,如何讓主視窗可以知道子視窗的image元件上是否有滑鼠移動或按下,並得知滑鼠座標。 我知道這樣會有問題,可是卻不知道怎麼樣修正,請各位先進指點一下~ |
jsjs2601
一般會員 發表:7 回覆:7 積分:2 註冊:2008-09-30 發送簡訊給我 |
|
jow
尊榮會員 發表:66 回覆:751 積分:1253 註冊:2002-03-13 發送簡訊給我 |
|
jsjs2601
一般會員 發表:7 回覆:7 積分:2 註冊:2008-09-30 發送簡訊給我 |
|
jsjs2601
一般會員 發表:7 回覆:7 積分:2 註冊:2008-09-30 發送簡訊給我 |
這個問題我自己解決了,把經驗分享一下
先說明一下原本要在主視窗內get到子視窗image元件上mouse訊息的用意: 是因為我在主視窗內有做toolbar,然後toolbar有一些繪圖的動作,像是畫矩形、圓形等等。 且原先開始是把image元件放在主視窗內,那麼要得知滑鼠是否有在image元件上按下,程式如下即可,且toolbar的訊息可直接傳入。 void __fastcall TForm1::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { //do something~ } 可是當image元件搬到子視窗之後,很多問題就產生了,像是toolbar的訊息要傳到子視窗,且我原本的演算法都寫在主視窗內,要整個搬到子視窗去工程浩大。所以才想問問"主視窗內是否可get到子視窗image元件上mouse的訊息"。 但找了很多文章,並在經過自己實驗的結果發現,若要對每張開啟且放在子視窗的圖做更改,將演算法放在主視窗的方法並不好。 因為會變成多個子視窗共用主視窗的演算後的data,而不是各個子視窗擁有各自演算後的data。 但若是把演算法放在子視窗,那麼每個子視窗可以都用同一個演算法運算,但是每個子視窗擁有各自算出的data,接著主視窗要get某個子視窗的運算結果時,去拮取正在active的視窗資料便可。 詳情可參考"程式設計俱樂部"內keyword"MDI多重視窗畫面處理"一文 http://www.programmer-club.com/pc2020v5/forum/ShowOneTextN.asp?board_pc2020=cb&id=13475&mode=keyword&szKeyword=µøµ¡&parentid=13412&selectmethod=subject 希望這些資料可以幫助有需要的網友 |
frankfang
一般會員 發表:0 回覆:2 積分:5 註冊:2006-08-25 發送簡訊給我 |
可是我把Image1搬到MdiChild後 event還是回到MdiParent上啊
void __fastcall TMainForm::FormClick(TObject *Sender) { Form1->Parent = this; Image1->Parent = Form1; Image1->Align = alClient; Form1->Show(); } //--------------------------------------------------------------------------- void __fastcall TMainForm::Image1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, int X, int Y) { ShowMessage( "Image1 Mouse Down" ); } //--------------------------------------------------------------------------- |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |