Einzelnen Beitrag anzeigen

Delphi-Laie

Registriert seit: 25. Nov 2005
1.474 Beiträge
 
Delphi 10.1 Berlin Starter
 
#1

Vom Programmablauf abhängig schließende Meldungsbox

  Alt 6. Nov 2008, 19:59
Hallo Delphianer!

Ihr alle kennt das Problem: Man startet ein Programm (oder im Verlaufe seines späteren Ablaufes), und es tut sich - scheinbar - nichts. Abgestürzt? Nein, es hat zu tun, ein Zustand, der irgendwann ein Ende hat, doch wenn man das nicht weiß, hat man weniger Geduld, darauf zu hoffen und zu warten.

Das Problem, eine Meldung wegklicken zu müssen, sonst geht es nicht weiter, läßt sich z.B. mit Luckis selbstschließenden Messageboxen lösen, jedoch wissen die nicht, wann es wirklich im Programmablauf weitergeht (sofern ich das richtig verstand, man muß ja eine "Lebensdauer" bis zur selbständigen Schließung angeben).

Ich habe mir folgende beispielhafte, individuell natürlich anpaßbare Lösung als ewiger Delphi-Laie selbst zusammengepfriemelt:

Delphi-Quellcode:
var Form:TForm;
  Label1:TLabel
.
.
.
Form:=TForm.Create(Application);
Form.Width:=112;
Form.Height:=25;
Form.Left:=(Screen.Width-Form.Width) div 2;
Form.Top:=(Screen.Height-Form.Height) div 2;
Form.BorderStyle:=bsNone;
Form.Color:=clFuchsia;
Label1:=TLabel.Create(Form);
Label1.parent:=Form;
Label1.Caption:='Bitte warten...';
Label1.Font.Height:=24;
Label1.Font.Color:=clYellow;
Form.FormStyle:=fsStayOnTop;
Form.show;
Form.Refresh;

{blabla zeitbeanspruchende Programmausführung}  
 
Form.Destroy
Wenn der Computer allerdings sehr schnell ist, dann kann es durchaus sein, daß das Meldungsfenster nur "aufblitzt" und trotz des kurzen Textes nicht (vollständig) gelesen werden kann, mithin Neugier weckt, die es nicht befriedigen kann. Dem kann man natürlich mit einem zusätzlichen Sleep abhelfen (z.B. 1000 ms) abhelfen, das verursacht natürlich aber auch unnötigen Verzug im Ablauf (auch wenn es nur 1 s ist). Den zeitbeanspruchenden Code und/oder dieses Meldungsfenster (erzeugen, bewahren und schließen) in (einen) einzelne(n) Thread(s) auszulagern, war mir dann aber doch zu sehr mit Kanonen auf Spatzen geschossen....
  Mit Zitat antworten Zitat