AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

stringGrid, einzelne Zelle neu zeichnen

Ein Thema von Tigger · begonnen am 30. Sep 2004 · letzter Beitrag vom 4. Okt 2004
Antwort Antwort
Seite 2 von 2     12   
grayfox

Registriert seit: 22. Jan 2003
Ort: Litschau
173 Beiträge
 
Delphi 4 Standard
 
#11

Re: stringGrid, einzelne Zelle neu zeichnen

  Alt 3. Okt 2004, 22:01
Code:
Jetzt habe ich es unter ganz bestimmten Voraussetzungen, daß
Zellen, die sich gar nicht geändert haben, neu gezeichnet und
so fälschlicherweise eingefärbt werden...
vermutlich stellst du die farbe nicht zurück, mit der du deine zellen einfärbst und somit wird sie auch für andere zellen übernommen.
probiers mit einer 'case-anweisung' in deiner DrawCell-routine, zb

Delphi-Quellcode:
case Grid.col of
  1,2,3: verwende diese farben
  2,4,6: verwende andere farben
usw....
ohne dazugehörigen quellcode wird die lösung deines problemes zur stecknadelsuche_im_heuhaufen

mfg, stefan
  Mit Zitat antworten Zitat
Benutzerbild von Tigger
Tigger

Registriert seit: 22. Sep 2004
Ort: Wedel
25 Beiträge
 
Delphi 7 Enterprise
 
#12

Re: stringGrid, einzelne Zelle neu zeichnen

  Alt 4. Okt 2004, 02:02
Mit dem Quellcode ist das nicht so einfach, da meine unit ca.
600 Zeilen Code umfaßt. Dabei habe ich diverse Routinen, die
Zellen neu belegen und ein Update auslösen, deswegen kann ich
nicht genau eingrenzen, woran es lag.

Wenn ich OnDrawCell mit stringGrid.Update anstoße, werden aber
offensichtlich nur die Zellen neu gezeichnet, die sich auch
tatsächlich geändert haben und nicht alle sichtbaren.

Habe es ähnlich gelöst, wie in deinem Vorschlag. Kann nur leider
nicht mit den Cols arbeiten, da sich immer an anderer Stelle Zeichen
ändern und nur diese andersfarbig werden sollen.

Code:
procedure Tfrm_simulation.sg_simulationDrawCell(Sender: TObject; ACol,
  ARow: Integer; Rect: TRect; State: TGridDrawState);
begin
  //geaendertes Zeichen wird farbig gekennzeichnet
  if flagZeichenAendern then
  with sg_simulation.Canvas do
  begin
      //brush.color:=clfuchsia; //Hintergrundfarbe
      //fillrect(rect); //Hintergrund neu fuellen
      Font.Color := clRed; //Schriftfarbe
      Textout(Rect.Left + 2, Rect.Top + 2, sg_simulation.Cells[ACol, ARow]);
  end; //if
end; OnDrawCell
Wie gesagt, durch ein Umstellen der Zeilen bzw. einzelnen Aufrufe (oder
was auch immer ich sonst jetzt anders mache), erziele ich inzwischen das
gewünschte Ergebnis.

Du brauchst also erstmal nicht weiter nach der Nadel suchen .

Gute Nacht, Tigger
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz