我需要任何表單上的“x”按鈕都不會關閉表單,而是在 delphi 上打開另外 3 個隨機表單,我不知道該怎么做,請幫忙
uj5u.com熱心網友回復:
只需使用表單的OnCloseQuery事件來檢測用戶試圖關閉您的表單(通過單擊右上角的關閉按鈕、雙擊表單的標題欄圖示、選擇關閉系統選單項、按 Alt F4 , ETC。)。
然后設定CanClose并False打開您的三個新表單:
procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
CanClose := False;
Form2.Show;
Form3.Show;
Form4.Show;
end;
uj5u.com熱心網友回復:
正如@AndreasRejbrand 的回答所建議的,您可以使用表單的OnCloseQuery事件。但是,這種方法的問題是該事件也會在系統重新啟動/關閉期間觸發,您不想阻止它。如果在系統關閉期間OnCloseQuery回傳CanClose=False,則取消關閉。
另一種選擇是改用 Form 的OnClose事件,將其Action引數設定為caNone,例如:
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caNone;
Form2.Show;
Form3.Show;
Form4.Show;
end;
但是,最好的選擇是通過讓表單處理尋找通知的訊息來僅處理用戶啟動的關閉(X按鈕、ALT-F4等),例如:WM_SYSCOMMANDSC_CLOSE
procedure TForm1.WndProc(var Message: TMessage);
begin
if (Message.Msg = WM_SYSCOMMAND) and (Message.WParam and $FFF0 = SC_CLOSE) then
begin
Message.Result := 0;
Form2.Show;
Form3.Show;
Form4.Show;
end
else
inherited;
end;
這樣,系統啟動的閉包就不會受到阻礙。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/481121.html
標籤:德尔福
上一篇:如何從資源中播放wav檔案
