![]() |
Einzelne Zelle in DBGrid einfärben
Hallo!
Also kann ich und wenn ja kann mir jemand hilfestellung leisten? - Eine Zelle in einer DBGrid so einfärben als wäre es ein Fortschrittsbalken, sprich die länge des balkens bestimmend einfärben? |
AW: Einzelne Zelle in DBGrid einfärben
Wie man einzelne Zellen zeichnet wird hier überall, an bestimmt jeder 10 Ecke erklärt.
Und was du dort reinzeichnest ist vollkommen egal. Egal ob ein ausgemaltes Rechteck, wie in vielen Demos/Threads, oder was Anspruchvolleres, wie deinen Balken. Für Letzteres gibt es genügend Tutorials, zur Nutzung des Canvas. |
AW: Einzelne Zelle in DBGrid einfärben
Hmm Suche=vergebens ich habe nichts gefunden oder suche halt falsch -.-
|
AW: Einzelne Zelle in DBGrid einfärben
[DP]DBGrid färben[/DP], damit findet man nichts? Das mag ich nicht glauben.
|
AW: Einzelne Zelle in DBGrid einfärben
Ja das mit dem Färben bekomm ich hin aber das ich in einer Zelle ein Rechteck zeichnen möchte und das einfärben möchte -.-
|
AW: Einzelne Zelle in DBGrid einfärben
Wie zeichnest Du denn sonst ein Rechteck?
|
AW: Einzelne Zelle in DBGrid einfärben
Ja mit DBGrid1.Canvas.Rectangle(x,x,x,x)
Jedoch möchte ich das er mir in die zweite Spalte, erste zeile diesen balken hinzeichnet oder 3te spalte... und das es genau hineinpasst -.- |
AW: Einzelne Zelle in DBGrid einfärben
Hast Du Dir die Parameter von OnDrawColumnCell einmal genau angeschaut? Die Spalte und das Rechteck der aktuellen Zelle werden Dir doch übergeben.
|
AW: Einzelne Zelle in DBGrid einfärben
Jap die hab ich mir angesehn ich kann da nur mit Rect. Left, Right, Bottom usw.. was machen aber das ich sage es soll in der zweiten Spalte das Rechteck genau so breit werden das check ich nicht -.- bin da in sachen Draw ziemlich ein anfänger -.-
|
AW: Einzelne Zelle in DBGrid einfärben
Na gut, hier ein Beispiel:
Delphi-Quellcode:
Damit wird die Spalte, die das Feld "ObjectId" darstellt, mit Rot ausgefüllt.
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState); begin TDBGrid(Sender).DefaultDrawColumnCell(Rect, DataCol, Column, State); if Column.FieldName = 'ObjectId' then begin TDBGrid(Sender).Canvas.Brush.Color := clRed; TDBGrid(Sender).Canvas.RectAngle(Rect); end; end; |
AW: Einzelne Zelle in DBGrid einfärben
Danke aber wie kann ich nur eine gewisse länge einfärben?
|
AW: Einzelne Zelle in DBGrid einfärben
Noch' n Gedicht:
Delphi-Quellcode:
uses Types; //für Rect-Funktion benötigt
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var R: TRect; Gr: TDBGrid; RdPercent: integer; begin Gr := Sender as TDBGrid; //Standard-Zeichnen ohne Berücksichtigung von State Gr.DefaultDrawColumnCell(Rect, DataCol, Column, State); //Spalte "ObjectId" selbst zeichnen if Column.FieldName = 'ObjectId' then begin //roter Rahmen R := Rect; Gr.Canvas.Pen.Color := clRed; Gr.Canvas.Rectangle(R); //Zufallswert zwischen 0 und 100 als fiktive Prozentangabe RdPercent := Random(101); //Rechteck anhand des Zufallswertes neu definieren R := Types.Rect(R.Left, R.Top, R.Left + trunc((R.Right - R.Left) * (RdPercent / 100)), R.Bottom); //...und einfärben Gr.Canvas.Brush.Color := clRed; //Prozentangabe mittig ausgeben Gr.Canvas.Rectangle(R); Gr.Canvas.Brush.Style := bsClear; R := Rect; DrawText(Gr.Canvas.Handle, PChar(IntToStr(RdPercent) + '%'), -1, R, DT_CENTER or DT_VCENTER or DT_SINGLELINE); end; |
AW: Einzelne Zelle in DBGrid einfärben
Welche Uses muss ich für Types.Rect einbinden? Es wird nämlich nicht erkannt
|
AW: Einzelne Zelle in DBGrid einfärben
Schau mal in die allererste Zeile meines Beispiels, oder hieß die Unit unter Delphi 7 anders? Zur Not wirf halt einen Blick in die Hilfe.
|
AW: Einzelne Zelle in DBGrid einfärben
hmm immer wieder das genaue lesn! sry für die Frage -.-
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 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