Fortschrittsdialog in einer VCL Anwendung
-
Hallo,
ich brauch für mein aktuelles Projekt eine Fenster, welches dem Bediener informiert, das ein Hintergrundprozess läuft. (TForm mit Bildchen etc.)
Das Fenster soll nicht per Mausklick sondern vom Programm beendet werden, sobald eine bestimmte Aktion fertig ist.Hat schon mal jemand so etwas programmiert bzw. weiß jemand wo es dafür ein Code-Snipplet gibt?
Grüssle
BuilderDash
-
Hallo,
erstelle doch einfach ein Form, die du (wenn nötig modal) aufrufst und nach deiner Aktion mit Close() wieder schließt.
-
Hallo,
schau doch mal hier rein
http://www.bytesandmore.de/rad/cpp/snipp/sc06013.php
-
*ups* An ein einfaches Close() hatte ich jetzt gar nicht gedacht, siehe gerade dass ich bisher nur modale Formulare in der Anwendung hatte..
Das heisst das ist es schon??
TFProgress *Form = new TFProgress(this);
Form->AlphaBlend = true;
Form->AlphaBlendValue = 180;Form->Show();
Sleep(3000); // bzw Hintergrundaktion durchführen
Form->Close();delete Form;
Form = NULL;
-
Vielen Dank für die beiden Tipps, das Code-Snipplet passt sehr gut, jetzt funzt es...
-
BuilderDash schrieb:
Form->Show();
Sleep(3000); // bzw Hintergrundaktion durchführen
Form->Close();Ich benutze Sleep nicht, aber dies sollte imho den aktuellen Thread für 3 Sekunden komplett lahm legen, und da du wahrscheinlich nur einen Thread für dein Programm benutzt, kann es währenddessen überhaupt keine Aktion durchführen.
-
Hallo
Ich glaube schon das BuilderDash das Sleep nur als Payload-Platzhalter zum Testen verwendet hat.
bis bald
akari
-
Sleep war nur ein Platzhalter, Refresh() sollte man noch vor dem starten des Prozesses aufrufen. So funktioniert es:
...
TFProgressNew *Form = new TFProgressNew(this);Form->AlphaBlend = true;
Form->AlphaBlendValue = 220;
Form->Position = poScreenCenter;
Form->BorderStyle = bsNone;
Form->FormStyle = fsStayOnTop;Form->Show();
Form->Refresh();retCode= CreateProzess( batch.c_str(), timeoutSec);
Form->Close();
delete Form;
Form = NULL;
-
Hallo,
wenn du anstelle von Show(), ShowModal() verwendest kannst du dir Form->FormStyle = fsStayOnTop; sparen.
LG