Form的名稱可當變數用嗎? |
尚未結案
|
peijunyan
一般會員 發表:2 回覆:4 積分:1 註冊:2004-10-07 發送簡訊給我 |
|
m8815010
版主 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: 我有一堆form共用一支程式 會改變的只有form名稱 因為不知道怎麼用 目前是把程式複製成多份 每份不一樣的只有form名稱 請問Form的名稱可當變數用嗎? 如果有,該怎麼使用? ps:我是初學者,問題太笨不要笑我 ^^~peijunyan你好< >: 站上有相當多這方面的詢問,可以先查一下< >! 另外我覺得你的需求比較像這樣的: 可能有一個你自已寫的function,假設寫在Form1中好了,那可能project中還有很多的Form,例如 Form2、Form3......,也會call這隻function! 你目前應該是每個Form的cpp中都寫一遍,我建議是只在Form1中的cpp中寫一遍,然後所有Form呼叫 這個function的時候,把自已當參數傳入,那麼這個function就知道是誰在呼叫它了! 範例(假設Form1的cpp中有一個改變Form的Caption屬性的function,所有Form都可以呼叫它): Unit1.cpp ~~ TForm1 *Form1; void SetCaption(TObject* Sender,AnsiString cptn); //定義這個function //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { SetCaption(this,Edit1->Text); //按button1執行該function } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { TForm2* Form2=new TForm2(Application); //按button2新增一個Form Form2->Show(); } //--------------------------------------------------------------------------- void SetCaption(TObject* Sender,AnsiString cptn) //function主體 { TForm* Now_Form=(TForm*)Sender; //取得呼叫它的Form Now_Form->Caption=cptn; //設定caption } =========================================================================== Unit2.cpp ~~ void __fastcall TForm2::Button1Click(TObject *Sender) { extern void SetCaption(TObject* Sender,AnsiString cptn); //宣告這個function(因為寫在Form1的cpp中) SetCaption(this,Edit1->Text); //同樣寫法執行這個function }All! 發表人 - |
peijunyan
一般會員 發表:2 回覆:4 積分:1 註冊:2004-10-07 發送簡訊給我 |
|
m8815010
版主 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: 謝謝你的答覆~ 我的問題是>>>>>> 錯誤碼為 [>>< face="Verdana, Arial, Helvetica"> peijunyan你好: 當然當然,我的範例是將呼叫這個 >! 你如果要處理每一個呼叫這個 class="code"> Form1.cpp部份 Form2.cpp部份略(同上精神) ~~ TForm1 *Form1; void SetCaption(TComboBox* cmbx,AnsiString txt); //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void SetCaption(TComboBox* cmbx,AnsiString txt) //function主體 { cmbx->Text=txt; //設定呼叫這個function的TComboBox元件的text屬性值 //do something else whatever you want } void __fastcall TForm1::Button1Click(TObject *Sender) { SetCaption(ComboBox1,"Success"); } //--------------------------------------------------------------------------- void __fastcall TForm1::Button2Click(TObject *Sender) { TForm2 *Form2=new TForm2(Application); Form2->Show(); } 不清楚你實際的細部需求,上例只是精神罷了!參著參著! |
peijunyan
一般會員 發表:2 回覆:4 積分:1 註冊:2004-10-07 發送簡訊給我 |
|
m8815010
版主 發表:99 回覆:372 積分:289 註冊:2003-11-13 發送簡訊給我 |
引言: sorry~ 我沒有講清楚 假設現在>>>>>>>>>>>>>< face="Verdana, Arial, Helvetica"> peijunyan你好< >: 有看不是很懂< >! 你的f_x()是已經ok了? 那剩io()這個function的部份?? 如果是的話,那直接承接我上篇回應來改應該是比較快的! < class="code"> ~~ TForm1 *Form1; void io(TComboBox* cmbx1,TComboBox* cmbx2); //宣告io這個function //--------------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Form2->ShowModal(); //show出Form2 io(Form2->ComboBox1,Form2->ComboBox2); //show出之後就把它上面的兩個TComboBox傳入io function去做後續動作 } //--------------------------------------------------------------------------- void io(TComboBox* cmbx1,TComboBox* cmbx2)io function main body { if (cmbx1->Text=="a") { pp=.... } else if(cmbx1->Text=="b") { pp=... } else { pp=... } if (cmbx2->Text=="x") { qq=.... } else if(cmbx2->Text=="y") { qq=... } else { qq=... } } 嗯,大概這樣解先! |
peijunyan
一般會員 發表:2 回覆:4 積分:1 註冊:2004-10-07 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |