Например так:
Code
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
procedure OnTimer(Sender: TObject);
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
MsgCaption = 'Осталось %d секунд';
var
MyMsgDialog: TForm;
Sec: Integer;
procedure TForm1.OnTimer(Sender: TObject);
begin
MyMsgDialog.Caption := Format(MsgCaption, [Sec]);
if Sec = 0 then MyMsgDialog.ModalResult:= ID_OK;
Dec(Sec);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
Timer: TTimer;
begin
// Создаем диалог
MyMsgDialog := CreateMessageDialog(' сообщение ', mtInformation, [mbOk]);
// Создаем таймер
Timer := TTimer.Create(MyMsgDialog);
Timer.Enabled := False;
Sec:= 10; // 10 - это кол-во секунд до закрытия
with MyMsgDialog do
begin
try
Caption := '';
//Задаем параметры таймера
Timer.Enabled := True;
Timer.OnTimer := OnTimer;
OnTimer(Self);
// Показываем окно как модальное
case ShowModal of
ID_OK: ;
end;
finally
// Освобождаем переменные
Timer.Free;
Free;
end;
end;
end;
end.