Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   wie beim DBGrid OnColumnDraw aktuellen Datensatz ermitteln? (https://www.delphipraxis.net/169112-wie-beim-dbgrid-oncolumndraw-aktuellen-datensatz-ermitteln.html)

Jumpy 29. Jun 2012 13:05

Datenbank: Oracle • Version: 10g • Zugriff über: ADO+ODBC

wie beim DBGrid OnColumnDraw aktuellen Datensatz ermitteln?
 
Hallo,

nochmal ich, nochmal DBGrid.

Ich färbe die Zeilen meines DBGrids im OnDraw nach diversen Kriterien bunt. Nun hab ich aber das Problem, dass man den aktiven Datensatz nicht mehr sehen kann (außer an dem Pointer/Dreieck in der ersten Spalte). Wenn man nicht selber zeichnet würde ja der aktive Datensatz mit blauen Hintergrund und weißer Schrift angezeigt.

Kann man das irgendwie erkenne, dass man gerade den aktiven DS zeichnet und das selber zeichnen (für diese Zeile) nicht machen?

tsteinmaurer 29. Jun 2012 13:14

AW: wie beim DBGrid OnColumnDraw aktuellen Datensatz ermitteln?
 
Hab gerade kein Delphi hier, aber ich denke etwas in Richtung.
Delphi-Quellcode:
if not (gdSelected in State) then
begin
  // Dein Einfärben ...
end;

shmia 29. Jun 2012 13:49

AW: wie beim DBGrid OnColumnDraw aktuellen Datensatz ermitteln?
 
Du kannst natürlich auch die Schriftfarbe in Kontrast zum farbigen Hintergrund bringen.
Delphi-Quellcode:
function Intensity(Color: TColor): Integer;
begin
  Color := ColorToRGB(Color);
  Result := GetBValue(Color) * 21      // Blue
    + GetGValue(Color) * 174   // Green
    + GetRValue(Color) * 61; // Red
  Result := Result shr 8;
end;

{**************************************************************************
 * NAME:   BlackWhiteContrastColor
 * DESC:   Berechne die Kontrastfarbe (nur schwarz oder weiss)
 *          zur übergebenen Farbe
 *************************************************************************}
function BlackWhiteContrastColor(value: TColor):TColor;
begin
   if Intensity(value) >= 128 then
      Result := clBlack
   else
      Result := clWhite;
end;

Jumpy 29. Jun 2012 14:09

AW: wie beim DBGrid OnColumnDraw aktuellen Datensatz ermitteln?
 
Zitat:

Zitat von tsteinmaurer (Beitrag 1172977)
Hab gerade kein Delphi hier, aber ich denke etwas in Richtung.
Delphi-Quellcode:
if not (gdSelected in State) then
begin
  // Dein Einfärben ...
end;

Jo das wars. "State" hät ich mir ja auch mal selber angucken können. Danke.

@shmia: Interessant. Muss ich mir mal in Ruhe angucken.


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