AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi DBGrid --> aktuelle Zeile erkennen, Farben ändern
Thema durchsuchen
Ansicht
Themen-Optionen

DBGrid --> aktuelle Zeile erkennen, Farben ändern

Ein Thema von eddy · begonnen am 8. Feb 2003 · letzter Beitrag vom 18. Mai 2005
 
Benutzerbild von eddy
eddy

Registriert seit: 3. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#11

Re: DBGrid --> aktuelle Zeile erkennen, Farben ändern

  Alt 31. Jan 2005, 10:55
Hallo Leute,

ich habe noch ein einfaches Beispiel gemacht und getestet:

Code:
type
  TForm1 = class(TForm)
    PageControl1: TPageControl;
    TabSheet1: TTabSheet;
    Panel1: TPanel;
    Tab1: TTable;
    DS1: TDataSource;
    dbg1: TDBGrid;
    procedure dbg1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

// verwendete Datenbank enthält folgendes Feld
//  Geschlecht, A, 1
// in Abhängigkeit von W = weiblich oder M = männlich werden die Zeilen des
//  DBGrid unterschiedlich gefärbt


procedure TForm1.dbg1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
  s : string;
begin
  // die zelle ist markiert und/oder selektiert
  // dann sollen die Standard-Farben verwendet werden (weiß auf navy)
  if (gdSelected in State) or (gdFocused in State) then exit;

  { ansonsten soll die Farbe in Abhängigkeit eines Strings der
    angezeigten Datenbank geändert werden
    Hinweis: die Farben sind hier nur zu Testzwecken ohne Rücksicht
             darauf, ob sie zueinander passen, frei gewählt worden}
  // Variante 1 zum Einlesen des Wertes aus der Datenbank:
  s := uppercase(Tab1.FieldByName('Geschlecht').AsString);
  // oder
  // Variante 2
  s := uppercase((dbg1.DataSource.DataSet as TTable).FieldByName('Geschlecht').AsString);
  // oder
  // Variante 3
  s := uppercase(((Sender as TDBGrid).DataSource.DataSet as TTable).FieldByName('Geschlecht').AsString);
  // eine Variante reicht natürlich aus !!! 

  if s = 'W' then begin
    dbg1.Canvas.Brush.Color := clBlue;
    dbg1.Canvas.Font.Color := clYellow;
  end
  else if s = 'M' then begin
    dbg1.Canvas.Brush.Color := clRed;
    dbg1.Canvas.Font.Color := clAqua;
  end;
  // falls weder M noch W, dann bleibt die Zeile wie Standard
  dbg1.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;
Wenn irgendetwas bei Euch nicht funktioniert, müßt Ihr mal ein bischen was vom verwendeten Code zeigen.

mfg
eddy
  Mit Zitat antworten Zitat
 


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 18:31 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