AGB  ·  Datenschutz  ·  Impressum  







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

DBGrid --> aktuelle Zeile erkennen, Farben ändern

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

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

DBGrid --> aktuelle Zeile erkennen, Farben ändern

  Alt 8. Feb 2003, 10:33
Hallo Leute,

ich habe in einem DBGrid die Hintergrund- und Schriftfarbe in den Zeilen in Abhängigkeit eines Zellwertes unter Nutzung von OnDrawColumnCell geändert.

Der standardmäßig blaue Balken (clNavy) mit weißer Schrift, der mir die aktuelle Zeile anzeigt, geht mir in diesen Zeilen verloren.

Gibt es eine Möglichkeit festzustellen, ob die aktuell zu zeichnende Zeile die aktuell gewählte ist, damit ich die Verwendung von OnDrawColumnCell für diese Zeile unterbinden kann?

Beispiel:

wenn Feldx den Text 'SUMME' enthält, dann zeichne diese Zeile mit
gelber Schrift auf blauen Grund,
wenn diese Zeile aber die aktuelle ist, dann verwende die
Standardfarben

mfg
eddy
  Mit Zitat antworten Zitat
Benutzerbild von sakura
sakura

Registriert seit: 10. Jun 2002
Ort: München
11.412 Beiträge
 
Delphi 11 Alexandria
 
#2
  Alt 8. Feb 2003, 12:00
Wenn Du OnDrawCell nutzt, dann kannst Du den Parameter State testen.
Delphi-Quellcode:
if (gdSelected in State) or (gdFocused in State) then
  // die zelle ist markiert und/oder selektiert
......
Daniel W.
Ich bin nicht zurück, ich tue nur so
  Mit Zitat antworten Zitat
Benutzerbild von eddy
eddy

Registriert seit: 3. Jan 2003
Ort: Sachsen
573 Beiträge
 
Delphi 5 Professional
 
#3
  Alt 8. Feb 2003, 12:19
Hallo sakura,

vielen Dank für Deine schnell Hilfe! Habe diese Zeile in meine Funktion eingefügt und es klappt jetzt so, wie ich das gern hätte.

Der Vollständigkeit halber hänge ich hier noch den Quelltext an, falls mal jemand ein ähnliches Problem hat.

Delphi-Quellcode:
procedure TFAuf.dbg32DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
const
  parr : array[0..2] of string =(cRAB, cZSM, cA);
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}

  s := TabPP.FieldByName('PosArt').AsString;
  // Number of String - ermöglicht case-Auswertung von Strings
  // -1, wenn s nicht in Array vorhanden ist sonst 0 für's Erste, usw.
  case NofStr(s, parr) of
     0: begin
           dbg32.Canvas.Brush.Color := clBlue;
           dbg32.Canvas.Font.Color := clYellow;
         end;
     1: begin
           dbg32.Canvas.Brush.Color := clRed;
           dbg32.Canvas.Font.Color := clAqua;
         end;
     2: if TabPP.FieldByName('SummenKopf').AsBoolean then begin
           dbg32.Canvas.Brush.Color := clGreen;
         end;
   end;
  dbg32.DefaultDrawColumnCell(Rect, DataCol, Column, State);
end;

mfg
eddy
  Mit Zitat antworten Zitat
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#4

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

  Alt 13. Sep 2003, 15:05

ich schaffe es nicht. meine DBGrid Tabelle lässt sich nciht durch canvas.font.color oder so steuern... *heul*!!!!!!
kann mir jemand eine demo zur verfügung stellen?
Muh macht die kUh
  Mit Zitat antworten Zitat
Alexander

Registriert seit: 28. Aug 2002
Ort: Oldenburg
3.513 Beiträge
 
Turbo Delphi für .NET
 
#5

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

  Alt 13. Sep 2003, 15:13
Poste mal deine Fehlermeldung, sonst können wir dir nicht helfen
Alexander
  Mit Zitat antworten Zitat
mojo777

Registriert seit: 10. Sep 2003
402 Beiträge
 
#6

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

  Alt 13. Sep 2003, 16:43
nix fehlermeldung. alles ist ok. nur die befehle zeigen keine reaktion. ich vermute, dass ich den code an eine falsche stelle gesetzt habe. ich habe on FormShow und in DrawCell versucht.
Das Beispiel oben bringt mich nicht weiter. Sorry.
Muh macht die kUh
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#7

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

  Alt 13. Sep 2003, 16:51
eddy hatte es in drawcolumncell realisiert. vielleict liegt da der fehler, oder zeige mal den aufruf !

raik
  Mit Zitat antworten Zitat
kolio

Registriert seit: 30. Jan 2005
Ort: Plauen
9 Beiträge
 
#8

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

  Alt 30. Jan 2005, 19:43
Kann mir bitte jemad sagen was das "TabPP" von eddy bedeutet?
Danke.
  Mit Zitat antworten Zitat
Benutzerbild von kiar
kiar

Registriert seit: 2. Aug 2003
Ort: Aschersleben
1.362 Beiträge
 
Delphi 5 Professional
 
#9

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

  Alt 30. Jan 2005, 19:47
hallo kolio,

in dem oberen quelltext ist TAbPP eine Tabelle.


herzlich willkommen in der DP.

raik
verhältnisse die einem nicht passen,
muss man verändern oder verlassen
  Mit Zitat antworten Zitat
kolio

Registriert seit: 30. Jan 2005
Ort: Plauen
9 Beiträge
 
#10

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

  Alt 30. Jan 2005, 20:38
Danke.

Ich hab's mit

Code:
if DataSource1.DataSet.FieldByName('Wochentag').AsString = '' then
begin
  //
end;
versucht, geht aber leider nur für die erste Spalte. DataSource1 ist bei mir mit eine Query verbunden.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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