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

FireMonkey 關閉 ShowModal Form 問題

答題得分者是:kuraki5336
blue
中階會員


發表:170
回覆:136
積分:81
註冊:2002-04-15

發送簡訊給我
#1 引用回覆 回覆 發表時間:2018-09-20 14:42:03 IP:125.227.xxx.xxx 未訂閱
Hi,各位先進大家好:
因專案需由Form1 call Form2 顯示並處理完後回到 Form1,
可是 Form2 於 FormActive 中處理完成後下了 Close,
當 Form1 使用 Form2.ShowModal 時, Form2 下 Close 並不會關閉,
當 Form1 使用 Form2.Show 時, Form2 下 Close 會關閉,
程式如下,
因Form2顯示時不希望焦點回到 Form1,
請問有沒有解決方法?
謝謝!

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(Self);
Form2.ShowModal;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Form2 := TForm2.Create(Self);
Form2.Show;
end;


procedure TForm2.FormActivate(Sender: TObject);
begin
Close;
end;



kuraki5336
初階會員


發表:13
回覆:35
積分:34
註冊:2010-06-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2018-09-27 00:36:27 IP:114.38.xxx.xxx 未訂閱
阿 .....close不會寫在Activate內吧
如果你有這樣的需求應該是這樣寫才對...
{
procedure TForm1.Button1Click(Sender: TObject);
var
mform:Tform2
begin
mform := Tform2.create(nil);
mform.ShowModal;

call you proc ...........

mform.Free;
end;
}

編輯記錄
kuraki5336 重新編輯於 2018-09-27 00:36:58, 註解 無‧
kuraki5336 重新編輯於 2018-09-27 00:37:18, 註解 無‧
kuraki5336 重新編輯於 2018-09-27 09:31:51, 註解 無‧
kuraki5336 重新編輯於 2018-09-27 09:32:19, 註解 無‧
kuraki5336 重新編輯於 2018-09-27 09:32:44, 註解 無‧
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#3 引用回覆 回覆 發表時間:2018-09-28 15:26:32 IP:59.120.xxx.xxx 未訂閱
  如果你是希望 form2 被啟動時要自動執行某些事情, 建議用以下做法來取代 FormActive 的事件
參照下列位置的程式碼撰寫

TForm2.....
private
....
Application.OnIdle := StartRun;
end;

Form2.Close;
end;


但要確定 Form1 呼叫 Form2的模式要為

Form2 := TForm2.Creae(self);
try
Form2.ShowModal;
finally
Form2.Free;
end;

以上適用 win vcl for delphi 任何版本, 但不一定適用 fmx 介面
===================引 用 blue 文 章===================
Hi,各位先進大家好:
因專案需由Form1 call Form2 顯示並處理完後回到 Form1,
可是 Form2 於 FormActive 中處理完成後下了 Close,
當 Form1 使用 Form2.ShowModal 時, Form2 下 Close 並不會關閉,
當 Form1 使用 Form2.Show 時, Form2 下 Close 會關閉,
程式如下,
因Form2顯示時不希望焦點回到 Form1,
請問有沒有解決方法?
謝謝!

procedure TForm1.Button1Click(Sender: TObject);
begin
Form2 := TForm2.Create(Self);
Form2.ShowModal;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Form2 := TForm2.Create(Self);
Form2.Show;
end;


procedure TForm2.FormActivate(Sender: TObject);
begin
Close;
end;



編輯記錄
P.D. 重新編輯於 2018-09-28 15:27:28, 註解 無‧
blue
中階會員


發表:170
回覆:136
積分:81
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2018-10-03 16:18:08 IP:125.227.xxx.xxx 未訂閱
Hi,
感謝 Kiraki5336 & P.D.
系統時間:2024-11-21 21:14:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!