MessageDlg automatisch schließen |
|
| System | Win9x, WinNT, Win2000, WinXP, Vista, Win7 |
|---|---|
| Ab Delphi-Version | Delphi 1 |
| Letzte Änderung | 28.09.2010 |
Über einen Message-Dialog werden meist Informationen, Fehlermeldungen oder Bestätigungen angezeigt. In manchen Fällen kann es sinnvoll sein, dass das Fenster automatisch nach einer gewissen Zeit geschlossen wird, wie es z.B. in ICQ der Fall ist.
Sie benötigen dazu einen Timer, der vorher über die Eigenschaft Enabled deaktiviert werden muss.
begin
Timer1.Enabled:=False;
if fCloseMess.Tag = mrNone then
fCloseMess.Close
else
fCloseMess.Modalresult:=fCloseMess.Tag;
end;
function TForm1.TimeMessage(const Msg: string; const DlgType: TMsgDlgType;
const Buttons: TMsgDlgButtons; const CloseTime, DefaultResult: Integer): Integer;
begin
Result:=DefaultResult;
Timer1.Interval:=CloseTime;
fCloseMess:=CreateMessageDialog(Msg, DlgType, Buttons);
try
Timer1.Enabled:=True;
fCloseMess.Tag:=DefaultResult; //Setz den Standard-Rückgabewert
fCloseMess.Position:=poScreenCenter;
Result:=fCloseMess.ShowModal;
finally
Timer1.Enabled:=False;
fCloseMess.Free;
end;
end;
Die o.g. Funktion wird im Prinzip genauso aufgerufen, wie ein normaler Message-Dialog, nur das als vorletzter Parameter die Zeit in Millisekunden angegeben werden muss, wann der Dialog sich automatisch schließen soll. Der letzte Parameter gibt einen Default-Wert an, der im Falle einer automatischen Schließung zurückgegeben wird.
begin
if TimeMessage('Programm schließen?',mtConfirmation,[mbYes,mbNo], 5000, mrYes)=mrYes then
Close;
end;
Damit die Funktion lauffähig ist muss die Variable fCloseMess und die Funktion noch deklariert werden:
fCloseMess: TForm;
function TimeMessage(const Msg: string; const DlgType: TMsgDlgType;
const Buttons: TMsgDlgButtons; const CloseTime, DefaultResult: Integer): Integer;