Stringgrid farbe bei Selektion



  • Hallo zusammen,

    wie kann man denn im Stringgrid bei der Selektion die Farbe ändern bzw. die Hintergrundfarbe der Zelle geändert lassen?

    Denn ich bekomme es nicht hin, dass die Hintergrundfarbe der Zelle geändert bleibt.

    Nur so weit hab eich es geschafft, dass bei der markierung die Hintergrundfarbe sich ändert.

    void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow,
    			TRect &Rect, TGridDrawState State)
    {
    
    	if(State.Contains(gdSelected)) {
    
    			if(StringGrid1->Color == clWhite) {
    				StringGrid1->Canvas->Brush->Color = clNavy;
    				StringGrid1->Canvas->FillRect(Rect);
    			}
    
    	}
    
    }
    

    Vielen Dank im Voraus für die Hilfe.

    gruß anno



  • Hallo

    Zunächst einmal gehört das ins Builder-Forum.

    So ganz versteh ich deineProblem nicht. Du hast doch schon den Code zum Einfärben bei Auswahl. Den Hintergrund für die nichtausgefüllten Zellen kannst du doch genauso ändern

    void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol, int ARow,
                TRect &Rect, TGridDrawState State)
    {
      if(State.Contains(gdSelected)) 
      {
        StringGrid1->Canvas->Brush->Color = clNavy;
      }
      else
      {
        StringGrid1->Canvas->Brush->Color = // Hier Farbe für nicht ausgewählte Zellen zuweisen;
      }
      StringGrid1->Canvas->FillRect(Rect);
    }
    

    Du must daran denken das "ausgewählt" für das Grid immer nur genau eine Zelle ist. Wählt der user eine andere Zelle aus verliert die alte Zelle den "ausgewählt" Status. Du must zusätzliche Zustände für die Zellen auch gesondert in ein manuelles Member-Array zwischenspeichern, das du dann in jedem OnDraw-Event für die zu bearbeitende Zelle auswertest.

    bis bald
    akari



  • und wie amche ich das mit dem member-array?



  • Hallo

    Wie mit jedem andern Member-array auch (vorzugsweise ein dynamisches wie std::vector, wenn du zur Laufzeit veränderliche Spalten/Zeilenanzahl hast). Nur das du es bereits im Header des Forms in den private-Teil der Form-Klasse deklarierst.

    bis bald
    akari



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL (C++ Builder) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Wer Lust hat kann sich ja mal diese StringGridvariante von mir anschauen. Da kann man unter anderem Zellfarbe, Selektionsfarbe, Schriftart u.a. für jede Zelle einstellen.
    ftp://web359f3:gast01@net-server13.de/BCB2007/HFGrids.zip


Anmelden zum Antworten