Autor Beitrag
Micha R.
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 27.10.04 11:08 
Hi,

wie kann ich feststellen, ob ein StringGrid einen automatisch zugefügten Scrollbar hat? (Um die Spaltenbreiten richtig zu setzen.)

Alternativ wäre auch die Lösung praktikabel, den vertikalen Scrollbar immer anzuzeigen.

Grüße
Micha
greg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 119

Windows2000, WindowsXP
D5 Prof
BeitragVerfasst: Mi 27.10.04 11:18 
Hallo Micha,

um festzustellen, welche Scrollbars ein StringGrid zur Laufzeit hat, musst Du nur die Property ScrollBars auswerten (StringGrid1.Scollbars).

ssBoth - beide Scrollbars sind an
ssHorizontal - nur der horizontale Scrollbar ist eingeschaltet (eingeschaltet ... klingt irgendwie blöd :-p)
ssNone - keine Scrollbars
ssVertikal - vertikale Scrollbars

Um die Einstellung zu verändern, brauchst Du die Property nur zu setzen ... StringGrid1.Scrollbars := ssVertikal;

Gruß
Gregor
Micha R. Threadstarter
Hält's aus hier
Beiträge: 5



BeitragVerfasst: Mi 27.10.04 11:51 
Hallo Gregor,

danke für Deine ausführliche Antwort. Das Property ScrossBars wird bereits zur Entwurfszeit auf ssVertical gesetzt. Ob der Scrollbar aber tatsächlich auch angezeigt wird, richtet sich danach, ob alle Zeilen dargestellt werden können oder nicht (irgendwie klar).

Ich habe gerade heraus gefunden, dass man dafür RowCount und VisibleRowCount vergleichen muss.

Bleibt aber das Problem, dass ich die Breite des Scrossbars nicht weiss. GetSystemMetrics (SM_CYVTHUMB) liefert leider zu große Werte.

Grüße
Micha
Nico B.
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 45

Win XP
Delphi 2006 Prof.
BeitragVerfasst: Fr 27.07.07 07:43 
Hallo Micha,

die Breite der Scrollbar ermittelt man mit der Funktion GetSystemMetrics().
Dort musst du entweder SM_CYHSCROLL für die vertikale Scrollbar
oder SM_CXHSCROLL für die Horizontale Scrollbar einsetzen.

Ciao.
Nico