Hallo Flogo,
mit
TWinControl.Update kannst Du tatsächlich den Inhalt eines Controls neuzeichnen lassen, ohne die anstehenden Nachrichten verarbeiten zu lassen (
TApplication.ProcessMessages).
Du konntest nun hinter jeweils einer Zeile im Code einen entsprechenden Aufruf machen
Delphi-Quellcode:
Label1.Caption:= 'a caption';
Update;
Label1.Caption:= 'another caption';
Update;
Nach dem "Überschreiten" eines Aufrufs von
Update würde dann auch im Einzelschrittmodus das Fenster neugezeichnet werden. Dieses Vorgehen hat den Haken, dass Du Deinen tatsächlichen Code veränderst und diese Änderung nach dem Debuggen rückgängig machen solltest...
Stattdessen kannst Du einen Debugger-Trick anwenden: Mit <Strg>+<F5> kannst Du Ausdrücke überwachen lassen, also zB
Label1.Caption. Dieser Ausdruck wird dann nach jeder Programmzeile ausgewertet und angezeigt. Über einfache Variablen/Referenzen und Properties hinaus hat man jedoch auch die Möglichkeit, Funktionsergebnisse abzufragen, zB
Abs(3-StrToInt(Label1.Caption)). Hierzu muss man lediglich den Haken "Funktionsaufrufe gestatten" zu dem überwachten Ausdruck setzen.
Der Trick besteht nun darin, den Rückgabewert von
Self.Update auswerten zu lassen. Zwar wird als Ergebnis angezeigt: "(kein Wert)", tatsächlich wird die Methode aber nach jedem Programmschritt aufgerufen, was den besagten Nebeneffekt hat, dass das Fenster (
Self) neugezeichnet wird.
Diese Technik kann auch prima verwendet werden, wenn man sich in Endlosschleifen der Form
Delphi-Quellcode:
while not myResultSet.EOF do
begin
SomeAction(myResultSet);
//forgotten to call myResultSet.Next;
end;
"sauber" zu beenden, indem man den Ausdruck
myResultSet.Last "überwacht"