Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Stringgrid färben und mit Text füllen (https://www.delphipraxis.net/52717-stringgrid-faerben-und-mit-text-fuellen.html)

fredo1234 2. Sep 2005 09:28


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

Sharky 2. Sep 2005 09:33

Re: Stringgrid färben und mit Text füllen
 
Hai fredo1234,

ersteinmal: "Herzlich Willkommen in der Delphi-PRAXiS".

Du musst dafür das Ereigniss Delphi-Referenz durchsuchenOnDrawCell deines StringGrids verwenden.
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;

Thanatos81 2. Sep 2005 10:26

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!

fredo1234 2. Sep 2005 10:46

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

Sharky 2. Sep 2005 15:18

Re: Stringgrid färben und mit Text füllen
 
Zitat:

Zitat von fredo1234
... Anscheinend handelt es sich um eine Funktion, man muss also eigentlich eine Variablenzuweisung machen,
Danke

Hai,

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 ;-)

Thanatos81 2. Sep 2005 15:58

Re: Stringgrid färben und mit Text füllen
 
Zitat:

Zitat von Sharky
@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 ;-)

Und zwar weil du per "with Sender as" draufzugreifst, vermiute ich mal. DAS ist natürlich praktisch^^ Wieder was dazu gelernt, Danke schön!


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:31 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz