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(); } }
protected Coord AbsWorkCoord() { Coord Result = new Coord(abs_pos.x + ClientRect.x - WorkRect().x, abs_pos.y + ClientRect.y - WorkRect().y); if (HaveHorizontalScrollbar) if (!HScrollBarIsBottom) Result.y = Result.y + FHorizontalScrollbar.size.y; if (HaveVerticalScrollbar) if (!VScrollBarIsRight) Result.x = Result.x + FVerticalScrollbar.Width(); return Result; }
protected IntCoord WorkRect() { // HaveVerticalScrollbar int x, y, w, h; if (HaveVerticalScrollbar) { y = FVerticalScrollbar.Pos; if (HaveHorizontalScrollbar) h = ClientRect.h - FHorizontalScrollbar.Height(); else h = ClientRect.h; } else { y = 0; if (HaveHorizontalScrollbar) h = ClientRect.h - FHorizontalScrollbar.Height(); else h = ClientRect.h; } if (HaveHorizontalScrollbar) { x = FHorizontalScrollbar.Pos; if (HaveVerticalScrollbar) w = ClientRect.w - FVerticalScrollbar.Width(); else w = ClientRect.w; } else { x = 0; if (HaveVerticalScrollbar) w = ClientRect.w - FVerticalScrollbar.Width(); else w = ClientRect.w; } return new IntCoord(x, y, w, h); }
public boolean DoMouseWheel(boolean isUp, int len) { boolean result = false; if (!MouseInMe()) return result; if (HaveVerticalScrollbar) { FVerticalScrollbar.Step = MouseWheelStep; if (!isUp) FVerticalScrollbar.DoInc(); else FVerticalScrollbar.DoDec(); result = true; } else if (HaveHorizontalScrollbar) { FHorizontalScrollbar.Step = MouseWheelStep; if (!isUp) FHorizontalScrollbar.DoInc(); else FHorizontalScrollbar.DoDec(); result = true; } return result; }
public void ResetScrollPos(boolean vertical) { if (vertical) { if (FVerticalScrollbar != null) FVerticalScrollbar.SetPos(FVerticalScrollbar.Min); } else if (FHorizontalScrollbar != null) FHorizontalScrollbar.SetPos(FHorizontalScrollbar.Min); }
public int GetHorizScrollHeight() { if (HaveHorizontalScrollbar) return FHorizontalScrollbar.Height(); else return 0; }
public int GetVertScrollWidth() { if (HaveVerticalScrollbar) return FVerticalScrollbar.Width(); else return 0; }
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); } }