AGB  ·  Datenschutz  ·  Impressum  







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

DBGrid formatieren - Abhängig vom Inhalt

Ein Thema von d6lpz · begonnen am 11. Jun 2008 · letzter Beitrag vom 11. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
d6lpz

Registriert seit: 26. Mär 2008
73 Beiträge
 
Delphi 6 Professional
 
#1

DBGrid formatieren - Abhängig vom Inhalt

  Alt 11. Jun 2008, 11:59
Hallo,

ich suche nach einer Möglichkeit die Zellen eines DBGrids entsprechend des Inhaltes zu formatieren.

Damit habe ich die aktuelle Zelle beeinflussen können:
Delphi-Quellcode:
procedure TMain.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
        dbgrid1.Canvas.Brush.Color :=clgreen;
end;
Damit habe ich das komplette Grid eingefärbt:
        dbgrid1.Color:=clRed; Was ich will ist in etwa sowas:
Delphi-Quellcode:
if (Field.AsString = 'R')then
begin
Background := clRed;
end
Hat jemand einen Tip für mich?
Oder geht das vielleicht mit der Standard DBGridKomponente garnicht??

Dirk
Cogito, ergo sum!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: DBGrid formatieren - Abhängig vom Inhalt

  Alt 11. Jun 2008, 12:05
Du müsst dafür sorgen, dass die Farbe wieder zurückgesetzt wird
Markus Kinzler
  Mit Zitat antworten Zitat
ADelf

Registriert seit: 9. Jun 2008
9 Beiträge
 
#3

Re: DBGrid formatieren - Abhängig vom Inhalt

  Alt 11. Jun 2008, 12:13
Hallo,

also ich mache das etwa so:

Delphi-Quellcode:
TForm.DBGridDrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);

begin
  With DBGrid do
   case Datasource.DataSet.FieldByName('STATUS').Value of
    1 :
       begin
        Canvas.Brush.Color:=clRed;
        DefaultDrawColumnCell(Rect,DataCol,Column,State);
       end;
    2 :
       begin
        Canvas.Brush.Color:=clLime;
        DefaultDrawColumnCell(Rect,DataCol,Column,State);
       end;
    3 :
       begin
        Canvas.Brush.Color:=clBlue;
        DefaultDrawColumnCell(Rect,DataCol,Column,State);
       end;
   end;
end;
Ich frage quasi bei jeder Zelle, welchen Wert das Feld hat, nach dem ich mich bei der Formatierung richten will.

Grüße
wir leben mit dem paradoxon, in fehlerhaften systemen fehlerfreie systeme schaffen zu wollen...
  Mit Zitat antworten Zitat
d6lpz

Registriert seit: 26. Mär 2008
73 Beiträge
 
Delphi 6 Professional
 
#4

Re: DBGrid formatieren - Abhängig vom Inhalt

  Alt 11. Jun 2008, 13:30
Hallo,
vielen Dank für deine Hinweise, die haben mir schon ein Stück weiter geholfen - allerdings funktioniert es noch nicht ganz richtig.
Ich habe jetzt folgendes:
Delphi-Quellcode:
procedure TMain.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin

        With DBGrid1 do
                if DataModule1.CrossQry_Month.FieldByName('1').Value = 'Hthen
                begin
                        Canvas.Brush.Color:=clRed;
                        DefaultDrawColumnCell(Rect,DataCol,Column,State);
                end
                else if DataModule1.CrossQry_Month.FieldByName('1').Value = 'Wthen
                begin
                        Canvas.Brush.Color:=clBlue;
                        DefaultDrawColumnCell(Rect,DataCol,Column,State);

                end
end;
Ergebnis sind eingefärbte Zeilen und nicht Zellen.
PS: Die Spalte hat die Bezeichnung '1' ( 1 steht für den ersten Tag des Monats usw.)

So komme ich noch nicht zum Ziel...

Hast du noch einen Tip?

Dirk
Cogito, ergo sum!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: DBGrid formatieren - Abhängig vom Inhalt

  Alt 11. Jun 2008, 13:32
Überprüfe noch die Column.
Markus Kinzler
  Mit Zitat antworten Zitat
d6lpz

Registriert seit: 26. Mär 2008
73 Beiträge
 
Delphi 6 Professional
 
#6

Re: DBGrid formatieren - Abhängig vom Inhalt

  Alt 11. Jun 2008, 13:52
Zitat von mkinzler:
Überprüfe noch die Column.
Wie meinst du das?

Ich kann zwar mit
dbgrid1.Columns.Items[i] eine Spalte auswählen aber wie soll ich abfragen welche Zelle gerade überprüft wird
Ich habe mal wieder ein 40er Brett vorm Kopf...

Dirk
Cogito, ergo sum!
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: DBGrid formatieren - Abhängig vom Inhalt

  Alt 11. Jun 2008, 14:01
Da der CallBack für jede Zelle aufgerufen wird, wirkt er auch für alle Spalten einer Zeile. Die aktuelle Spalte wird als Parameter übergeben
Markus Kinzler
  Mit Zitat antworten Zitat
d6lpz

Registriert seit: 26. Mär 2008
73 Beiträge
 
Delphi 6 Professional
 
#8

Re: DBGrid formatieren - Abhängig vom Inhalt

  Alt 11. Jun 2008, 14:11
Zitat von mkinzler:
Da der CallBack für jede Zelle aufgerufen wird, wirkt er auch für alle Spalten einer Zeile. Die aktuelle Spalte wird als Parameter übergeben
Schade aber der Hinweis hilft mir nicht wirklich.
Ich komme hier heute nicht mehr weiter.

Dirk
Cogito, ergo sum!
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.624 Beiträge
 
Delphi 12 Athens
 
#9

Re: DBGrid formatieren - Abhängig vom Inhalt

  Alt 11. Jun 2008, 14:15
Überprüfe noch z.B. mit Column.FieldName, ob es auch die Spalte des entsprechenden Feldes ist.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
d6lpz

Registriert seit: 26. Mär 2008
73 Beiträge
 
Delphi 6 Professional
 
#10

Re: DBGrid formatieren - Abhängig vom Inhalt

  Alt 11. Jun 2008, 14:36
Zitat von DeddyH:
Überprüfe noch z.B. mit Column.FieldName, ob es auch die Spalte des entsprechenden Feldes ist.
Ihr wollt das ich allein darauf komme - okay habe ich verstanden.

Vielleicht kann mir mal irgendjemand das Brett wegschlagen und in meinem Code (siehe oben) reinschreiben wie das gemeint ist mit dem Column.FieldName.

Ich habe doch schon die Spalte abgefragt mit FieldByName='1'.

Ich werde mit mir langsam ungeduldig und ohrfeige mich gleich selber

Bytheway - die Delphi Hilfe ist absolut fürn Po! Wenn man mal ein Beispiel der Verwendung (Codeschnipsel) finden würde, wäre man oftmals weiter. Da kann sich Delphi, CodeGear oder wie auch immer, ne Scheibe von Microsoft abschneiden!
Cogito, ergo sum!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 22:08 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