Einzelne Zellen in StringGrid färben
-
hallo.
ich möchte, wie schon in der überschrift steht, einzelne zellen eines StringGrids einzeln färben. Bei google finde ich immer nur lösungen für Delphi, deshalb frage ich jetzt einfach hier.
Mein versuch war:StringGrid1->Cells[1][1]->Color = clYellow;
aber so ganz hat das nicht funktioniert.
Wie geht das richtig?
greets
-
Hallo
Steht in der FAQ hier im Forum, im Abschnitt StringGrid.
bis bald
akari
-
hallo
alles klar, dann werd ich mich da mal umsehn.
vielen dank
-
hallo.
noch eine frage dazu:
wie löse ich das, wenn ich auf den inhalt der zellen reagieren möchte?
wenn zum beispiel jedes mal, wenn eine eins drin steht, die zelle rot werden sollen oder sowas?
greets
-
Hallo
Wenn du den genannten FAQ-Artikel gelesen und verstanden hast sollte das doch kein Problem sein. Dort werden ja auch je nach Bedingung verschiedene Farben zugewiesen.
bis bald
akari
-
hallo.
nun, mein problem ist das:
hier steht nix, was mit dem inhalt der zellen in bezug steht.
if (State.Contains(gdSelected)) { StringGrid1->Canvas->Brush->Color = clHighlight; StringGrid1->Canvas->Font->Color = clHighlightText; } // gerade Zeilen Dunkelgrau, aber nicht die feste(n) Zeile(n) oben else if (ARow % 2 && !State.Contains(gdFixed)) { StringGrid1->Canvas->Brush->Color = clGray; StringGrid1->Canvas->Font->Color = clWhite; } // gerade Spalten Hellgrau, aber nicht ... links else if (ACol % 2 && !State.Contains(gdFixed)) { StringGrid1->Canvas->Brush->Color = clSilver; StringGrid1->Canvas->Font->Color = clWhite; } // Zelle 2/2 Gelb else if (ACol == 2 && ARow == 2) { StringGrid1->Canvas->Brush->Color = clYellow; StringGrid1->Canvas->Font->Color = clBlack; }
das hat alles nur mit dem index der jeweiligen zellen zu tun.
kann ich den bezug zum inhalt so herstellen?
if (StringGrid1->Cells[ACol][ARow] = "text") { StringGrid1->Canvas->Brush->Color = clYellow; StringGrid1->Canvas->Font->Color = clRed; } else if (StingGrid1->Cells[ACol][ARow] = "andrer text") { StringGrid1->Canvas->Brush->Color = clBlue; StringGrid1->Canvas->Font->Color = clGreen; }
oder muss das ander gemacht werden?
-
Hallo
Probier das doch einfach mal aus...
Kleiner Tip : Reduzier erstmal die Bedingungen aus der FAQ auf das notwendige, das ist nämlich die Anzeige der Auswahl. Da hängst du nun deine Bedingung ran :if (State.Contains(gdSelected)) { StringGrid1->Canvas->Brush->Color = clHighlight; StringGrid1->Canvas->Font->Color = clHighlightText; } else { if (StringGrid1->Cells[ACol][ARow] = "text") { StringGrid1->Canvas->Brush->Color = clYellow; StringGrid1->Canvas->Font->Color = clRed; } else if (StingGrid1->Cells[ACol][ARow] = "andrer text") { StringGrid1->Canvas->Brush->Color = clBlue; StringGrid1->Canvas->Font->Color = clGreen; } else { // Standardfarbe für alle normalen Zellen } }
bis bald
akari
-
da ist noch ein Fehler drin: Vergleich oder Zuweisung?
-
hallo
@linnea: der fehler ist im programm schon behoben worden, nachdem ich den code übernommen habe
trotzdem danke für den hinweis