die 2te: TDDGrid - OnResize - Breite Vert. Scrollbar ermitteln

Für alles, was in den übrigen Lazarusthemen keinen Platz, aber mit Lazarus zutun hat.
Antworten
Lorca
Beiträge: 196
Registriert: Di 3. Nov 2020, 12:25

die 2te: TDDGrid - OnResize - Breite Vert. Scrollbar ermitteln

Beitrag von Lorca »

Hallo zusammen :),

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;

Benutzeravatar
Ally
Beiträge: 263
Registriert: Do 11. Jun 2009, 09:25
OS, Lazarus, FPC: Win und Lazarus Stable release
CPU-Target: x64

Re: die 2te: TDDGrid - OnResize - Breite Vert. Scrollbar ermitteln

Beitrag von Ally »

Hallo Lorca,

ScrollbarBreite := GetSystemMetrics(SM_CXVSCROLL);

Gruß Roland

Lorca
Beiträge: 196
Registriert: Di 3. Nov 2020, 12:25

Re: die 2te: TDDGrid - OnResize - Breite Vert. Scrollbar ermitteln

Beitrag von Lorca »

Hallo zusammen, hallo Ally :)

Super Info. *Freu*

Ganz herzlichen Dank.


Gruß
Lorca

Antworten