Wie kann ich die Farbe von eine Zelle des StringGrids in eine andere Zelle kopieren



  • Hallo,
    Könnten Sie mich bitte informieren. Wie kann ich die Farbe von eine Zelle des StringGrids in eine andere Zelle kopieren?

    z.B
    Meiner Meinung nach, wenn ich die Farbe von StringGrid->Cells[0][1] in die Zelle StringGrid->Cells[0][0] kopieren möchte, dann folgende Code sollte funktionieren. Aber ich bekomme Fehler, wenn führe folgende code in „StringGrid1DrawCell“ Funktion durch.

    StringGrid1->Canvas->Brush->Color = (StringGrid1 +1)->Canvas->Brush->Color;
    

    Vielen Dank



  • Das StringGrid hat keine Informationen über die Farben einzelner Zellen, d.h. man kann Zellen nicht individuell einfärben.
    Du kannst stattdessen TDrawGrid benutzen, musst dann aber den Zelleninhalt selbst einzeichnen.



  • @DocShoe vielen dank für deine schnell Antwort.

    Ja, du hast recht, deswegen benutze ich "StringGrid1DrawCell" Handler des "OnDrawCell" signals Zellen inhalt selbst einzeichnen.

    Aber ob es nicht möglich ist, dass ich die Farbe von einer Zelle des StringGrids in eine andere Zelle in "StringGrid1DrawCell" Handler kopieren kann ?

    zum Beispiel, wenn ich die oberste Zeile des StringGrids löschen will , dann muss ich selber die einzelnen Zeilen inklusiv die Farbe der Zelle umkopieren.

    Bitte informierst du mich, wenn du weitere Informationen benötigst.



  • Wie bestimmst du denn, in welcher Farbe die Zelle gezeichnet wird? Diese Information mußt du ja irgendwie als externe Daten haben und mußt entsprechend beim Löschen oder Einfügen von Zeilen diese dann entsprechend verändern.
    Zeige am besten mal den entsprechenden Codeausschnitt.



  • Ich glaube, du hast da noch ein Verstädnisproble, was den Canvas angeht:
    Der Canvas ist die Zeichenfläche des ganzen StringGrids, nicht einer einzelnen Zelle. Deshalb bekommst du als Parameter im Callback das Rechteck, das die zu zeichnende Zelle einnimmt. Der Callback sagt dir also, dass du bitte einen durch den TRect bestimmten Teilbereich der Zeichenfläche malen sollst.



  • Vielen Dank @DocShoe und @Th69 für deine Antwort.

    Ich habe diese Problem gelöst. Wie @Th69 gesagt, jetzt speichere ich die Informationen der Farbe in einem externe Array, und benutze entsprechend beim Löschen oder Einfügen von Zeilen in StringGrid.


Anmelden zum Antworten