Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - ShowModal wird erst nach Schleifendurchlauf angezeigt
SuperCo - Di 21.07.09 14:19
Titel: ShowModal wird erst nach Schleifendurchlauf angezeigt
Hallo zusammen!
Ich habe eine Anwendung die verschieden Geräte ansteuert. Vor dem Programmstart soll geprüft werden ob das System dicht ist. Dazu wird ein Druck angelegt, eine Zeit gewartet, dann wird der Druck ausgelesen und die Differenz berechnet.
Dies Überprüfung möchte ich in einem eigenständigen Fenster laufen lassen, das mit ShowModal aufgerufen wird, da man während der Dichtheitsprüfung keine weiteren Aktionen machen darf.
Eigentlich habe ich das auch soweit hinbekommen, allerdings funktioniert die Anzeige nicht richtig. Während ich auf das erreichen des Soll-Drucks warte, möchte ich den aktuellen Druck in einem Label ausgeben. Dafür habe ich eine Schleife in der Form
repeat
holeDruck
aktualisiereLabel
until DruckOk
Das seltsame: Das Form wird erst angezeigt, wenn die Schleife erfüllt ist.
Ich wäre für jede Hilfe bzw. Idee dankbar.
tia
André
Moderiert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 21.07.2009 um 15:33
Delete - Di 21.07.09 14:23
Die Quick and Dirty-Lösung: innerhalb der Schleife Application.ProcessMessages aufrufen.
Die saubere Lösung: einen Thread verwenden und mit Synchronize das Neuzeichnen veranlassen.
SuperCo - Di 21.07.09 14:30
DeddyH hat folgendes geschrieben : |
| Die Quick and Dirty-Lösung: innerhalb der Schleife Application.ProcessMessages aufrufen. |
Das ist ja das was mich verwundert, Application.ProcessMassages wird in der Schleife aufgerufen.
Muss ich bei evtl. Aufrufen weiterer Schleifen in der Schleife das auch jeweils machen?
DeddyH hat folgendes geschrieben : |
| Die saubere Lösung: einen Thread verwenden und mit Synchronize das Neuzeichnen veranlassen. |
Hmm, mit Threads kenne ich mich leider nicht aus und ich bräuchte eine schnelle Lösung.
Danke auf alle Fälle schon mal für die Antwort!
Moderiert von
Narses: Überflüssige Zeilenumbrüche/Leerzeilen entfernt.
Nersgatt - Di 21.07.09 14:38
Wann wird die Schleife denn ausgeführt? Doch hoffentlich nicht im FormCreate des Modalen Forms, oder?
Narses - Di 21.07.09 14:39
Moin und :welcome: im Forum!
Kannst du mal den tatsächlichen Quelltext zeigen, mit dem zu das modale Formular öffnest und den Code, der im modalen Formular ausgeführt wird?
cu
Narses
jaenicke - Di 21.07.09 14:47
Du hast das vermutlich in OnShow geschrieben, da ist das Formular noch nicht angezeigt. Schreibe das einfach in OnActivate und deaktiviere danach OnActivate (z.B. indem du an OnActivate nil zuweist), damit es nicht erneut ausgeführt wird. Oder du schickst dir in OnShow eine Message, und machst das dann in der Botschaftsbehandlung.
SuperCo - Di 21.07.09 15:03
jaenicke hat folgendes geschrieben : |
| Du hast das vermutlich in OnShow geschrieben, da ist das Formular noch nicht angezeigt. Schreibe das einfach in OnActivate und deaktiviere danach OnActivate (z.B. indem du an OnActivate nil zuweist), damit es nicht erneut ausgeführt wird. Oder du schickst dir in OnShow eine Message, und machst das dann in der Botschaftsbehandlung. |
D A N K E !!!!!!!!
Genau das war's!
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!