Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo!

Weiß jemand wie ich in einem TDBGrid einzelne Zeilen oder Zellen einfärben kann? Ganze Spalten bringen es nicht. Ein anderes Grid kommt, glaube ich auch nicht in Frage, weil schon zuviel Code dranängt. Wenn jemand ein tolles(kostenfreies) Grid kennt, das von TDBGrid abstammt und deshalb zu meinem Prog kompatibel ist kann sich auch zu Wort melden!

Danke im Voraus

Maart:confused:

Geschrieben

Das kannst du selber machen, benutz einfach das OnCustomDrawCell Event. Du bekommst ein Canvas und den Text der rein soll übergeben (wenn ich mich recht erinnere) und musst alles selbst zeichen. ungefähr so (aus dem Kopf):


Canvas.Brush.color:= clRed;

Canvas.Font.color:= clWhite;

Canvas.FloodFill(ARect); {Wird soweit ich mich 

erinnere auch übergeben}

Canvas.Textout(AText, X, Y); { AText ist der Text 

der rein soll (wird übergeben) und X, Y, die Koordinaten}

ADone:= True; { Dem Grid sagen, das diese Zelle 

schon fertig ist, sonst zeichenet das Grid die Zelle 

nochmal}

So ungefähr müsste es funktionieren.

eine andere Möglichkeit gibt es nicht einzelne Zellen oder Reihen zu färben

Geschrieben

@JesterDay

Danke, im Großen und Ganzen kam das schon einigermaßen hin. Ich hab es jetzt endlich!

Für alle die es interessiert:

Event: OnDrawColumnCell

Wie JesterDay sagte: man bekommt Rect übergeben und kann damit FloodFill(Rect)

ausführen. Ein Canvas (Tja, der kann was:D ) bekommt man nicht, aber ich hab einfach den vom Grid genommen. Ach, was soll das Geschwafel, hier ist der Code:


procedure TReiheFrm.OriginalGrdDrawColumnCell(Sender: TObject;

  const Rect: TRect; DataCol: Integer; Column: TColumn;

  State: TGridDrawState);

begin

   OriginalGrd.Canvas.Brush.Color := clred;

  if OriginalGrd.Columns[0].Field.AsInteger = 5 then

  begin

    OriginalGrd.Canvas.FillRect(Rect);

    if DataCol = 0

    then Originalgrd.Canvas.TextOut(Rect.Left, rect.Top, OriginalGrd.Columns[0].Field.AsString)

    else Originalgrd.Canvas.TextOut(Rect.Left, rect.Top, OriginalGrd.Columns[1].Field.AsString);

  end;

Ist zwar nicht alles so sauber, aber es funzt für meine düsteren Zwecke! ;)

Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde Dich hier an.

Jetzt anmelden

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...