AGB  ·  Datenschutz  ·  Impressum  







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

StringGrid: Zellen-Farbe bei Click ändern

Ein Thema von Helmi · begonnen am 28. Jan 2007 · letzter Beitrag vom 29. Jan 2007
Antwort Antwort
Seite 3 von 3     123   
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#21

Re: StringGrid: Zellen-Farbe bei Click ändern

  Alt 29. Jan 2007, 09:25
Zitat von Helmi:
...ich stell mit dem StringGrid nichts anderes an, als dass ich auf leere Zellen klicke und diese farbig markiere.
Kein Text, kein sonstiges
Du brauchst also nur eine einzige Eigenschaft pro Zelle und das ist die Farbe ? Na dann schreibe die doch gleich in die Zelle und werte sie aus. Also : Zelle besteht z.B. aus dem Text 'clRed'. Anhand dieses Strings wird im OnDrawCell die Zelle neu mit dieser Farbe gezeichnet. Ist das gezeichnete Rect so groß wie die Zelle, dann ist von dem String 'clRed' nichts mehr zu sehen und fertig ist. Viele Wege führen nach Rom.
Gruß
Hansa
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#22

Re: StringGrid: Zellen-Farbe bei Click ändern

  Alt 29. Jan 2007, 10:39
Hallo,

kein Zweifel - alle beschriebenen Wege führen in die italienische Hauptstadt, aber wenn man weiß wie ein StringGrid intern arbeitet, dann möchte man keine Farbnamen in den Zellen speichern. Aus dem gleichen Grund würde ich wohl auch die Objects[] nicht für eine Farbkodierung verwenden wollen. Man quält den Speicherverwalter, wenn man eine sparse matrix wie ein fest dimensioniertes Array benutzt. Wenn es nur um interaktive Farbkodierung geht, würde ich in Abhängigkeit von der Zustandsanzahl einen linearen BitVector oder ein korrelierendes zweidimensionales Array of Byte einsetzen. Ich habe mal für den letzteren Fall eine Demo angehängt. Idealerweise nimmt man ein statisches Array, aber ich habe im Beispielcode ein dynamisches Array implementiert. Die Umstellung sollte leicht fallen, da die Initialisierung dann einfach per ZeroMemory() erfolgen kann.

Grüße vom marabu
Angehängte Dateien
Dateityp: zip colorgrid_787.zip (1,9 KB, 38x aufgerufen)
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#23

Re: StringGrid: Zellen-Farbe bei Click ändern

  Alt 29. Jan 2007, 11:24
Marabu, das wäre der dritte Weg. Aber das ist nicht der goldene Mittelweg. Unabhängig vom Grid noch ein Array mitschleppen. Es geht aber noch mehr. Wie wäre es mit INI usw. ? 8) Beim Array ist schlecht, dass es ohne weiteres so nicht geht, sofern das Grid nicht starr ist. Schachbrett könnte man so behandeln, aber wehe RowCount etc. ändert sich. Es wäre schwierig das Grid und das Array synchron zu halten. Diese Hürde fällt bei den Objects einfach weg.

Sollte das Grid nur Farben behandeln können und ist es auch noch starr, dann würde ich aber wirklich die Farben im Klartext in die Zellen schreiben. Zu sehen ist davon nämlich absolut nichts.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Helmi
Helmi

Registriert seit: 29. Dez 2003
Ort: Erding, Republik Bayern
3.325 Beiträge
 
Delphi XE2 Professional
 
#24

Re: StringGrid: Zellen-Farbe bei Click ändern

  Alt 29. Jan 2007, 16:31
Hallo Jungs,

danke für eure Vorschläge.

ich bin aber jetzt auf der Schiene mit den Objects geblieben und hab es etwas ausgebaut - nachdem ich dahinter gekommen bin, wie es funktioniert.

Anbei ein Test-Projekt. Wie gesagt - es ist ein Test-Projekt - deswegen die Standard-Bezeichnungen der Komponenten und ohne Kommentare. (Ich mach gerne Testprojekte um dann die Erkenntnisse daraus ins eigentliche Projekt zu übernehmen)

Damit schlag ich 2 Fliegen mit einer Klappe.
1. das Ändern mit der Farbe (die Frage dieses Threads)
2. die Frage auf das Feststellen einer Zellenfarbe (von diesem Thread)
mfg
Helmi

>> Theorie ist Wissen, dass nicht funktioniert - Praxis ist, wenn alles funktioniert und keiner weiss warum! <<
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 20:00 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