![]() |
Stringgrid färben und mit Text füllen
Hallo erstmal!
Hat eventuell jemand eine Idee, wie man eine Zelle färben und beschrriften kann? Bei mir flackert die betreffende Zelle dann nur zwischen beiden Zuständen hin und her. Bin für jegliche Hilfe dankbar, fredo |
Re: Stringgrid färben und mit Text füllen
Hai fredo1234,
ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS". Du musst dafür das Ereigniss ![]() Hier einmal ein Beispiel das alles erklären sollte ;-)
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: integer;
Rect: TRect; State: TGridDrawState); var celltext: string; begin with (Sender as TStringGrid) do begin celltext := Cells[ACol, ARow]; if (ACol = 1) and (ARow = 1) then // Nur für Celle 1:1 begin canvas.Brush.Color := clred; // Hintergrundfarbe canvas.Font.Color := clblue; // Schriftfarbe end; if (ARow = 3) then // Für die dritte Zeile begin canvas.Font.Style := canvas.Font.Style + [fsBold]; end; if (ACol = 2) then begin canvas.Brush.Color := clGreen; end; // Hier beginnt nun das Zeichnen: Canvas.FillRect(Rect); // Hintergrund zeichnen DrawText(Canvas.Handle, PChar(celltext), Length(celltext), Rect, DT_SINGLELINE); // Textausgeben // Optional kann der Text auch Zentriert werden. // dann mit diesem Parameter; // DT_SINGLELINE or DT_Center or DT_VCENTER end; end; |
Re: Stringgrid färben und mit Text füllen
Hmm, wird so aber nicht bei allen Zellen nach 1:1 die Schriftfarbe auch blau sein? Die wird ja nirgends zurück gesetzt.
Und aus dem gleichen Grund haben alle Zellen >= 2 doch auch nen grünen Hintergrund und >= 3 zusätzlich noch fette Schrift, oder? Oder wird das immer wieder nach dem Durchlauf der Prozedur durch Compilermagic alles zurückgesetzt? P.S.: Herzlich willkomen in der DP fredo1234! |
Re: Stringgrid färben und mit Text füllen
Danke dir, OnDrawCell kannte ich zwar schon, DrawText war mir allerdings unbekannt. Anscheinend handelt es sich um eine Funktion, man muss also eigentlich eine Variablenzuweisung machen,
Danke |
Re: Stringgrid färben und mit Text füllen
Zitat:
jo, es ist eine Funktion. Aber man muss das Ergebniss einer Funktion ja nicht auswerten ;-) Der Rückgabewert ist im PSDK so beschrieben: PSDK If the function succeeds, the return value is the height of the text in logical units. If DT_VCENTER or DT_BOTTOM is specified, the return value is the offset from lpRect->top to the bottom of the drawn text If the function fails, the return value is zero. @Thanatos81: Das von dir beschriebene Verhalten würde eintreten wenn ich die Color Eigenschaft des Fonts von dem Grid ändern würde. In diesem Fall werden die Werte für das Canvas aber immer neu gesetzt. Es passiert also genau das was man möchte ;-) |
Re: Stringgrid färben und mit Text füllen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:53 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