![]() |
Hintergrundfarbe einzelner Zellen im Stringgrid ändern.
Hallo,
wer kann mir erklären wie man wie man in mit der Anweisung 'OnGetCellColor' die Hintergrundfarbe einzelner Zellen im Stringgrid zur Laufzeit ändert. Wenn es möglich ist, bitte mit Beispiel. Danke im voraus. Oldmann |
Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.
Hallo und Willkommen in der DP, oldmann :dp:,
das Ereignis 'OnGetCellColor' kenne ich jetzt nicht, aber Du könntest mal in der DP-Suche nach ![]() |
Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.
|
Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.
Moin, Moin.
Auch von mir ein herzliches Willkommen! :hi: Ein OnGetCellColor() kennt das "normale" TStringGrid nicht. Offenbar arbeitest du mit einer anderen Komponente. Poste doch mal die Parameter, vermutlich werden wir dir dann helfen können. |
Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.
Hallo Ralph,
danke für Deine Antwort. Also zuerst einmal möchte ich sagen was vorhanden ist und was gemacht werden soll. Ich hab bisher Daten aus einer Datei in einem Stringgrid auf dem Bildschirm ausgegeben. Als Stringgrid habe ich die Komponente StringAlignGrid von Andreas Hörstemeier benutzt die sehr komfortabel ist und in der man jede einzelne Zelle mit einer beliebigen Farbe belegen kann. Nun habe ich eine andere Gridkomponente gefunden, die den Vorteil hat das man jede einzelne Spalte durch klick auf die oberste Zeile sortieren kann. Die Grid-Komponente stammt aus den Pie-Tools, die Adresse ist ![]() Ich wollte nun mein vorhandenes StringAligngrid von Andreas Hörstemeier auf die Pie-Stringgridkomponente umstellen. Das klappt auch soweit, doch leider gibt es hier keine Möglichkeit eine einzelne Zelle mit einer Hintergrundfarbe zu belegen (zumindest habe ich keine gefunden). Den Autor der Pie-Komponente konnte ich nicht erreichen. Ich muss aber bei einem bestimmten Wert in der Zeile, die erste Zelle der Zeile mit einer anderen Hintegrundfarbe markieren. Ich hoffe, das mir hier jemand weiterhelfen kann. Gruss Eberhard (Oldmann) |
Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.
Ich habe dort den Satz entdeckt:
Zitat:
|
Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.
Hallo Detlef,
danke für Deinen Hinweis. Leider kann ich mit dem Ereignis OnDrawOneCell so nichts anfangen. Soweit reichen leider meine Programmierkenntnisse nicht. Ein Beispiel konnte ich dazu nicht finden. Vielleicht kann mir jemand ein funktionelles Beispiel geben. Gruss Eberhard (Oldmann) |
Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.
Tachsche
Guckmal hier hab ich was für dich, dein StringGrid hat ein ereigniss OnDrawCell, da Kopierst du das rein Die Spaltenzahl erhöst du mal auf 12 und wenn du das gemacht hast, gib mal "ja" in eine Zelle ein, vorher natürlich die Farben setzen. viel spass damit
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); Var Celltext :string; Farbe: boolean; StC: TCanvas; begin StC := StringGrid1.Canvas; With (Sender As TStringGrid) do begin Textformat := DT_SINGLELINE; Celltext := Cells[ACol, ARow]; Farbe := True; //Text wird zentriert Textformat := Textformat Or DT_CENTER Or DT_VCENTER; if (ACol = 1) Or (ACol = 0) Then {//Zentrieren für spalten 1 und 0} begin StC.Font.Style := StC.Font.Style + [fsBold]; //Text fett end; if (ACol > 1) and (ACol < 11)then begin begin if LowerCase(Cells[ACol, ARow]) = 'Ja' then begin StC.Brush.Color := //Deine Zellenfarbe StC.Font.Color := // Deinen Zellen Schriftfarbe Canvas.Font.Style := StC.Font.Style + [fsBold]; //Text fett end; end begin if (Farbe) then begin //Zelle einfärben SetBkMode(StC.Handle, OPAQUE); StC.FillRect(Rect); end; //Abschliessend den Text zeichnen DrawText(StC.Handle, PChar(Celltext), Length(celltext), Rect, Textformat); end; end; |
Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.
Hallo,
das TStringAlignGrid hat in der mir bekannten Version doch dasda:
Delphi-Quellcode:
Damit dürfte die Zuweisung einer Farbe doch sehr einfach sein.
StringAlignGrid1.ColorCell[0,0] := clWindow;
Dazu gibt es noch
Delphi-Quellcode:
für die Schriftfarbe.
StringAlignGrid1.CellFont[0,0].Color := clRed;
Delphi-Quellcode:
Damit müsste doch fast jede beliebige Einfärbung sämtlicher Zellen möglich sein.
property ColorCell[ACol,ARow:longint]: TColor read GetColorCell write SetColorCell;
property ColorCol[ACol:longint]: TColor read GetColorCol write SetColorCol; property FixColorCol[ACol:longint]: TColor read GetFixColorCol write SetFixColorCol; property ColorRow[ARow:longint]: TColor read GetColorRow write SetColorRow; property FixColorRow[ARow:longint]: TColor read GetFixColorRow write SetFixColorRow; |
Re: Hintergrundfarbe einzelner Zellen im Stringgrid ändern.
Hallo,
danke für die Hinweise. Ich habe das ausprobiert. Die Variable 'Textformat' kannte das Programm nicht. Ich habe sie vom Typ Word deklariert. Dann ging es bis zur Zeile: Canvas.Font.Style := StC.Font.Style + [fsBold]; //Text fett Hier wird gemeckert: Inkompatible Typen: TColor und Procedure, untyped Pointer or untyped Parameter. Was muss ich hier ändern? Eine weitere Frage ist: Ich muss ja aus meinem Programmteil in dem ich meine Datei in das Stringgrid einlese beim auftreten eines bestimmten Wertes in die Procedure procedure Tform21.PieDataGrid1DrawCell(Sender: TObject; ACol, ARow: Integer; Rect: TRect; State: TGridDrawState); wechseln um die Cellfarbe zu ändern. Wie muss ich den Aufruf vornehmen und welche Variablen muss ich übergeben. Bitte ein Beispiel. Es tut mir Leid wenn ich Euch, mit solch für Euch sicher simplen Sachen, nerve. Gruß Eberhard (Oldmann) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:36 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz