AGB  ·  Datenschutz  ·  Impressum  







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

einfärben einer zeile eines dbgrids

Ein Thema von stonimahoni · begonnen am 11. Jan 2005 · letzter Beitrag vom 14. Jan 2005
 
jensw_2000
(Gast)

n/a Beiträge
 
#4

Re: einfärben einer zeile eines dbgrids

  Alt 11. Jan 2005, 21:59
Ich habe Sharky's Code noch mal etwas abgeändert damit der den Farbcode aus der SQL Abfrage verwendet (nicht Sharky... der Code ).

[Gedankenstütze]
SQL-Code:
SELECT Spalte1, Spalte2, 14588515 as 'FarbcodeFROM Table1
UNION ALL
SELECT Spalte1, Spalte2, 9816060 as 'FarbcodeFROM Table2
[/Gedankenstütze]

Delphi-Quellcode:
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
  with (Sender as TDBGrid) do
  begin

    // prüfen ob in der Wert im Feld Farbcode <>NULL ist
    // Wenn ja, dann Farbe wählen. Wenn nicht, dann weiß.
    // Die Prüfung ist bei dem o.a. SQL Befehl nicht unbedingt notwendig, da Farbcode nie NULL werden kann
    // aber falls man mal auf reale Spalten zurückgreift muss er rein ...

    if DataSource.DataSet.FieldByName('Farbcode').AsVariant<>NULL then
    begin
      Canvas.Brush.Color := DataSource.DataSet.FieldByName('Farbcode').AsInteger; // << hier an deine Query anpassen ...
    end
    else begin
      Canvas.Brush.Color := clWhite;
    end;
     
    // Bei selektierten Feldern die Farbe nochmal ändern
    if (gdSelected in state) then
    begin
      Canvas.Brush.Color := clHighlight; //Farbe für die Zelle mit dem Focus
    end;
    // Zeichnen
    Canvas.FillRect(Rect); //Hintergrundfarbe zeichnen
    Canvas.TextOut(Rect.Left + 2, Rect.Top + 1, Column.Field.AsString); //Den Text in der Zelle ausgeben
  end;
end;
Mit dem Multiselect komme ich auch nicht weiter, da 'gdSelected' nur den AKTUELL selektierten Datensatz kennzeichnet (also fast nichts anderes als dgFocused).

Habe dir mal nen Screenshot von meinem Test mit rangehängt ...

Eventuell ist es ja das, was du suchst ...

Ich habe 3 Tabellen via UNION ALL in einer Abfrage zusammengefasst und in jedem SELECT virtuelle Spalte 'Farbcode' mit einem induviduellen Integerwert hinzugefügt.


Angehängte Grafiken
Dateityp: gif dbgrid_168.gif (14,7 KB, 61x aufgerufen)
  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 06:05 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