請問如何呼叫動態產生的FORM中的程序 |
尚未結案
|
energybody
一般會員 發表:44 回覆:32 積分:15 註冊:2007-04-12 發送簡訊給我 |
小弟從 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 發送簡訊給我 |
|
energybody
一般會員 發表:44 回覆:32 積分:15 註冊:2007-04-12 發送簡訊給我 |
這個程式是用一個字串 例如 'TFormTest' 來動態產生一個 Form, 如果已經有這個 Form 就只將它移到最上層, 如果沒有這個 Form 就動態產生, 但是小弟還要當這個動態的 Form 產生時, 呼叫這個 Form 裡面的程序 RUN, 就像是執行 TFormTest(CreatedForm).RUN 程序一樣, 怎樣才能動態的呼叫程序 RUN, 請個位大大幫忙.
===================引 用 pcplayer99 文 章=================== 看不懂你想要干什么。 |
max5020
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
[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 發送簡訊給我 |
小弟用的是 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
資深會員 發表:30 回覆:277 積分:321 註冊:2003-06-04 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |