參數的問題?? |
答題得分者是:jeffreck
|
jch
中階會員 發表:111 回覆:224 積分:66 註冊:2003-12-01 發送簡訊給我 |
Procedure TfrmTAC_3A1.fnTAC_3A1(_frmName:String;_CAP:String; _Grp:String);
begin
Grp := _Grp;
frmName := _frmName;
Application.Createform(TfrmTAC_3A1, frmTAC_3A1);
frmTAC_3A1.Caption := _CAP;
frmTAC_3A1.Show;
end;
以上是小弟的一個FUNCTION,當第一次執行時傳入的GRP=1,並開啟frmTAC_3A1,若此時,再執行此FUNCTION開啟另一個frmTAC_3A1,並傳入GRP=2,若此時將視窗切換回第一次開啟的視窗,第一個視窗的GRP卻也變成2,部之該如何修改程式,讓GRP的值不會因為開啟視窗的先後次序而改變了GRP原有的值呢?? ========================
我是DELPHI5的初學者
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
引言: Procedure TfrmTAC_3A1.fnTAC_3A1(_frmName:String;_CAP:String; _Grp:String); begin Grp := _Grp; frmName := _frmName; Application.Createform(TfrmTAC_3A1, frmTAC_3A1); frmTAC_3A1.Caption := _CAP; frmTAC_3A1.Show; end; 以上是小弟的一個FUNCTION,當第一次執行時傳入的GRP=1,並開啟frmTAC_3A1,若此時,再執行此FUNCTION開啟另一個frmTAC_3A1,並傳入GRP=2,若此時將視窗切換回第一次開啟的視窗,第一個視窗的GRP卻也變成2,部之該如何修改程式,讓GRP的值不會因為開啟視窗的先後次序而改變了GRP原有的值呢?? ======================== 我是DELPHI5的初學者Procedure TfrmTAC_3A1.fnTAC_3A1(_frmName:String;_CAP:String; _Grp:String); var newForm : TfrmTAC_3A1; begin newForm:=TfrmTAC_3A1.Create(self); newForm.Grp:= _Grp; newForm.frmName := _frmName; newForm.Caption := _CAP; newForm.Show; end; try try see |
jch
中階會員 發表:111 回覆:224 積分:66 註冊:2003-12-01 發送簡訊給我 |
程式修改後======
Procedure TfrmTAC_3A1.fnTAC_3A1(_frmName:String;_CAP:String; _Grp:String);
var
newForm : TfrmTAC_3A1;
begin
newForm := TfrmTAC_3A1.Create(self);
newForm.Grp := _Grp;
newForm.frmName := _frmName;
Application.Createform(TfrmTAC_3A1, frmTAC_3A1);
newForm.Caption := _CAP;
newForm.Show;
end; newForm.Grp := _Grp;
newForm.frmName := _frmName;
newForm.Caption := _CAP;
以上出現 Undeclared identifier 的錯誤 Application.Createform(TfrmTAC_3A1, frmTAC_3A1); ========================
我是DELPHI5的初學者
|
jch
中階會員 發表:111 回覆:224 積分:66 註冊:2003-12-01 發送簡訊給我 |
程式修改後======
Procedure TfrmTAC_3A1.fnTAC_3A1(_frmName:String;_CAP:String; _Grp:String);
var
newForm : TfrmTAC_3A1;
begin
newForm := TfrmTAC_3A1.Create(self);
newForm.Grp := _Grp;
newForm.frmName := _frmName;
Application.Createform(TfrmTAC_3A1, frmTAC_3A1);
newForm.Caption := _CAP;
newForm.Show;
end; newForm.Grp := _Grp;
newForm.frmName := _frmName;
newForm.Caption := _CAP;
以上出現 Undeclared identifier 的錯誤 Application.Createform(TfrmTAC_3A1, frmTAC_3A1);這一句該如何修改呢?? ========================
我是DELPHI5的初學者
|
speedup
資深會員 發表:19 回覆:259 積分:280 註冊:2003-07-04 發送簡訊給我 |
因為你共用一個frmTAC_3A1變數結果,每次執行將覆蓋自已的Grp並將frmTAC_3A1指到新建立的Form基本上這問題是非常邏輯不通的寫法
要改整個程式結構或設一個currActiveForm變數來操作(在Form的OnActive事件中下currActiveForm := self;)
下述做法只是暫時解決你目前的問題
Procedure TfrmTAC_3A1.fnTAC_3A1(_frmName:String;_CAP:String; _Grp:String); begin //mark 掉 Grp := _Grp; frmName := _frmName; Application.Createform(TfrmTAC_3A1, frmTAC_3A1); frmTAC_3A1.Caption := _CAP; frmTAC_3A1.Grp := _Grp; //移到這邊 frmTAC_3A1.Show; end;混心雜欲 棄修身~唉
------
唉~ |
jch
中階會員 發表:111 回覆:224 積分:66 註冊:2003-12-01 發送簡訊給我 |
多謝大哥,但是小弟將程式修改後問題依然存在喔!
Procedure TfrmTAC_3A1.fnTAC_3A1(_frmName:String;_CAP:String; _Grp:String);
begin
Application.Createform(TfrmTAC_3A1, frmTAC_3A1);
frmTAC_3A1.Caption := _CAP;
frmTAC_3A1.Grp := _Grp;
frmTAC_3A1.frmName := _frmName;
frmTAC_3A1.Show;
end; frmTAC_3A1.Grp := _Grp;
frmTAC_3A1.frmName := _frmName;
以上出現 Undeclared identifier 的錯誤 在Form的OnActive事件中下currActiveForm := self;
該如何下呢??小弟直接在OnActive事件上加上這一句一樣出現錯誤!! ========================
我是DELPHI5的初學者
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
引言: 多謝大哥,但是小弟將程式修改後問題依然存在喔! Procedure TfrmTAC_3A1.fnTAC_3A1(_frmName:String;_CAP:String; _Grp:String); begin Application.Createform(TfrmTAC_3A1, frmTAC_3A1); frmTAC_3A1.Caption := _CAP; frmTAC_3A1.Grp := _Grp; frmTAC_3A1.frmName := _frmName; frmTAC_3A1.Show; end; frmTAC_3A1.Grp := _Grp; frmTAC_3A1.frmName := _frmName; 以上出現 Undeclared identifier 的錯誤 在Form的OnActive事件中下currActiveForm := self; 該如何下呢??小弟直接在OnActive事件上加上這一句一樣出現錯誤!! ======================== 我是DELPHI5的初學者我試沒問題 可能是你沒宣告 Grp 及frmName 程式如下: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, Buttons; type TfrmTAC_3A1 = class(TForm) BitBtn1: TBitBtn; BitBtn2: TBitBtn; Procedure fnTAC_3A1(_frmName:String;_CAP:String; _Grp:String); procedure BitBtn1Click(Sender: TObject); procedure BitBtn2Click(Sender: TObject); private { Private declarations } public { Public declarations } Grp : String; frmName: string; end; var frmTAC_3A1: TfrmTAC_3A1; implementation {$R *.dfm} Procedure TfrmTAC_3A1.fnTAC_3A1(_frmName:String;_CAP:String; _Grp:String); var newForm : TfrmTAC_3A1; begin newForm := TfrmTAC_3A1.Create(self); newForm.Grp := _Grp; newForm.frmName := _frmName; newForm.Caption := _CAP; newForm.Show; end; procedure TfrmTAC_3A1.BitBtn1Click(Sender: TObject); begin self.fnTAC_3A1('aaa','aaa','aaa'); end; procedure TfrmTAC_3A1.BitBtn2Click(Sender: TObject); begin self.fnTAC_3A1('bbb','bbb','bbb'); end; end.發表人 - jeffreck 於 2004/07/14 17:46:09 |
jch
中階會員 發表:111 回覆:224 積分:66 註冊:2003-12-01 發送簡訊給我 |
多謝大哥,原來是小弟宣告參數的地方錯了!但是又有一個問題
newForm := TfrmTAC_3A1.Create(self);
newForm.Grp := _Grp;
newForm.frmName := _frmName;
利用這個方法,在newForm := TfrmTAC_3A1.Create(self);就已經觸發了onCreate的事件,但是在該是件需要使用到Grp和frmName這兩個參數,會造成程式錯誤,不知該如何於onCreate的事件前就先將Grp和frmName這兩個參數賦予值呢?? ========================
我是DELPHI5的初學者
|
jeffreck
高階會員 發表:247 回覆:340 積分:197 註冊:2003-01-23 發送簡訊給我 |
引言: 多謝大哥,原來是小弟宣告參數的地方錯了!但是又有一個問題 newForm := TfrmTAC_3A1.Create(self); newForm.Grp := _Grp; newForm.frmName := _frmName; 利用這個方法,在newForm := TfrmTAC_3A1.Create(self);就已經觸發了onCreate的事件,但是在該是件需要使用到Grp和frmName這兩個參數,會造成程式錯誤,不知該如何於onCreate的事件前就先將Grp和frmName這兩個參數賦予值呢?? ======================== 我是DELPHI5的初學者那自己宣告一個 Procedure 把 Create 的程式寫在裡面 如 mycreate Procedure TfrmTAC_3A1.fnTAC_3A1(_frmName:String;_CAP:String; _Grp:String); var newForm : TfrmTAC_3A1; begin newForm := TfrmTAC_3A1.Create(self); newForm.Grp := _Grp; newForm.frmName := _frmName; newForm.Caption := _CAP; newForm.mycreate; //<--- 去執行 newForm.Show; end; Procedure TfrmTAC_3A1.myCreate(); begin self.Label1.Caption :=Grp;//<--- 原 Create事件寫在這一行 end; |
jch
中階會員 發表:111 回覆:224 積分:66 註冊:2003-12-01 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |