protected void UpdateScrollBars() { int old_max, old_page_size; if (HaveVerticalScrollbar) { if (ScrollbarsVisible) FVerticalScrollbar.Show(); else FVerticalScrollbar.Hide(); if (VScrollBarIsRight) FVerticalScrollbar.SetX(ClientRect.x + ClientRect.w - FVerticalScrollbar.Width()); else FVerticalScrollbar.SetX(ClientRect.x); FVerticalScrollbar.SetY(ClientRect.y); old_max = FVerticalScrollbar.Max; old_page_size = FVerticalScrollbar.PageSize; FVerticalScrollbar.Min = 0; FVerticalScrollbar.Max = FullHeight; if (HaveHorizontalScrollbar) { FVerticalScrollbar.SetHeight(ClientRect.h - FHorizontalScrollbar.Height()); } else { FVerticalScrollbar.SetHeight(ClientRect.h); } FVerticalScrollbar.PageSize = FVerticalScrollbar.Height(); if (AutoScrollV) if (FVerticalScrollbar.Pos + old_page_size >= old_max) FVerticalScrollbar.SetPos(FVerticalScrollbar.Max - FVerticalScrollbar.PageSize); } if (HaveHorizontalScrollbar) { if (ScrollbarsVisible) FHorizontalScrollbar.Show(); else FHorizontalScrollbar.Hide(); FHorizontalScrollbar.SetX(ClientRect.x); if (HScrollBarIsBottom) FHorizontalScrollbar.SetY(ClientRect.y + ClientRect.h - FHorizontalScrollbar.Height()); else FHorizontalScrollbar.SetY(ClientRect.y); old_max = FHorizontalScrollbar.Max; old_page_size = FHorizontalScrollbar.PageSize; FHorizontalScrollbar.Min = 0; FHorizontalScrollbar.Max = FullWidth; if (HaveVerticalScrollbar) { FHorizontalScrollbar.SetWidth(ClientRect.w - FVerticalScrollbar.Width()); } else { FHorizontalScrollbar.SetWidth(ClientRect.w); } FHorizontalScrollbar.PageSize = FHorizontalScrollbar.Width(); if (AutoScrollH) if (FHorizontalScrollbar.Pos + old_page_size >= old_max) FHorizontalScrollbar.SetPos(FHorizontalScrollbar.Max - FHorizontalScrollbar.PageSize); } }
public void SetStyle(boolean v, boolean h) { boolean changed = false; // { +VERT} if (v && !HaveVerticalScrollbar) { if (FVerticalScrollbar != null) FVerticalScrollbar.Unlink(); FVerticalScrollbar = CreateScrollbar(true); FVerticalScrollbar.SetVertical(true); FVerticalScrollbar.Min = 1; FVerticalScrollbar.Pos = 1; changed = true; } // { -VERT} if (!v && HaveVerticalScrollbar) { if (FVerticalScrollbar != null) { FVerticalScrollbar.Unlink(); FVerticalScrollbar = null; } changed = true; } // { +HORIZ} if (h && !HaveHorizontalScrollbar) { if (FHorizontalScrollbar != null) FHorizontalScrollbar.Unlink(); FHorizontalScrollbar = CreateScrollbar(false); FHorizontalScrollbar.SetVertical(true); FHorizontalScrollbar.Min = 1; FHorizontalScrollbar.Pos = 1; changed = true; } // { -HORIZ} if (!h && HaveHorizontalScrollbar) { if (FHorizontalScrollbar != null) { FHorizontalScrollbar.Unlink(); FHorizontalScrollbar = null; } changed = true; } if (changed) { HaveHorizontalScrollbar = h; HaveVerticalScrollbar = v; UpdateScrollBars(); } }