
Ich möchte gerne eine TDBGrid in den ONResize Handler mit aufnehmen.
Da diese Klasse keinen eigenen Handler dafür hat (verständlicher weise ), würde ich von mehreren Spalten genau eine anpassen.
Habe dazu eine Methode angelegt welche im Event ONResize aufgerufen wird.
Folgende Spalten kommen vor:
- Indicator
COL: Name
COL: Größe
- Verticale Scrollbar
Damit nun das zu verändernde Feld: NAME immer sauber in die TDBGrid passt (Abschluss vor der Scrollbar ) benötige ich die Breite des Indicators und der vertikalen Scrollbar.
Ich suche mir zwar einen heißen, finde aber nichts dazu.
Derzeit mache ich das mit Konstanten Werten, dies ist jedoch sehr unsauber, da es in der Breite der beiden Komponenten ein Unterschied
gib, ob das Programm auf meinem PC, oder auf meinem Laptop läuft.
Ich finde es unsauber, wenn die Spalten weit vor der Scrollbar aufhören bzw. über die Scrollbar hinaus gehen.
Die Methode: TDBGrid.AutoAdjustColumns schreibt bei mir immer über die vertikale Scrollbar hinaus.
Hat jemand eine Idee?
Gruß
Lorca

Hier mal die Funtion dazu:
FUNCTION TCL_VIEWCTRL_DBGrid.iCALC_GridCol : Integer;
VAR lv_Len, lv_i : Integer;
BEGIN
lv_Len := 1;
IF dgIndicator IN DBGrid.Options THEN
lv_Len := 10;
IF DBGrid.ScrollBars = ssVertical THEN
lv_Len := lv_Len + 20;
FOR lv_i := 0 TO DBGrid.Columns.Count - 1 DO BEGIN
IF lv_i = 1 THEN CONTINUE; // Die zu ändernde Spalte darf hier nicht berücksichtigt werden
lv_Len := lv_Len + DBGrid.Columns.Items[ lv_i ].Width;
END;
Result := DBGrid.Width - lv_Len; // Dies soll die neue Spaltenlänge werden
END;