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

請問如何直接抓到 runtime 時期 最上方的 form 的 name?

答題得分者是:Miles
azurecloud
中階會員


發表:52
回覆:108
積分:92
註冊:2003-09-04

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-09-09 22:09:11 IP:163.13.xxx.xxx 未訂閱
大家好: 我想在執行時期時,抓一個 Form(正在畫面上的 Form 應該是 OnFocus) 的 Name,請問該如何作呢? 我是有想過用 迴圈抓 Application 物件中所有 TForm component 的 Name,再一個一個判斷它的 form.active 屬性是否為 true;可是覺得這樣 做好像太慢了 請問有沒有類似 GetActiveFormName() 這種函數能直接套呢…,我是查 不到啦,請大家幫忙,謝謝。
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-09-09 23:40:24 IP:61.62.xxx.xxx 未訂閱
你的想法沒錯. 就是這樣寫就可以了:    
procedure TForm1.Button2Click(Sender: TObject);
var
  i: integer;
begin
  for i:=0 to Application.ComponentCount -1 do
    if Application.Components[i] is TForm then
      if TForm(Application.Components[i]).Active then
        ShowMessage(Application.Components[i].Name);
end;
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-09-10 19:48:59 IP:218.160.xxx.xxx 未訂閱
Hi azurecloud您好: 請參考Screen這個全域變數 ShowMessage(Screen.ActiveForm.Name); 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
azurecloud
中階會員


發表:52
回覆:108
積分:92
註冊:2003-09-04

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-09-10 22:51:05 IP:163.13.xxx.xxx 未訂閱
timhuang 大大好: 謝謝你的建議,程式碼很簡潔;不過很可惜沒有能直接抓到 active form 的函數(就算有可能內部也是用上述方法實現的),我實驗的結果發現,若是 在 Delphi6 的 project--> options --> forms 選項中,將所有的 form 移到 Auto Create Forms 中的話,我抓到的form name 會是像這樣的 ****_1(exp: frmChangeLan --> frmChangeLan_1 ),我在猜 Delphi 會重複 Create Form 的實體,並給予它 _1、_2 等類似的名稱,那如果全部移到 Available Forms 中的話,程式一執行什麼都看不到(至少要留一個 mainform)。 因為我是在修改 pcplayer99 大大的 多語言的元件,他的做法是控數 application 物件中的所有 Component 元件,再把它們的 Caption 屬性輸出到 ini 檔中,所以我的 form 必須全放在 Auto Create Forms 當中才行,這麼一來 OnActive 的 Form 就會多一個,我正在想辦法處理它…
azurecloud
中階會員


發表:52
回覆:108
積分:92
註冊:2003-09-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-09-10 23:05:22 IP:163.13.xxx.xxx 未訂閱
Males 大大好: 我試過了,可以 Work ,這樣寫方便多了,謝謝你的指點。
timhuang
尊榮會員


發表:78
回覆:1815
積分:1608
註冊:2002-07-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-09-10 23:20:40 IP:61.62.xxx.xxx 未訂閱
讚. miles 兄果然厲害. 又學了一招.
系統時間:2024-05-20 6:56:41
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!