我用MessageBox等类似手段弹出消息框,但如果用户不相应则无法继续。我希望在指定时间后(比如1分钟)自动关闭该消息框。怎么办?

解决方案 »

  1.   

    没办法,MessageBox是模态的,关闭前主程序无法响应。你可以自己写一个类似messageBox的Form,里面增加一个定时器,到时间了自动关闭。最好别用模态了。
    用Show.
      

  2.   

    对,在show之前可以将主form disable掉
      

  3.   


    可以用一个普通的Form来实现,上面放一个可以操作的按钮,用户点击可以关闭此窗口;另外设计一个定时器,从此Form开始显示计时一段事件,关闭此窗口。
      

  4.   

    unit uMessageBoxEx;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;type
      TFMessageBoxEx = class(TForm)
        Label1: TLabel;
        BtnOK: TButton;
        Timer1: TTimer;
        procedure Timer1Timer(Sender: TObject);
      private
        FSeconds: Integer;
        { Private declarations }
      public
        { Public declarations }
      end;procedure MessageBoxEx(ACap, AText: string; Seconds: Integer);implementation{$R *.dfm}procedure MessageBoxEx(ACap, AText: string; Seconds: Integer);
    begin
      with TFMessageBoxEx.Create(Application) do try
        Caption := ACap;
        Label1.Caption := AText;
        FSeconds := Seconds;
        ShowModal;
      finally
        Free;
      end;
    end;procedure TFMessageBoxEx.Timer1Timer(Sender: TObject);
    begin
      Dec(FSeconds);
      if FSeconds < 0 then ModalResult := mrOK;
    end;end.