AGB  ·  Datenschutz  ·  Impressum  







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

DBGrid -> Zeilenkopf farblich ändern

Ein Thema von HolgerCW · begonnen am 10. Jan 2013 · letzter Beitrag vom 10. Jan 2013
Antwort Antwort
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#1

DBGrid -> Zeilenkopf farblich ändern

  Alt 10. Jan 2013, 09:05
Delphi-Version: 2006
Hallo zusammen,

ich weiß zwar wie man in einem DBGrid den Titel einer Spalte farblich ändert, aber wie geht das bei dem Zeilenkopf bzw. Zeilentitel ?

So habe ich es bei dem Titel gelöst:

DBGrid1.Columns[0].Title.Color := clsilver; Gruss

Holger
  Mit Zitat antworten Zitat
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.464 Beiträge
 
Delphi 12 Athens
 
#2

AW: DBGrid -> Zeilenkopf farblich ändern

  Alt 10. Jan 2013, 09:28
Was ist mit Zeilenkopf gemeint, die Zellen einer fixierten Spalte?

Die Hintergrundfarbe für alle fixierten Zeilen und Spalten mit DBGrid.FixedColor.
Ansonsten hilft für individuelle Einfärbung nur selber zeichnen.
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#3

AW: DBGrid -> Zeilenkopf farblich ändern

  Alt 10. Jan 2013, 11:10
Wie kann ich denn diese "fixierte Farbe" für die eine spezielle Zeile ändern ?

Mit DBGrid.FixedColor kann man ja nur die Farbe ALLER fixierten Zeilen und Spalten ändern.

Gruss

Holger
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.195 Beiträge
 
Delphi 10.4 Sydney
 
#4

AW: DBGrid -> Zeilenkopf farblich ändern

  Alt 10. Jan 2013, 11:41
Wie kann ich denn diese "fixierte Farbe" für die eine spezielle Zeile ändern ?
Wie eigentlich immer bei Grids: Selbst zeichnen im OnDraw(Cell?)-Event
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#5

AW: DBGrid -> Zeilenkopf farblich ändern

  Alt 10. Jan 2013, 11:43
Wie kann ich denn diese "fixierte Farbe" für die eine spezielle Zeile ändern?
Mit DBGrid.FixedColor kann man ja nur die Farbe ALLER fixierten Zeilen und Spalten ändern.
Wenn du nur in der fixierten Spalte (rechts) die Farbe für eine ganz bestimmte Zeile, also eine ganz bestimmte Zelle ändern möchtest, dann geht das mit OnDrawCell deiner StringGrid-Komponente. Diese Procedure wird vor dem Zeichnen des Stringgrids aufgerufen. Darin kannst du dann deine Bedingung (wenn z.B. eine bestimmte Zelle diesen oder jenen Wert aufweist) eingeben und die enstprechende Zelle mit einer anderen Farbe unterlegen.
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#6

AW: DBGrid -> Zeilenkopf farblich ändern

  Alt 10. Jan 2013, 11:45
Hallo,

habe so angefangen:

Delphi-Quellcode:
procedure TFOrm1.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin

 if (DataModule1.Query1['PLANUNGSTERMIN'] < Date) AND (Column.FieldName = 'PLANUNGSTERMIN') then
 begin

  DBGrid1.Canvas.Brush.Color := clyellow;
  DBGrid1.DefaultDrawColumnCell(Rect, DataCol, Column, State);

 end;

end;
So ändere ich die Farbe in einer Zelle, nur wie mache ich das mit der fixierten Zelle ganz links ?
  Mit Zitat antworten Zitat
HolgerCW

Registriert seit: 28. Nov 2006
Ort: Marl
1.207 Beiträge
 
Delphi XE7 Enterprise
 
#7

AW: DBGrid -> Zeilenkopf farblich ändern

  Alt 10. Jan 2013, 12:05
Lösung:
Delphi-Quellcode:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
 MyRect :TRect;
begin

if (DataModule1.Query1['PLANUNGSTERMIN'] < Date) then
 begin

  MyRect := Rect;

  DBGrid1.Canvas.Brush.Color := clred;
  DBGrid1.Canvas.Font.Color := clred;

  MyRect.Left := 1;
  MyRect.Right := 10;

  DBGrid1.DefaultDrawColumnCell(MyRect, DataCol, Column, State);

 end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#8

AW: DBGrid -> Zeilenkopf farblich ändern

  Alt 10. Jan 2013, 14:12
Lösung:
Delphi-Quellcode:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
 MyRect :TRect;
begin

if (DataModule1.Query1['PLANUNGSTERMIN'] < Date) then
 begin

  MyRect := Rect;

  DBGrid1.Canvas.Brush.Color := clred;
  DBGrid1.Canvas.Font.Color := clred;

  MyRect.Left := 1;
  MyRect.Right := 10;

  DBGrid1.DefaultDrawColumnCell(MyRect, DataCol, Column, State);

 end;
end;
Sieht für mich irgendwie falsch aus!

Der Event wird für jede Zelle im Grid aufgerufen, zeichnet aber immer nur zwischen Pixel 1 und 10 (macht also für jede Spalte immer wieder das gleiche, solange die Bedingung in der Zeile zutrifft), was übrigens spätestens bei geänderten Metriken für die FixedColumn zu einem Problem werden kann.

Leider gibt es keinen Event, der aufgerufen wird, wenn die FixedColumn gezeichnet wird. Insofern ist es schon ein akzeptabler WorkAround, den Event einer anderen Spalte heranzuziehen - die Betonung liegt aber da auf eine.

Die Breite der Indicator-Spalte steht übrigens in ColWidth[0].

Bei Brush.Color = clRed und Font.Color = clRed kann man auch gleich ein FillRect nehmen. Eventuell muss man das Rect dann vorher um 1 Pixel schrumpfen, um die Gitterlinien nicht zu übermalen.
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  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 04:34 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