線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1997
推到 Plurk!
推到 Facebook!

如何在不同的form之間 傳遞參數?

尚未結案
chpaka
一般會員


發表:1
回覆:0
積分:0
註冊:2003-03-16

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-03-16 11:41:13 IP:61.216.xxx.xxx 未訂閱
假設我有3個form : form1,form2,form3 他們都有可能呼叫forma, 然後forma會將一個資料參數傳回發起呼叫的form ,請問如何讓forma知道是誰呼叫他?然後將參數 傳回正確的form? 不好意思,新手上路,敬請高手包含謝謝大家!!
chih
版主


發表:48
回覆:1186
積分:639
註冊:2002-04-02

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-03-16 11:46:12 IP:61.216.xxx.xxx 未訂閱
Forma在Public設一各全域變數xABC.會呼叫到的Form要use Forma,取的值就是 Forma.xABC... TRY TRY SEE
引言: 假設我有3個form : form1,form2,form3 他們都有可能呼叫forma, 然後forma會將一個資料參數傳回發起呼叫的form ,請問如何讓forma知道是誰呼叫他?然後將參數 傳回正確的form? 不好意思,新手上路,敬請高手包含謝謝大家!!
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-03-16 11:57:48 IP:61.66.xxx.xxx 未訂閱
引言: 假設我有3個form : form1,form2,form3 他們都有可能呼叫forma, 然後forma會將一個資料參數傳回發起呼叫的form ,請問如何讓forma知道是誰呼叫他?然後將參數 傳回正確的form? 不好意思,新手上路,敬請高手包含謝謝大家!!
這有幾種做法, 1.如 chih 兄所說, 將變數設在Forma public, 其他form uses Forma 缺點:form 之間 uses 來, uses 去很麻煩, 有時還會將其他不必要的Form uses 進來 2.我現在的做法, 建一個新的Unit(純Unit, 不含form), 將所要的變數 全部宣告到這個Unit, 所有的form都Uses這個Unit, 如此就不怕那一個form 會漏掉, 而這個unit就可以當做你的變數宣告檔, 維護上也十分方便!
Rain
資深會員


發表:31
回覆:236
積分:268
註冊:2003-02-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-03-16 15:06:57 IP:218.5.xxx.xxx 未訂閱
個人傾向於使用第三種方法:發送消息,這樣比較清楚且很好處理 Forma: Uses…; Const X_MESSAGE = WM_USER 11; private procedure XMessage(var Msg: TMessage); message X_MESSAGE; procedure TFormA.XMessage(var Msg: TMessage); begin with Msg do begin ShowMessage(PChar(lParam)); //下面是具體處理 if wParam = 1 then //來自Form1,可以在這裏同樣發送消息傳回參數:SendMessage(Form1.Handle, …); if wParam = 2 then //來自Form2 if wParam = 3 then //來自Form3 end; end; Form1中 呼叫forma: SendMessage(forma.Handle, X_Message, 1, LongInt(PChar(‘from form1!’)); Form2: SendMessage(forma.Handle, X_Message, 2, LongInt(PChar(‘from form2!’)); Form3: SendMessage(forma.Handle, X_Message, 3, LongInt(PChar(‘from form3!’));
cmj
高階會員


發表:15
回覆:242
積分:226
註冊:2002-06-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-03-17 01:01:35 IP:211.76.xxx.xxx 未訂閱
假設form1,form2,form3 call forma,傳入參數i:integer後forma把結果ri:integer傳回呼者 做法如下 在forma Function TForma.FunCall(Fm:TForm;i:integer):Integer begin //Fm.Name 可能為form1,form2,form3之name,可以判斸 . . Reuult:=.... end; Function TForma.FunCall(Fm:TForm;i:integer):Integer 可放在public 在form1,form2,form3須user forma 在程式中呼叫 forma.funcall .. begin r:=forma.FunCall(thisform,i); //thisform=form1 or form2 or form3 end; 說明 Funcall可以是functoin or procedure 傳入傳回之參數引數,使用傳值或傳址變數根據需求自己設計,物件本身可以當參數傳遞,但注意其屬於Form下之procedure or function
系統時間:2024-05-08 8:22:48
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!