如何在不同的form之間 傳遞參數? |
尚未結案
|
chpaka
一般會員 發表:1 回覆:0 積分:0 註冊:2003-03-16 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 假設我有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 發送簡訊給我 |
個人傾向於使用第三種方法:發送消息,這樣比較清楚且很好處理
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 發送簡訊給我 |
假設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
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |