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

請問如何呼叫動態產生的FORM中的程序

尚未結案
energybody
一般會員


發表:44
回覆:32
積分:15
註冊:2007-04-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-03-07 10:06:47 IP:211.21.xxx.xxx 訂閱
小弟從 ktop 的文章中學習到如何呼叫動態產生的 FORM, 但是小弟須要呼叫動態產生的  FORM 中的程序, 請問各位大大如何解決?

procedure TAccountingMain.CreateForm(FormClass: String);
var i: Integer;
CreatedFormClass: TFormClass;
CreatedForm: TForm;
begin
CreatedForm:=Nil;
CreatedFormClass:=TFormClass(FindClass(FormClass));
for i:=0 to Screen.FormCount-1 do
if Screen.Forms[i] is CreatedFormClass then
begin
CreatedForm:=Screen.Forms[i];
if CreatedForm.WindowState=wsMinimized then
CreatedForm.WindowState:=wsNormal;
CreatedForm.BringToFront;
Exit;
end;
if not Assigned(CreatedForm) then
begin
CreatedForm:=CreatedFormClass.Create(Application);
CreatedForm.FormStyle:=fsNormal;
end;
CreatedForm.WindowState:=wsNormal;
// call the RUN <<---如何呼叫 CreatedForm 中的程序 RUN
CreatedForm.Show;
end;
pcplayer99
尊榮會員


發表:146
回覆:790
積分:632
註冊:2003-01-21

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-03-07 13:55:48 IP:218.18.xxx.xxx 訂閱
看不懂你想要干什么。
energybody
一般會員


發表:44
回覆:32
積分:15
註冊:2007-04-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-03-07 14:26:15 IP:211.21.xxx.xxx 訂閱
這個程式是用一個字串 例如 'TFormTest' 來動態產生一個 Form, 如果已經有這個 Form 就只將它移到最上層, 如果沒有這個 Form 就動態產生, 但是小弟還要當這個動態的 Form 產生時, 呼叫這個 Form 裡面的程序 RUN, 就像是執行 TFormTest(CreatedForm).RUN 程序一樣, 怎樣才能動態的呼叫程序 RUN, 請個位大大幫忙. 
===================引 用 pcplayer99 文 章===================
看不懂你想要干什么。
max5020
資深會員


發表:29
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-04-16 11:00:43 IP:59.120.xxx.xxx 訂閱

[code delphi]
function TfmSmain.CreateFormByClass(FormClass: TFormClass): TFormclass;
var i: Integer;
Fm: TForm;
begin
fm:= nil;
for i:= 0 to Screen.FormCount - 1 do
if Screen.Forms[i] is FormClass then
begin
fm:= Screen.Forms[i];
if Fm.WindowState=wsMinimized then Fm.WindowState:= wsNormal;
fm.BringToFront;
end;
if not Assigned(fm) then fm:= FormClass.Create(Application);
fm.RUN; // this line
fm.Show;
Result:= TFormClass(fm);
end;

function TfmSmain.CreateFormByName(const fm_Name: String): TFormclass;
begin
Result:= TFormClass(FindClass(fm_Name));
try
try
CreateFormByClass(Result);
except
on E:Exception do ShowMessage(E.Message);
end;
except
ShowMessage(fm_Name ' 尚未建立');
end;
end;
[/code]

===================引 用 energybody 文 章===================
這個程式是用一個字串 例如 'TFormTest' 來動態產生一個 Form, 如果已經有這個 Form 就只將它移到最上層, 如果沒有這個 Form 就動態產生, 但是小弟還要當這個動態的 Form 產生時, 呼叫這個 Form 裡面的程序 RUN, 就像是執行 TFormTest(CreatedForm).RUN 程序一樣, 怎樣才能動態的呼叫程序 RUN, 請個位大大幫忙.
===================引 用 pcplayer99 文 章===================
看不懂你想要干什么。
編輯記錄
max5020 重新編輯於 2008-04-16 11:06:37, 註解 無‧
energybody
一般會員


發表:44
回覆:32
積分:15
註冊:2007-04-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-04-18 09:43:50 IP:211.21.xxx.xxx 訂閱
小弟用的是 delphi 6, 在 compiler 時, fm.run 會出現 undefined identifier 的錯誤, 所以無法執行, 是不是還有其他的解決方式, 如尋找 run 的位址然後呼叫...
===================引 用 max5020 文 章===================

[code delphi]
function TfmSmain.CreateFormByClass(FormClass: TFormClass): TFormclass;
var i: Integer;
Fm: TForm;
begin
fm:= nil;
for i:= 0 to Screen.FormCount - 1 do
if Screen.Forms[i] is FormClass then
begin
fm:= Screen.Forms[i];
if Fm.WindowState=wsMinimized then Fm.WindowState:= wsNormal;
fm.BringToFront;
end;
if not Assigned(fm) then fm:= FormClass.Create(Application);
fm.RUN; // this line
fm.Show;
Result:= TFormClass(fm);
end;

function TfmSmain.CreateFormByName(const fm_Name: String): TFormclass;
begin
Result:= TFormClass(FindClass(fm_Name));
try
try
CreateFormByClass(Result);
except
on E:Exception do ShowMessage(E.Message);
end;
except
ShowMessage(fm_Name ' 尚未建立');
end;
end;
[/code]

===================引 用 energybody 文 章===================
這個程式是用一個字串 例如 'TFormTest' 來動態產生一個 Form, 如果已經有這個 Form 就只將它移到最上層, 如果沒有這個 Form 就動態產生, 但是小弟還要當這個動態的 Form 產生時, 呼叫這個 Form 裡面的程序 RUN, 就像是執行 TFormTest(CreatedForm).RUN 程序一樣, 怎樣才能動態的呼叫程序 RUN, 請個位大大幫忙.
===================引 用 pcplayer99 文 章===================
看不懂你想要干什么。
max5020
資深會員


發表:29
回覆:277
積分:321
註冊:2003-06-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2008-04-18 10:46:21 IP:59.120.xxx.xxx 訂閱
恩, 是我的錯,
建議你要fm.RUN的東西,
放到fm.Show中執行,
應該就可以了!!
系統時間:2024-04-29 5:10:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!