Entwickler-Ecke
Dateizugriff - Weißes Fenster nach ALT-TAB :(
Addi - Di 08.07.03 12:38
Titel: Weißes Fenster nach ALT-TAB :(
Hallo!
Als Anfänger in DELPHI habe ich ein Problem welches sich sicherlich mit Eurer Hilfe lösen läßt.
Meine Anwendung - ein kleines Packprogramm - funktioniert zwar, doch wenn ich zB eine Datei mit ca 600 MB packen will und die Anwendung wird dabei kurz in den Hintergrund gesetzt und wieder nach vorne geholt, dann ist das ganze Fenster weiß und die Form wird erst wieder richtig angezeigt wenn die Anwendung fertig ist mit packen:(
Wie kann man das vermeiden?
Vielen Dank - vorallem bei Hilfe mit etwas Code.
cu Addi
Terra23 - Di 08.07.03 12:47
Ist dein PC vielleicht an seine Grenze gekommen oder deine Grafikkarte macht das nicht mit?
CenBells - Di 08.07.03 13:07
hallo,
dein packen läuft vermutlich in einer schleife.
Du musst in die Schleife mal application.processmessages; einsetzen, damit dein Formular wieder neu gezeichnet werden kann.
Gruß
Ken
Delete - Di 08.07.03 14:11
Überleg mal wie Windows Funktioniert. Windows arbeitet nachrichtenorientiert. Und wenn sich dein Fenster jetzt neu zeichenen muß, bekommt es von Windows eine Nachricht, diese holt dein Programm ab und zeichnet sich entsprechend neu.
So, wenn dein Programm jetzt am Packen ist, ist es beschäftigt und nicht in der Lage seine Nachrichten abzuholen geschweige denn zu verarbeiten. Ergo bleibt Windows nichts anderes übrig als den teil des Desktops weiß darzustellen, weil dein Programm nicht in der Lage ist sich zu aktualisieren und Windows natürlich nicht weiß, was es darstellen soll.
Eine Möglichkeit wäre, wenn deine Packroutine in einer Schelief liegt Application.Processmessages aufzurufen. Das sorgt dafür, dass dein Programm in die Nachrichtenschleife kuckt unmd eventuell anliegenden Nachrichten verarbeitet. Man sollte damit aber vorsichtig umgehen, da, wenn viele Nachrichten anliegen, die Performanz logischerweise leidet.
Besser wäre es, auch wenn deine Packroutine eine Schleife ist, das ganze in einen Thread auszulagern. Was anderes wird dir auch nicht übrigbleiben, wenn du eine DLL zum Packen benutzt und an den Pack-Code nicht dran kommst.
worm - Di 08.07.03 14:19
@Luckie: Falls man die Möglichkeit hat, den Code zu verändern und Application.ProcessMessages zu benutzen, hat dann das Auslagern in einen Thread demgegenüber noch irgendwelche Vorteile?
Delete - Di 08.07.03 14:32
Ja. Ich habe doch gesagt, wie Application.ProcessMessage funktioniert. Die Schleife wird doch jedes mal angehalten, weil dein Programm erst was anderes machen muß.
Addi - So 13.07.03 18:11
Wie schon erwähnt bin ich noch Laie und das mit Thread und so sagt mir nun nichts:(
Und Application.ProcessMessage habe ich schon versucht an verschiedenen Stellen doch das brachte kein Ergebniss.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!