Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DBGrid / DrawColumnCell - Darstellungsfehler (https://www.delphipraxis.net/214181-dbgrid-drawcolumncell-darstellungsfehler.html)

wurzelsepp1 29. Nov 2023 16:36

DBGrid / DrawColumnCell - Darstellungsfehler
 
Moin Gemeinde,
ich habe da ein DBGrid, das neue Datensätze "fett" darstellen soll.
Dazu habe ich in DrawColumnCell Font.Style auf bold gesetzt. Funktioniert prima.

Nun wird die Zeile bei den fetten Datensätzen "zerbröselt" dargestellt, wenn der Datensatz (row select) markiert ist. Bei den nicht fetten Zeilen tritt der Effekt nicht auf.

Das ganze ist so gebaut:
Delphi-Quellcode:
if Table.FieldByName('gelesen').AsInteger = 0 then
  DBGrid.Canvas.Font.Style := [fsbold];

MailsDBGrid.DefaultDrawColumnCell(Rect, DataCol, Column, State);
Jemand eine Idee?

wurzelsepp1 29. Nov 2023 17:54

AW: DBGrid / DrawColumnCell - Darstellungsfehler
 
Es hat wohl damit zu tun, dass die Zeile, wenn der Cursor darauf steht, nicht komplett gelöscht und neu geschrieben wird. Daher das scheinbare Doppelbild. Scheinbar wird die Zeile dann ohne das Attribut "fett" gezeichnet.

Aber wo stelle ich das ein? :stupid:

himitsu 29. Nov 2023 18:17

AW: DBGrid / DrawColumnCell - Darstellungsfehler
 
Wenn die Zeile selektiert ist, dann wird der Hintergrund nicht gelöscht
und somit über das Alte gemalt (blöd, wenn es einen anderen Style hatte)

Ist die Selection aus, dann wird immer vorher der Hintergrund "komplett" gelöscht/übermalt. (außer es gibt ein Clipping, z.B. beim Scrollen)


[add]
Als ich vor Kurzem einmal das Delphi-Grid benutzte, kam nach nervigen Stunden sowas bei raus ....
Delphi-Quellcode:
  ...
  if gdSelected in State then begin  // Bugfix: DefaultDraw hatte bereits ohne fsBold gemalt UND DefaultDrawColumnCell malt bei Selected nicht nochmal den Hintergrund
    Exit;
    //Grid.Canvas.Font.Style := [];
    //Grid.Canvas.Font.Color := {clHighlightText}clWindowText;
  end;
  Grid.DefaultDrawColumnCell(Rect, DataCol, Column, State); // eigentlich Grid.DefaultDraw=False
end;
Allerdings hab ich kein RowSelect, womit es weniger auffällt.

wurzelsepp1 29. Nov 2023 20:38

AW: DBGrid / DrawColumnCell - Darstellungsfehler
 
Zitat:

Zitat von himitsu (Beitrag 1530241)
Als ich vor Kurzem einmal das Delphi-Grid benutzte, kam nach nervigen Stunden sowas bei raus ....

Das ist eine gute Idee, danke. Ist dann zwar nicht mehr bold im Balken, aber ich finde das ganz sieht ganz ordentlich aus.

himitsu 29. Nov 2023 21:20

AW: DBGrid / DrawColumnCell - Darstellungsfehler
 
Im DataSet.OnAfterScroll steht noch ein
Delphi-Quellcode:
Grid.Invalidate;

Bei irgendwas wurde nicht richtig gemalt ... aber Kommentar vergessen


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