Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Text im DBgrid einfärben (https://www.delphipraxis.net/17747-text-im-dbgrid-einfaerben.html)

barnti 9. Mär 2004 11:10


Text im DBgrid einfärben
 
Hallo,

zu diesem Thema habe ich im Forum keine Hilfe gefunden. Deshalb wende ich mich jetzt an die Gemeinschaft:

Ich kontrolliere in meinem Grid zwei nebeneinanderliegende Felder. Sind die enthaltenen Werte unterschiedlich, möchte ich den Text des einen Feldes mit einer Farbe hervorheben.

Wie kann ich die Farbe eines bestimmten Feldinhaltes ändern?

Danke &

Sharky 9. Mär 2004 11:17

Re: Text im DBgrid einfärben
 
Zitat:

Zitat von barnti
...zu diesem Thema habe ich im Forum keine Hilfe gefunden.

Hai barnti,

[dp]dbgrid AND färben[/dp]

barnti 9. Mär 2004 11:26

Re: Text im DBgrid einfärben
 
Hai sharky,

ich möchte weder das 'OnDrawColumnCell'-Ereignis strapazieren noch ein Feld oder eine Reihe einfärben.
Ich würde bevorzugen mein Problem im 'OnCalculateField'-Ereignis abzuhandeln. Dort liegt mir das aktuelle Feld vor und ich muss 'nur' die Textfarbe abändern...?!

Noch andere Vorschläge?

Danke &

Sourcemaker 9. Mär 2004 11:55

Re: Text im DBgrid einfärben
 
Hi,

nach meiner Meinung ist es die einzige Möglichkeit beim Zeichnen des Grids also in 'OnDrawColumnCell' die Farbe einer Zelle abzuändern ausser du benutzt nicht TDBGrid sondern z.B. TGXDBGrid (von GExperts) dann gibt es u.a. dieses Ereignis:

Delphi-Quellcode:
procedure TFKunEdit.KAGBrowCalcColors(Sender: TObject; Brush: TBrush;
  Font: TFont; Column: TColumn; DataCol, DataRow: Integer;
  State: TGridDrawState);
begin
   if KAGStat.GL('JAHR')= 0 then Brush.Color := clMoneyGreen
   else
      if KAGStat.GL('MONAT')= 0 then Brush.Color := clSkyBlue
      else
          if KAGStat.GL('ARTGRUPPE')= 0 then Brush.Color := clCream;
end;
Einen Link habe ich nicht da das DBGrid nicht mehr von GExperts gepflegt wird sondern zwischenzeitlich von jemand anderen übernommen worden ist der es aber auch nicht mehr macht. Ich kann dir aber gerne meine für Delphi 7 geeignete und leicht verbesserte Version geben.

Grüße

Frank

barnti 9. Mär 2004 11:59

Re: Text im DBgrid einfärben
 
Hi Frank,

das habe ich beinahe vermutet, dass das nur über diese Ereignisse funktioniert. Ist echt unbequem, da es viel Performance kostet.

Gerne schaue ich mal auf die von Dir vorgeschagene Kompo. Gibts denn eine Doku?

Danke und

Sourcemaker 9. Mär 2004 12:12

Re: Text im DBgrid einfärben
 
Liste der Anhänge anzeigen (Anzahl: 1)
Nein eine Doku habe ich leider nicht aber das ist eigentlich selbst erklärend. Für Fragen stehe ich aber gerne zur Verfügung.

Gruß

Frank

barnti 9. Mär 2004 12:14

Re: Text im DBgrid einfärben
 
Hi,

danke Dir. Ich werde bei Gelegenheit mal reinschauen. Zur Zeit bin ich leider indisponiert...

barnti 9. Mär 2004 12:57

Re: Text im DBgrid einfärben
 
Hi,
der Vollständigkeit halber:

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

var Grid: TDBGrid;

begin
  Grid:= TDBGrid(Sender);

if 'Bedingung zum Ändern der Schriftfarbe' then
  begin
    Grid.Canvas.Font.Color:= clRed;                    // Text des akt. Feldes
    Grid.Canvas.TextRect(Rect,Rect.Left +2, Rect.Top +2,Column.Field.AsString);
  end
Gefunden hier

Sourcemaker 9. Mär 2004 17:20

Re: Text im DBgrid einfärben
 
???? Ich hatte gedacht Du wolltest DrawColumnCell nicht bemühen ? Oder ging es Grid.Canvas.Font.Color ? Ansonsten ist das der Standardweg den du da beschreibst.

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

var Grid: TDBGrid;

begin
  Grid:= TDBGrid(Sender);

if 'Bedingung zum Ändern der Schriftfarbe' then
  begin
    Grid.Canvas.Font.Color:= clRed;                    // Text des akt. Feldes
    Grid.Canvas.TextRect(Rect,Rect.Left +2, Rect.Top +2,Column.Field.AsString);
  end
Gruß

Frank

barnti 9. Mär 2004 19:18

Re: Text im DBgrid einfärben
 
Hi Frank,

da hast Du vollkommen Recht. Ich habe bisher keine andere Möglichkeit gefunden. Außer die von Dir angesprochene Komponente.
Da ich das OnDrawColumnCell so weit wie möglich eingeschränkt und den Code kurz gehalten habe, kann ich damit leben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:44 Uhr.
Seite 1 von 2  1 2      

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