Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Delphi 5 + TDBGrid: Wie färbe ich Zellen?

Empfohlene Antworten

Veröffentlicht

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:

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

  • Autor

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

Originally posted by Pointerman

@JesterDay

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

Muss wohl daran liegen, dass ich schon lange kein Standart-Grid mehr verwendet hab ;)

Archiv

Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.