AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi Vom Programmablauf abhängig schließende Meldungsbox
Thema durchsuchen
Ansicht
Themen-Optionen

Vom Programmablauf abhängig schließende Meldungsbox

Ein Thema von Delphi-Laie · begonnen am 6. Nov 2008 · letzter Beitrag vom 6. Nov 2008
Antwort Antwort
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
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Vom Programmablauf abhängig schließende Meldungsbox

  Alt 6. Nov 2008, 20:34
Auch wenn du keine Frage gestellt hast :
Ich würde das ganze mit einer Statusbar lösen. Dort könntest du einfach den aktuellen Zustand anzeigen (evtl. mit so Pünktchen, damit man weiß das es voran geht...).
Jan
  Mit Zitat antworten Zitat
Delphi-Laie

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

Re: Vom Programmablauf abhängig schließende Meldungsbox

  Alt 6. Nov 2008, 21:04
Danke, gute Idee, die ich noch nicht kannte.

In dem Programm, in dem ich das verwende, ist allerdings der Anteil der schon erfolgen Abarbeitung nicht zwischenzeitlich quantifizierbar, denn es ist eine Enumeration einer vorab unbekannten Anzahl Objekte.
  Mit Zitat antworten Zitat
Benutzerbild von Mr_G
Mr_G

Registriert seit: 2. Sep 2004
Ort: Duisburg
468 Beiträge
 
Delphi 2006 Professional
 
#4

Re: Vom Programmablauf abhängig schließende Meldungsbox

  Alt 6. Nov 2008, 21:11
Zitat von Delphi-Laie:
In dem Programm, in dem ich das verwende, ist allerdings der Anteil der schon erfolgen Abarbeitung nicht zwischenzeitlich quantifizierbar, denn es ist eine Enumeration einer vorab unbekannten Anzahl Objekte.
Ich dachte eher an so eine "Pünktchen-Geschichte" damit man weiß, dass das Programm rechnet: . - .. - ... - usw.
Eine Sache die ich mir noch vorstellen könnte wäre ein Timer, sodass das Form mindestens x Sekunden offen bleibt oder ein Button der auftaucht/klickbar ist wenn du fertig bist (Im Label könnte/müsste das dann auch dann stehen). Ich finde aber genaugenommen beides eher suboptimal, da der Benutzer dabei bei seiner Arbeit unnötig "unterbrochen" wird.
Jan
  Mit Zitat antworten Zitat
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#5

Re: Vom Programmablauf abhängig schließende Meldungsbox

  Alt 6. Nov 2008, 21:44
Zitat von Delphi-Laie:
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.
Ich zitiere mal aus dem msdn:
Zitat:
Use this message when you do not know the amount of progress toward completion but wish to indicate that progress is being made.
oder zu Deutsch:
Zitat:
Benutzen Sie diese Nachricht, wenn sie den Fortschritt nicht wissen, aber deutlich machen wollen, dass Fortschritt gemacht wird.
Gefunden da: PBM_SETMARQUEE

Eine Progressbar mit Marqueestyle ist dazu also perfekt geeignet

Dazu am besten in der Statusleiste neben der Progressbar ein kleiner Text, und den Button disabeln und alles ist gut
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:12 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz