以下代碼是先判斷對話框是否打開,如果打開則用3種方法關閉都失敗了
請問 opendialog1.Execute 呼叫出打開檔案對話框后,如何程式中關閉而不是用對話框上的關閉按鈕?
procedure TForm1.OpenDialog1Show(Sender: TObject);
begin
OpenDialog_showing:=true;
end;
procedure TForm1.OpenDialog1Close(Sender: TObject);
begin
OpenDialog_showing:=false;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if OpenDialog_showing then
begin
SendMessage(form1.OpenDialog1.Handle,WM_CLOSE,0,0);//失敗
form1.OpenDialog1.OnClose(sender);//失敗
form1.OpenDialog1.Destroy; //出錯
end;
end;
uj5u.com熱心網友回復:
有人在嗎
uj5u.com熱心網友回復:
你直接destroy那個對話框視窗吧uj5u.com熱心網友回復:
通過獲取OpenDialog句柄直接釋放它 。uj5u.com熱心網友回復:
發送一個模擬的ESC鍵吧. 但這個對話框本來就是要對話用的, 結果要自己灰溜溜關閉, 咋回事啊.uj5u.com熱心網友回復:
procedure TForm1.odlgFolderChange(Sender: TObject);
begin
Timer1.Enabled := true ;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
pHandle: THandle;
begin
Timer1.Enabled := false ;
pHandle := odlg.Handle ;
if (pHandle <> 0) then
PostMessage(pHandle,WM_CLOSE,0,0);
end;
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/86078.html
