[C++Builder] SringGrid; einzelne Zellen färben und markieren



  • Hallo zusammen,

    mein Problem:

    Ich habe eine StringGrid - Komponente. Ich möchte gerne den Effekt erzielen, dass ich einzelne Zellen markieren kann und diese dann eine bestimmte Farbe annehmen. Es werden 3 Spalten sein, in deren Zeilen Werte stehen werden.

    Dem Benutzer soll es nun nöglich sein, immer eine Zelle in einer Zeile zu markieren (und wenn sie markiert wird, soll die Zelle die vordefinierte Farbe annehmen!).

    was ich erreichen möchte:

    Es sollen verschiedene Zellen markiert werden könne und diese dann farbig hinterlegt; Später sollen die Werte in den markierten Zellen weiterverarbeitet werden.

    Ich danke euch für die hoffentlich kommenden Antworten.

    MFG



  • Hallo

    du brauchst wohl ein zusätzliches zweidimensionales (dynamisches) Bool-Array, in dem du den Ausgewählt-Zustand der einzelnen Zellen speicherst. Dann kannst im du OnDrawCell-Event des StringGrids die markierten Zellen extra mit deiner Farbe hinterlegen.

    bis bald
    akari



  • Wann genau wird denn das OnDrawCell - Event aufgerufen? Kommt es zu Einsatz, wenn ich eine Zelle markiere, oder gleich wenn die StringGrid - Komponente den Fokus bekommt?

    Ich würde es jetzt so machen:

    void __fastcall TForm1::StringGrid1DrawCell(TObject *Sender, int ACol,
          int ARow, TRect &Rect, TGridDrawState State)
    {
    
       StringGrid->Color = clBlack; //als Beispiel
       StringGrid->Cells[Col][Row]  = bekommt jetzt die Farbe aber wie ??
    
    }
    

    könnte das man so machen??



  • Hallo

    der OnDrawCell-Event wird immer ausgeführt, wenn eine Zelle gezeichnet werden soll.
    Am besten schaust du erstmal in der BCB-Hilfe zu diesem Event nach, da ist auch ein Beispiel drin. Und auch hier im Forum wurde schon viel zu diesem und ähnlichen Events geschrieben.

    bis bald
    akari


Anmelden zum Antworten