關於TModalResult |
答題得分者是:herbert2
|
john90471
一般會員 發表:1 回覆:4 積分:1 註冊:2009-03-03 發送簡訊給我 |
各位大大請幫個忙
小弟剛接觸BCB不久,現在陷入難題已經兩三個禮拜了 小弟想做一個影像處理的MDI介面 基本上,效果都可以執行,影像都可以處理 但是,為了使程式更加人性化 所以我希望可以結合另一個From 譬如說 現在要做一個Lowpass Filter好了 我希望在點「Lowpass Filter」的時候,會出現From1 然後可以選擇3*3或5*5或7*7的遮罩 最後按下Ok,才執行動作 --------------------------------------------------------- Lowpass的程式都打好了 Form1也設計好了 Form1的Unit1也include了 我在程式前 打了一些判斷的程式 TModalResult result = Form1->ShowModal(); if(result == mrOk ) { if(Form1->RadioGroup1->ItemIndex==0) { [程式省略] } } 不知道這樣打有什麼錯誤 執行Lowpass時,中斷會停在TModalResult result = Form1->ShowModal()這行 這應該要怎麼解決 我的Form1的buttom也有設bkOk 回傳mrOk 請幫個忙謝謝!! ------------------------------------------------------ 我重做一個Form 程式都一樣,竟然可以跑= = 滿想知道問題發生在哪裡@@ |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
john90471
一般會員 發表:1 回覆:4 積分:1 註冊:2009-03-03 發送簡訊給我 |
===================引 用 herbert2 文 章=================== TModalResult result = Form1->ShowModal(); // ShowModal() 若 Form1 不 Close 便一直等待, 不知您是否卡在這兒? 我的Form1的buttom也有設mbOk(筆誤?) 回傳mrOk -------------------------------------------------------------------------- / ShowModal() 若 Form1 不 Close 便一直等待, 不知您是否卡在這兒? ↑我不懂甚麼意思 我希望了[影像處理的->lowpass]按鈕,會出現From1 然後Key完值,按下確定,才開始動作 目前我一執行,他就跳回程式,中斷在TModalResult result = Form1->ShowModal(); 下面是筆誤 我的Form1的buttom也有設mbOk(筆誤?) 回傳mrOk 應該是kind的bkOk |
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
令 Form1 執行(顯示於螢幕上) 的方法有兩種:
一: Form1->Show(); 則 Form1 便開始執行, 然後繼續執行呼叫 Form1 之 Form (例如 Form0) 的下一列程式指令, 例如: if (result == mrOK) {....} 二: Form1->ShowModal(); 則 Form1 便開始執行, 然後須等 Form1 Close 後, 才繼續執行呼叫 Form1 之 Form (例如 Form0) 的下一列程式指令, 例如: if (result == mrOK) {....} 依據您的狀況, 採 ShowModal() 方式是正確的, 但要於 Form1 的 BtnOK 中設定 bkOK, 以便 Form1 Close 時, 將 Form1 的 ModalResult 設為 mrOK 並傳回給呼叫者, 讓.呼叫者可以依 Form1 之傳回值決定要如何進行下一步. 不知您所謂的『就跳回程式,中斷在TModalResult result = Form1->ShowModal();』到底您想要什麼結果? 難到您是想要 Form1 繼續顯示於螢幕上嗎? 若真是如此, BtnOK 便不可設為 bkOK, 應設 bkCustom, 等 Form1 之 BtnOKClick() Event 執行完後, 才設 Form1 之 ModalResult = mrOK, 接著才執行 Close() ; 否則您一按 BtnOK 就會馬上令 Form1 Close 並傳回 mrOK 給 Form0. 請參考 Help 之 TBitBtn 之 Kind 的說明. 或許誤會您的意思了, 不知以上說明是否幫得上? |
john90471
一般會員 發表:1 回覆:4 積分:1 註冊:2009-03-03 發送簡訊給我 |
我是想按下Ok之後,Main上面的Image開始做處理
你的說話,我好像聽的懂 只是我現在沒辦法開啟另一個From 一開就錯誤 以下附上我的程式: void __fastcall TMainForm::Log1Click(TObject *Sender) { TMDIChild *Child; Child = ((TMDIChild*) ActiveMDIChild); Graphics::TBitmap *TheBitmap; TheBitmap = Child->Image1->Picture->Bitmap; Byte *ptr1; double s1, s2, s3; float c; int Gamma; TModalResult result = Form2->ShowModal(); if(result == mrOk ) { if(Form2->RadioGroup1->ItemIndex==0) { c = StrToFloat(Form2->Edit1->Text); Gamma = StrToInt(Form2->Edit2->Text); for(int j=0; j { ptr1 = (Byte*) TheBitmap->ScanLine[j]; for(int i=0; i { s1 = c*log(pow(1 (ptr1[i*3]/255.0),Gamma)); s2 = c*log(pow(1 (ptr1[i*3 1]/255.0),Gamma)); s3 = c*log(pow(1 (ptr1[i*3 2]/255.0),Gamma)); ptr1[i*3] =(Byte)s1; ptr1[i*3 1] =(Byte)s2; ptr1[i*3 2] =(Byte)s3; } } } } Repaint(); Child->Image1->Picture->Bitmap->Assign(TheBitmap); } TModalResult result = Form2->ShowModal(); ↑這個一定要打嗎? 我一開始只打 Form2->ShowModal(); 也是不行
編輯記錄
john90471 重新編輯於 2009-03-24 23:15:11, 註解 無‧
|
李國維
高階會員 發表:42 回覆:287 積分:235 註冊:2003-02-07 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
|
john90471
一般會員 發表:1 回覆:4 積分:1 註冊:2009-03-03 發送簡訊給我 |
|
john90471
一般會員 發表:1 回覆:4 積分:1 註冊:2009-03-03 發送簡訊給我 |
|
herbert2
尊榮會員 發表:58 回覆:640 積分:894 註冊:2004-04-16 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |