查看源代码 wxScrollBar (wx v2.4.3)
wxScrollBar
是一个控件,表示水平或垂直滚动条。
它不同于某些窗口自动提供的两个滚动条,但两种类型的滚动条共享接收事件的方式。
备注:滚动条具有以下主要属性:范围、滑块大小、页面大小和位置。范围是与滚动条表示的视图关联的单位总数。对于一个有 15 列的表格,范围将是 15。滑块大小是当前可见的单位数。对于表格示例,窗口的大小可能只能显示 5 列,在这种情况下,应用程序会将滑块大小设置为 5。当滑块大小与范围相同或大于范围时,大多数平台上的滚动条将自动隐藏。页面大小是当“分页”浏览数据时,滚动条应滚动的单位数。此值通常与滑块大小长度相同,因为自然会假设可见窗口大小定义一个页面。滚动条位置是当前滑块位置。大多数应用程序会发现提供一个名为 AdjustScrollbars() 的函数很方便,该函数可以从 OnSize 事件处理程序中初始调用,并在应用程序数据大小更改时调用。它将根据窗口大小和数据大小调整视图、对象和页面大小。
样式
此类支持以下样式
wxSB_HORIZONTAL:指定水平滚动条。
wxSB_VERTICAL:指定垂直滚动条。
EVT_SCROLL_THUMBRELEASE 和 EVT_SCROLL_CHANGED 之间的区别
只有在使用鼠标实际拖动滑块并释放它时才会发出 EVT_SCROLL_THUMBRELEASE 事件(此 EVT_SCROLL_THUMBRELEASE 事件之后还会发出 EVT_SCROLL_CHANGED 事件)。
当使用键盘更改滑块位置以及单击滑块旁边时,也会发生 EVT_SCROLL_CHANGED 事件(在所有这些情况下,不会发生 EVT_SCROLL_THUMBRELEASE 事件)。
简而言之,无论滚动/移动是如何开始的,当滚动/移动完成后都会触发 EVT_SCROLL_CHANGED 事件。请参阅 page_samples_widgets(“滑块”页面)以查看 EVT_SCROLL_THUMBRELEASE 和 EVT_SCROLL_CHANGED 在实际操作中的区别。
参见
此类派生自以下类,可以使用以下类中的函数
wxWidgets 文档:wxScrollBar
事件
此类发出的事件类型
摘要
函数
由滚动条构造函数调用的滚动条创建函数。
销毁对象
返回滚动条的页面大小。
返回滚动条的长度。
返回滚动条滑块的当前位置。
返回滑块或“视图”大小。
默认构造函数。
构造函数,创建并显示滚动条。
设置滚动条属性。
设置滚动条的位置。
类型
-type wxScrollBar() :: wx:wx_object().
函数
-spec create(This, Parent, Id) -> boolean() when This :: wxScrollBar(), Parent :: wxWindow:wxWindow(), Id :: integer().
-spec create(This, Parent, Id, [Option]) -> boolean() when This :: wxScrollBar(), Parent :: wxWindow:wxWindow(), Id :: integer(), Option :: {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()} | {validator, wx:wx_object()}.
由滚动条构造函数调用的滚动条创建函数。
有关详细信息,请参见 new/3
。
-spec destroy(This :: wxScrollBar()) -> ok.
销毁对象
-spec getPageSize(This) -> integer() when This :: wxScrollBar().
返回滚动条的页面大小。
这是用户向上或向下翻页时将滚动的滚动单位数。通常它与滑块大小相同。
-spec getRange(This) -> integer() when This :: wxScrollBar().
返回滚动条的长度。
-spec getThumbPosition(This) -> integer() when This :: wxScrollBar().
返回滚动条滑块的当前位置。
-spec getThumbSize(This) -> integer() when This :: wxScrollBar().
返回滑块或“视图”大小。
-spec new() -> wxScrollBar().
默认构造函数。
-spec new(Parent, Id) -> wxScrollBar() when Parent :: wxWindow:wxWindow(), Id :: integer().
等同于 new(Parent, Id, [])
。
-spec new(Parent, Id, [Option]) -> wxScrollBar() when Parent :: wxWindow:wxWindow(), Id :: integer(), Option :: {pos, {X :: integer(), Y :: integer()}} | {size, {W :: integer(), H :: integer()}} | {style, integer()} | {validator, wx:wx_object()}.
构造函数,创建并显示滚动条。
参见:create/4
-spec setScrollbar(This, Position, ThumbSize, Range, PageSize) -> ok when This :: wxScrollBar(), Position :: integer(), ThumbSize :: integer(), Range :: integer(), PageSize :: integer().
等同于 setScrollbar(This, Position, ThumbSize, Range, PageSize, [])
。
-spec setScrollbar(This, Position, ThumbSize, Range, PageSize, [Option]) -> ok when This :: wxScrollBar(), Position :: integer(), ThumbSize :: integer(), Range :: integer(), PageSize :: integer(), Option :: {refresh, boolean()}.
设置滚动条属性。
备注:假设您希望使用相同的字体显示 50 行文本。窗口大小调整为一次只能看到 16 行。您将使用:页面大小比滑块大小小 1,这样上一页的最后一行将在下一页上可见,以帮助用户定位。请注意,在此窗口大小下,滑块位置永远不能高于 50 减去 16,即 34。您可以通过将当前视图大小除以像素中的字符高度来确定当前可见的行数。当定义您自己的滚动条行为时,您始终需要在窗口大小更改时重新计算滚动条设置。因此,您可以将滚动条计算和 setScrollbar/6
调用放入名为 AdjustScrollbars 的函数中,该函数可以初始调用,也可以从 wxSizeEvent
事件处理函数中调用。
-spec setThumbPosition(This, ViewStart) -> ok when This :: wxScrollBar(), ViewStart :: integer().
设置滚动条的位置。