AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Stringgrid färben und mit Text füllen

Ein Thema von fredo1234 · begonnen am 2. Sep 2005 · letzter Beitrag vom 2. Sep 2005
Antwort Antwort
fredo1234

Registriert seit: 2. Sep 2005
5 Beiträge
 
#1

Stringgrid färben und mit Text füllen

  Alt 2. Sep 2005, 10:28
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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#2

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

  Alt 2. Sep 2005, 10:33
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;
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#3

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

  Alt 2. Sep 2005, 11:26
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!
  Mit Zitat antworten Zitat
fredo1234

Registriert seit: 2. Sep 2005
5 Beiträge
 
#4

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

  Alt 2. Sep 2005, 11:46
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
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.252 Beiträge
 
Delphi 2006 Professional
 
#5

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

  Alt 2. Sep 2005, 16:18
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
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Thanatos81
(Gast)

n/a Beiträge
 
#6

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

  Alt 2. Sep 2005, 16:58
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!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:20 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