Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi DBGrid Farbe Markierung (https://www.delphipraxis.net/19350-dbgrid-farbe-markierung.html)

Lupster 1. Apr 2004 15:05


DBGrid Farbe Markierung
 
Hallo Zusammen,

habe ein kleines, aber für mich unlösbares Problem!

Hab ein DBGrid mit unterschiedlichen farbigen Zeilen, je nach Dateninhalt!

Markier ich nun einen Datensatz, welcher eine bunten Hintergrund hat, wechselt die Schriftfarbe auf weiss, was bei hellen Hintergründen schwer lesbar ist!

Weiss jemand, wie ich die Textfarbe bei dem markierten Datensatz ändern kann bzw. warum bei weissem Hintergrund der markierte Datensatz blau eingefärbt wird sonst aber nicht!

http://lupster.de/1.gif

http://lupster.de/2.gif

barnti 1. Apr 2004 15:10

Re: DBGrid Farbe Markierung
 
Hi,

für die Anpassung der Darstellung der 'Grid.cells', schreibe eine Behandlungsroutine für das OnDrawColumnCell...
Delphi-Quellcode:
...
if 'Bedingung zum Ändern der Schriftfarbe' then
        Grid.Canvas.Font.Color:= clRed;
...
Hoffe, das hilft?!

Nightfly 1. Apr 2004 15:50

Re: DBGrid Farbe Markierung
 
if (gdSelected in State) or (gdFocused in State) then exit;

Diese Zeile am anfang in deinem DrawColumnCell ereigniss sorgt dafür,das wenn die Zeile den fokus hat,oder selektiert wird,die Farbe nicht geändert wird. Statt des exit kannst du natürlich auch eigene farben definieren.

shmia 1. Apr 2004 16:41

Re: DBGrid Farbe Markierung
 
Eine Hilfsfunktion errechtet die Kontrastfarbe zum Hintergrund:
Delphi-Quellcode:
function BlackWhiteContrastColor(value: TColor):TColor;
var
   t : Integer;
begin
   value := ColorToRGB(value);

   t := GetBValue(value) * 21  // Blue
    + GetGValue(value) * 174   // Green
    + GetRValue(value) * 61;  // Red

   if t >= (128*256) then
      Result := clBlack
   else
      Result := clWhite;
end;
Und damit:
Grid.Canvas.Font.Color:= BlackWhiteContrastColor(Grid.Canvas.Color);

Lupster 2. Apr 2004 09:25

Re: DBGrid Farbe Markierung
 
besten dank euch allen!

gruss
lupster


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:36 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