Hallo,
Mein Programm führt eine langwierige Berechnung aus, so dass ich zwischendurch mal zu einer anderen Anwendung wechseln möchte. Gehe ich zu meinem Programm zurück, sind alle TForm leer und weiß, und werden erst nach Ende der Berechnung neu gezeichnet. Ich möchte aber sofort etwas sehen, z.B. inzwischen in einem TMemo erschienene Zwischenergebnisse.
Die Ereignisbehandlung des Zurückwechselns zu meinem Programm ist mir klar:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22:
| type TMainForm = class(TForm) ... procedure MyApplicationOnActivate(ASender: TObject); ... end;
TMainForm.MainFormOnCreate(Sender: TObject); begin ... Application.OnActivate:= MyApplicationOnActivate; ... end;
procedure TMainForm.MyApplicationOnActivate(Sender: TObject); begin MainForm.Invalidate; MainForm.Refresh; MainForm.Repaint; MainForm.Update; Application.ProcessMessages; end; |
In TMainForm.MyApplicationOnActivate komme ich auch korrekt, wie mir ein Breakpoint an dieser Stelle zeigt. Aber keiner von den probierten Befehlen hat eine sofortige Wirkung???
Zusatzfrage: Mein Programm hat etliche TForm, von denen gerade beliebige offen sein könnten. Gibt es eine Möglichkeit, alle offenen TForm auf einen Schlag neu zu zeichnen, ohne sie alle namentlich in TMainForm.MyApplicationOnActivate aufzuzählen?
Für Tipps wäre ich sehr dankbar.
Moderiert von
Narses: Delphi-Tags hinzugefügtModeriert von
Narses: Topic aus Delphi Language (Object-Pascal) / CLX verschoben am Di 15.01.2013 um 10:37