我在操作成功时弹出MessageDlg对话框,MessageDlg('成功',mtInformation,[mbok],0)
我想让他在10秒钟后自动关闭怎么实现

解决方案 »

  1.   

    http://expert.csdn.net/Expert/topic/2249/2249047.xml?temp=.833935function StrLeft(const mStr: string; mDelimiter: string): string;
    begin
      Result := Copy(mStr, 1, Pos(mDelimiter, mStr) - 1);
    end; { StrLeft }function StrRight(const mStr: string; mDelimiter: string): string;
    begin
      if Pos(mDelimiter, mStr) > 0 then
        Result := Copy(mStr, Pos(mDelimiter, mStr) + Length(mDelimiter), MaxInt)
      else Result := '';
    end; { StrRight }procedure TForm1.Timer1Timer(Sender: TObject);
    var
      vHandle: THandle;
      vBuffer: array[0..255] of Char;
      I: Integer;
    begin
      vHandle :=FindWindow('TMessageForm', nil);
      TTimer(Sender).Enabled := vHandle <> 0;
      if vHandle = 0 then Exit;
      GetWindowText(vHandle, vBuffer, 256);
      I := StrToIntDef(StrRight(vBuffer, ','), 11) - 1;
      if I < 0 then SendMessage(vHandle, WM_SYSCOMMAND, SC_CLOSE, 0);  SetWindowText(vHandle, PChar(StrLeft(string(vBuffer) + ',', ',') + ',' +
        IntToStr(I)));
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      Timer1.Enabled := False;
      Timer1.Enabled := True;
      ShowMessage('Hello!');
    end;procedure TForm1.Button2Click(Sender: TObject);
    begin
      Timer1.Enabled := False;
      Timer1.Enabled := True;
      MessageDlg('Are you ok?', mtWarning, [mbYes, mbNo], 0);
    end;
      

  2.   

    to  zswangII 老大你很搞笑呀,不管怎么说谢谢zswangII 老大,试验,如果没有更好的
    晚上结贴
      

  3.   

    已后还是自己研究吧,象联众中的计时器一样:
    var
      Form1: TForm1;
      hh:word;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
    begin
      with CreateMessageDialog('dsfdsf',mtWarning, [mbYes, mbNo]) do
        try
         Position := poScreenCenter;
         hh:=handle;
         timer1.Enabled:=true;
         ShowModal;
         hh:=0;
         timer1.Enabled:=false;
        finally
          hh:=0;
          timer1.Enabled:=false;
          Free;
        end;
    end;
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      if hh>0 then
        SendMessage(hh, WM_SYSCOMMAND, SC_CLOSE, 0);
      enabled:=false;
    end;