Einzelnen Beitrag anzeigen

Delphi.Narium

Registriert seit: 27. Nov 2017
2.519 Beiträge
 
Delphi 7 Professional
 
#17

AW: Sichtbarkeit Werte in StringGridzelle

  Alt 16. Jan 2025, 13:14
Anstatt in der Schleife die Variable i zu nutzen, wurde eine statische 1 verwendet.

Was jetzt so wer daran ist, diesen Fehler bei sich zu beheben .... keine Ahnung, es wurde ja nichts weiter zu gesagt.
Das ist ja eben nicht der Fehler. Der Fehler ist die mangelnde Sichtbarkeit der zugewiesenen Werte in Zelle [0,1].

Und es wird nicht das falsche StringGrid verwendet, da in den überwachten Ausdrücken der korrekte Wert im korrekten Stringgrid zu sehen ist.

Und da es sich (laut Profil) um Delphi 6 handelt, tendiert die Wahrscheinlichkeit, dass das Problem von irgendwem nachgestellt werden kann (leider) gegen Null.

Ich möchte mal nicht ausschließen, dass das StringGrid erst nach Beendigung der Routine mit all seinen "neuen" Inhalten neu gezeichnet wird und deshalb die Werte erst nach Abschluss der Routine sichtbar werden und noch nicht, wenn in der Routine im Debugger an einem Breakpoint gehalten wird.

Habe mal 'ne KI befragt, demnach gibt es in Delphi 6 beim Neuzeichnen eines StringGrid einen Bug, der genau dieses Problem verursachen könnte. Eine kleine Abwandlung der Routine könnte eventuelle hilfreich sein:
Delphi-Quellcode:
For i := 1 to 31 do
Begin
  StringGrid.cells[0,1] := IntToStr(i);
  StringGrid.Invalidate;
End; // hier den Breakpoint setzen.
Ich nehme mal an, dass bei diesem Konstrukt das Grid einfach nicht neu gezeichnet wird da innerhalb der Schleife keine Paint-Messages verarbeitet werden können.
Ja, genau das ist das Problem.

In der gegebenen Routine wird das StringGrid in Delphi 6 nicht automatisch neu gezeichnet, sodass die Werte nicht sofort sichtbar werden. Das liegt daran, dass Delphi aus Performancegründen nicht nach jeder Änderung ein Neuzeichnen auslöst
  Mit Zitat antworten Zitat