![]() |
AW: Sichtbarkeit Werte in StringGridzelle
Ja aber was will er denn nun genua sehen? Die Werte werden doch im Debugger richtig angezeigt. Meint er eventuell visuell in seinem StringGrid während dem Debuggen? Das kann nicht funktionieren, da beim Debuggen die Anwendung pausiert wird/ist und damit auch keine Messages, etc. verarbeiten kann. Zur Anzeige der Werte im Grid müssen diverse Messages verarbeitet werden, Z.B. WM_PAINT, etc. Das geht erst wieder wenn die Anweundung im Messageloop ist oder man Applicaton.ProcessMessages im FOR Loop aufruft.
Folgender Code zeigt nach der Zeile mit ProcessMessages die Zahlen auch visuell im Grid an, da dadurch alle anstehenden Messages verarbeitet werden, die zur Anzeige der Cel-Werte im StringGrid ausgeführt werden müssen.
Delphi-Quellcode:
var
i: integer; begin StringGrid1.RowCount := 32; // 32 Zeilen, da du erst ab der 2. abfüllst. Die erste Zeile wäre 0. for i := 1 to 31 do // ab der 2. Zeile werden die folgenden 31 Zeilen der ersten Spalte abgefüllt begin StringGrid1.cells[0,i]:=IntToStr(i); Application.ProcessMessages; // Nach dieser Zeile wird der Wert im StringGrid angezeigt. end; end; |
AW: Sichtbarkeit Werte in StringGridzelle
Falls es nicht nur um die Anzeige während des Debuggens geht (wie in der letzten Antwort vermutet):
Es wäre gut, wenn du das einmal in einer neuen Anwendung ausprobieren würdest. Wenn es da auch nicht geht, häng bitte das Projekt an, damit wir uns das konkret anschauen können. |
AW: Sichtbarkeit Werte in StringGridzelle
Guten Abend liebe Mitstreiter,
vielen Dank für die Hilfen. Delphi.Narium hat erkannt was ich wissen möchte. Die Werte werden laut Debugger Fenster in die Zelle des StringGrids geschrieben aber sie sind dort nicht sichtbar. Auch wenn ich die For Schleife ohne Debugger Fenster vollständig durchlaufen lasse ist im StringGrid nur eine weiße Fläche zu sehen. Die Anweisung Application.ProcessMessages kennt die Anwendung nicht und es tritt ein Laufzeitfehler auf. Ich denke, ich muss im Objektinspektor des StringGrid ein oder mehrere Eigenschaften ändern, ich weiß nur nicht welche. Viele Grüße vesila |
AW: Sichtbarkeit Werte in StringGridzelle
Zitat:
Delphi-Quellcode:
procedure TForm280.Button1Click(Sender: TObject);
var i: Integer; begin StringGrid1.RowCount := 32; StringGrid1.ColCount := 1; for i := 1 to 31 do begin StringGrid1.Cells[0, i] := IntToStr(i); end; end; |
AW: Sichtbarkeit Werte in StringGridzelle
Dazu fallen mir folgende Fragen ein:
Arbeitest du mit "with"? In dem Fall könnte vielleicht ein anderes StringGrid angesprochen werden. Gibt es vielleicht ein StringGrid außerhalb des sichtbaren Bereichs, das du versehentlich mit den Werten füllst? Zur zweiten Frage: Falls du die Zellen selbst zeichnest (OnDrawCell), könnte dort ein Fehler vorliegen Zur dritten Frage: DefaultDrawing sollte True sein (Es sei denn, du zeichnest selbst). Passen Hintergrund- und Textfarbe zusammen? Falls beides gleich ist, wird man nichts sehen können (Color, FixedColor, Font.Color). Eventuell auch noch ParentColor und ParentFont prüfen. Ist der DrawingStyle auf gdsClassic? Alle anderen Einstellungen erfordern Anpassungen. Mehr fällt mir gerade nicht ein. |
AW: Sichtbarkeit Werte in StringGridzelle
Zitat:
|
AW: Sichtbarkeit Werte in StringGridzelle
Zitat:
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. Zitat:
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 |
AW: Sichtbarkeit Werte in StringGridzelle
Zitat:
2. Strg+c 3. Notepad.exe öffnen 4. Strg+v Das sollte die DFM Einstellungen des gitters wiedergben. Die Sache ist die , das man eigentlich nichts über ein Projekt sagen kann über das wir nichts wissen!!! Die Funktion Application.Processmessages kommt in der Unit "Forms" vor. Also wenn das Grid da auf dem Formular liegt sollte das gehen. Wenn du Application.Processmessages nicht kennst, muss ich annehmen dass du in jemand anderen sein Code etwas versuchst zu verstehen. Ist das so? Sobald du in Delphi im Debugger bist wird die Oberfläche des Programms nicht mehr durchgehend gerendered und du kannst dann halt auch nichts anzeigen lassen, Das ist nicht so wie im Browser, wo du den HTML code einfach aktualisieren kannst und der wird unabhängig vom Programm ablauf direkt angezeigt. |
AW: Sichtbarkeit Werte in StringGridzelle
Zitat:
|
AW: Sichtbarkeit Werte in StringGridzelle
Guten Abend liebe Mitstreiter,
dank eurer Unterstützung habe ich eine oder die Lösung gefunden. Ich war davon ausgegangen, das das StringGrid wie eine Exceltabelle funktioniert. Die eingetragenen Werte sind immer sichtbar. Werden die Werte händisch eingetragen, verhält sich das Grid auch so. Werden die Werte jedoch per Programm eingetragen, ist nichts zu sehen bis man die Repaint Methode aufruft, dann sind die Werte zu sehen. Dabei ist es egal ob die Methode in jedem Schleifendurchlauf aufgerufen wird oder nach der Schleife. Nochmals vielen Dank und ein schönes Wochenende. Viele Grüße vesila |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz