Nachrichten können nicht bis Ihr Antrag bearbeitet werden, um eine Nachrichtenschleife wieder eintritt, so wird jeder Versuch, ändern/aktualisieren Steuerzustand, der auf die Nachrichtenverarbeitung beruht innerhalb einer einzigen Sequenz von Code nicht funktionieren, das nicht der Fall ist "pumpen" Nachrichten.
Glücklicherweise ist die VCL steuert typischerweise ein Mittel zur Kraft liefern Neulackierung ohne Nachrichten gewartet verarbeitet wird, über die Update-Methode:
Button1.Enabled := False;
Button2.Enabled := False;
Button1.Update;
Button2.Update;
Dies funktioniert unabhängig von Form Neulackierung deaktivieren zu müssen. Das Formular wird nicht neu gezeichnet, bis Ihre Anwendung trotzdem in eine Nachrichtenschleife eintritt. Daher ist das Deaktivieren des Formularanstrichs und das erneute Aktivieren innerhalb einer einzigen Prozedur, die selbst keine Nachrichtenverarbeitung verursacht, Zeitverschwendung.
Dies ist möglicherweise nicht genau gleichzeitige Neulackierung der beiden Schaltflächen, aber wirklich gleichzeitige Malerei von zwei separaten Kontrolle ist unmöglich, ohne in Multithreaded GUI Malcode, die ich denke, weit über den Rahmen dieses Problems. Das Aufrufen von Update auf zwei Schaltflächen wird so ähnlich wie Sie es benötigen.
Klar ungetestet (funktioniert nicht und kompilieren nicht einmal) – Deltics
ich WM_SETREDRAW in mehreren Projekten verwenden, es funktioniert gut. Außerdem verwenden VCL-Komponenten, die Begin/EndUpdate() -Methoden verwenden, intern WM_SETREDRAW. –
Es hat in diesem Fall nicht funktioniert ... * 1) * FALSE und TRUE sind keine gültigen Parameter für SendMessage() [Integer erforderlich] * 2) * Nach dem Ändern der FALSE und TRUE-Parameter auf 0 bzw. 1, so dass es Kompiliert und funktioniert wie beabsichtigt Das Formular wird am Ende nicht neu gezeichnet - die Schaltflächen bleiben sichtbar "aktiviert", es sei denn/bis verdeckt und dadurch gezwungen, neu zu streichen * 3) * selbst wenn es funktioniert hätte, versuchen/endlich de rigeur * 4) * Auch wenn es funktioniert hätte, wäre es immer noch sinnlos gewesen, wenn man auf die Verarbeitung der Nachricht für das Gemälde angewiesen wäre. – Deltics