全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:766
推到 Plurk!
推到 Facebook!

Form的名稱可當變數用嗎?

尚未結案
peijunyan
一般會員


發表:2
回覆:4
積分:1
註冊:2004-10-07

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-11-09 14:46:09 IP:140.113.xxx.xxx 未訂閱
我有一堆form共用一支程式 會改變的只有form名稱 因為不知道怎麼用 目前是把程式複製成多份 每份不一樣的只有form名稱 請問Form的名稱可當變數用嗎? 如果有,該怎麼使用? ps:我是初學者,問題太笨不要笑我 ^^~
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-11-09 15:30:39 IP:61.63.xxx.xxx 未訂閱
引言: 我有一堆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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-11-09 16:46:43 IP:140.113.xxx.xxx 未訂閱
謝謝你的答覆~  我的問題是>>>>>> 錯誤碼為 [
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-11-09 23:26:00 IP:211.74.xxx.xxx 未訂閱
引言: 謝謝你的答覆~ 我的問題是>>>>>> 錯誤碼為 [>< 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-11-10 15:03:34 IP:140.113.xxx.xxx 未訂閱
sorry~ 我沒有講清楚 假設現在>>>>>>>>>>>
m8815010
版主


發表:99
回覆:372
積分:289
註冊:2003-11-13

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-11-10 18:37:33 IP:61.63.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-11-10 20:57:43 IP:140.113.xxx.xxx 未訂閱
突然覺得好簡單 感謝你的解答
系統時間:2024-11-22 13:37:33
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!