Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi DBGrid OnDrawColumn Zeile 0 (https://www.delphipraxis.net/203571-dbgrid-ondrawcolumn-zeile-0-a.html)

NoGAD 1. Mär 2020 16:00

DBGrid OnDrawColumn Zeile 0
 
Hallo,

wie erhalte ich die erste angezeigte Zeile (0) im OnDrawColumn Ereignis?


Hintergrund: Ich möchte immer die optimale Spaltenbreite der aktuell angezeigten Daten einstellen und müsste bei jeder Änderung des DBGrid die aktuelle Spaltenbreite zurücksetzen, da es sonst dazu kommt, dass kürzere Einträge nicht angepasst werden, sondern nur längere.

Code:
    if CheckBox1.Checked then
    begin
      if DBGrid1. ??? = 0 then
        ColWidth := 10;

      ColWidth := 5 + DBGrid1.Canvas.TextExtent( Column.Field.DisplayText ).cx;
      if ColWidth > Column.Width then
        Column.Width := ColWidth;
    end;

Danke und LG
Mathias

himitsu 1. Mär 2020 17:28

AW: DBGrid OnDrawColumn Zeile 0
 
garnicht.

Du kannst nur das Grid ableiten und TDBGrid.DrawCell überschreiben.
siehe das darin versteckte DrawTitleCell, welches nicht als überschreibare Methode oder als Event verfügbar ist.

Alternativ: die Fixed-Titelzeilen entfernen und die erste "Datenzeile" als Titelzeile misbrauchen

Zitat:

DBGrid1. ???
Rate mal, warum viele Events ein paar Parameter haben, auch wenn ich nicht ganz verstehen kann, warum man das Canvas nicht auch als Parameter reingab.
DataCol = die Daten-Zeile, also ab Index 0 unter den FixedRows = DataSet.RecNo - 1
Column = die Spalte (rechts von den FixedCols)
State = der Status der Zeile, aber sowas wie "Titelzeile" gibt es hier nicht


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