以下代码是先判断对话框是否打开,如果打开则用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;

解决方案 »

  1.   

    你直接destroy那个对话框窗口吧
      

  2.   

    通过获取OpenDialog句柄直接释放它 。
      

  3.   

    发送一个模拟的ESC键吧. 但这个对话框本来就是要对话用的, 结果要自己灰溜溜关闭, 咋回事啊.
      

  4.   


    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;