Wie wil dat zijn (string)grids in Delphi er netjes uitzien komt soms wel eens op een punt dat je in feite de property ScrollbarWidth mist. Daar is uiteraard wel wat op te vinden. Gelukkig is het niet nodig het wiel opnieuw uit te vinden.
Op het Internet zijn er verschillende oplossingen te vinden. Een van deze oplossingen wordt ons aangereikt door
Robert Baker. Hij gebruikt hiervoor een hulpfunctie ScrollbarVisible() en een stel Windows constanten. Als je dit allemaal zelf moet uitpuzzelen ben je wel even bezig, dus Robert wordt bedankt.
Deze code voorbeelden halen de breedte van de scrollbars op, zoals gedefinieerd door de gebruiker in het configuratiescherm. (Display properties). Onderstaande code is voor een String grid, maar ieder component met een verticale scrollbar zou het ook moeten doen.
if ScrollBarVisible(StringGrid1.Handle, WS_VSCROLL) then
ScrollBarWidth := GetSystemMetrics(SM_CXVSCROLL)
else
ScrollBarWidth := 0;
if ScrollBarVisible(StringGrid1.Handle, WS_HSCROLL) then
ScrollBarWidth := GetSystemMetrics(SM_CXHSCROLL)
else
ScrollBarWidth := 0;
function ScrollBarVisible(Handle : HWnd; Style : Longint) : Boolean;
begin
Result := (GetWindowLong(Handle, GWL_STYLE) and Style) <> 0;
end;