Создать индикатор и установить ему пределы от 0 до 100.
progress-minmax ( min max ctl -- )Установить нижний и верхний предел для индикатора.
+pos! ( n ctl -- )Продвинуть индикатор на n единиц.
Создать ползунок указанного стиля. По умолчанию устанавливаются пределы от 0 до 100. У ползунка работают стандартные свойства -pos (позиция), -min, -max (нижний и верхний пределы).
| Стили ползунков | |
|---|---|
| tbs_horz | Горизонтальный ползунок |
| tbs_vert | Вертикальный ползунок |
| tbs_autoticks | Будут автоматически проставлены отметки |
| tbs_noticks | Отметок не будет |
| tbs_top | Отметки сверху (для горизонтальных ползунков) |
| tbs_bottom | Отметки снизу (для вертикальных ползунков) |
| tbs_left | Отметки слева (для горизонтальных ползунков) |
| tbs_right | Отметки справа (для горизонтальных ползунков) |
| tbs_enableselrange | Можно будет выбирать не одну отметку, а целый диапазон |
| tbs_fixedlength | Размер бегунка не будет меняться |
| tbs_nothumb | Бегунок не будет показан вообще |
Создать спин указанного стиля с пределами 0..100. У спина работают стандартные свойства -pos (позиция), -min, -max (нижний и верхний пределы).
add-updown ( style ctl -- )Добавляет спин-симбионт указанного стиля к элементу управления. Размер элемента остается тем же, но рабочая область сокращается за счет спина. Спин посылает элементу уведомляющие сообщения.
| Стили спинов | |
|---|---|
| uds_alignleft | Спин расположен в окне хозяина слева |
| uds_alignright | Спин расположен в окне хозяина справа |
| uds_setbuddyint | Спин будет сам менять заголовок своего хозяина, указывая свою текущую позицию |
| uds_nothousands | В заголовке хозяина тысячи не будут разделяться. |
| uds_arrowkeys | Спин будет обрабатывать клавиши "стрелка вверх" и "стрелка вниз" |
| uds_horz | Горизонтальный спин |
| uds_wrap | При достижении верхнего предела спин будет перескакивать на нижний и наоборот |
Создать элемент-анимацию. Входной аргумент может быть именем файла в формате .AVI, именем или номером ресурса.
start-anime ( ctl -- )Запустить анимацию.
stop-anime ( ctl -- )Остановить анимацию.
Создать календарь указанного стиля. Помимо стандартных свойств -color, -bgcolor, -font работает также свойство -selected. Свойство -command вызывается при выборе одного из дней (сообщение mcn_select).
![]() | Календарь не работает в Windows ниже 98. |
| Стили календаря | |
|---|---|
| mcs_daystate | Календарь будет запрашивать информацию о выделенных днях через сообщение mcn_getdaystate |
| mcs_multiselect | Можно будет выбирать не один день, а целый промежуток |
| mcs_notoday | Календарь не будет показывать внизу сегодняшний день |
| mcs_notodaycircle | Сегодняшний день не будет обведен кружком |
| mcs_weeknumbers | Дополнительно будут показаны номера недель |
Создает элемент-всплывающую подсказку, общую для всей программы. Подсказка индивидуальным элементам присваивается (и читается) через свойство -tooltip.
| Стили подсказок | |
|---|---|
| tts_alwaystip | Подсказка будет появляться, даже если элемент неактивен. |
| tts_noprefix | Из подсказки будут выкидываться символы амперсанда "&" |
| tts_noanimate | Подсказка появится без анимационных эффектов |
| tts_balloon | Всплывающая подсказка будет не квадратной, а специальной формы: похожая на рамку, в которую на карикатурах обычно вписывают текст персонажа |
![]() | В Windows ниже XP подсказки на полях ввода почему-то не всплывают. |
Список картинок, присвоенный контейнеру. Чтение и запись осуществляются следующим образом: -imagelist@ ( what ctl -- ), -imagelist! ( i what ctl -- ). Параметр what - код списка картинок, зависящий от конкретного элемента управления. Например, для закладок он всегда равен 0, поскольку у закладок только один список. У панелей управления есть три разных списка - 0, 1, 2.
-iwidth, -iheightШирина и высота подъэлемента.
-iflagsФлаги подъэлемента.
-itextТекст, присвоенный подъэлементу.
-iimageРисунок подъэлемента.
-iparamПараметр подъэлемента.
add-item ( ... n ctl -- )Добавляет к контейнеру ctl подъэлемент с кодом n. Параметры подъэлемента и код зависят от типа контейнера.
delete-item ( i ctl -- )Удаляет подъэлемент i из контейнера.
item-count ( ctl -- n)Возвращает число подъэлементов в контейнере.
Создать заголовок указанного стиля.
| Стили заголовка | |
|---|---|
| hds_buttons | Подъэлементы заголовка будут вести себя как кнопки |
| hds_hidden | Предполагается, что заголовок будет скрытым. |
| Стили подъэлементов заголовка | |
|---|---|
| hdf_left | Подъэлементы заголовка будут выравнены влево. |
| hdf_right | Подъэлементы заголовка будут выравнены вправо. |
| hdf_center | Подъэлементы заголовка будут выравнены по центру. |
Добавить новый подъэлемент заголовка. Выравнивание текста подъэлемента устанавливается с помощью flags, а в дальнейшем можеть быть изменено с помощью свойства -align.
Создает новый элемент - набор закладок. Помимо стандартных свойств, можно использовать свойство -selected.
| Стили закладок | |
|---|---|
| tcs_buttons | Подъэлементы-закладки будут вести себя как кнопки |
| tcs_fixedwidth | Все закладки будут равной ширины |
| tcs_focusnever | Закладки никогда не получат фокуса |
| tcs_focusonbuttondown | Закладка получит фокус только при нажатии на нее |
| tcs_forceiconleft | Иконки в каждой закладке будут стоять слева (только для tcs_fixedwidth) |
| tcs_forcelabelleft | Заголовки будут стоять сразу рядом с иконками, выравненные по левому краю (только для tcs_fixedwidth) |
| tcs_multiline | Закладки при необходимости будут располагаться в несколько рядов |
| tcs_ownerdrawfixed | Закладки должны отрисовываться родительским окном по специальному уведомлению |
| tcs_raggedright | Закладки не будут заполнять весь ряд |
| tcs_rightjustify | Ширина закладок будет увеличена так, чтобы они заполняли весь ряд |
| tcs_singleline | Закладки будут выставлены в один ряд |
| tcs_tabs | Подъэлементы будут отрисовываться как закладки, а весь ряд будет обведен рамкой |
| tcs_tooltip | С каждой закладкой будет связано всплывающее окошко |
Добавить новый подъэлемент-закладку. grid - сетка, которая будет показываться на соответствующей странице закладки, text - название закладки, image - номер иконки закладки в ее списке картинок, i - номер закладки.
Создать панель инструментов указанного стиля. Как правило, удобнее пользоваться словом create-toolbar.
create-toolbar ( style win -- )Создать безымянную панель инструментов и присоединить ее к указанному окну. У окна может быть только одна панель вверху. Она доступна через свойство окна -toolbar.
| Стили панелей инструментов | |
|---|---|
| tbstyle_altdrag | Кнопки панели можно будет перетягивать при нажатой клавише Alt |
| tbstyle_tooltips | С кнопками будут связаны всплывающие окошки |
| tbstyle_wrapable | Кнопки панели можно будет ставить в несколько рядов |
| tbstyle_flat | "Плоский" стиль: кнопки и сама панель прозрачны |
| tbstyle_list | "Плоская" панель с надписями справа от иконки |
| tbstyle_transparent | Панель будет прозрачной, а кнопки на ней - нет |
| Стили кнопок на панели инструментов | |
|---|---|
| btns_autosize | Размер кнопки не фиксируется, а высчитывается по ее картинке и тексту |
| btns_button | Обычная кнопка |
| btns_dropdown | Кнопка со стрелкой справа. Стрелка отделена от основной кнопки |
| btns_wholedropdown | Кнопка со стрелкой справа |
| btns_showtext | На кнопке будет показываться текст |
| btns_noprefix | Текст на кнопке не будет сопровождаться префиксом быстрой клавиши |
| btns_check | Кнопка с двумя состояниями нажата/не нажата |
| btns_checkgroup | Радиокнопка. Может быть нажата только одна кнопка из группы |
Задает нестандартный размер кнопок панели (buttw, butth) и изображений на кнопках (imagew, imageh). Работает, только если на панели нет еще ни одной кнопки.
add-item ( text image style proc n ctl -- )Добавить новую кнопку в панель инструментов. У каждой кнопки могут быть свои стили, типичные из которых - tbstyle_button и tbstyle_dropdown. proc - процедура, которая будет вызвана при нажатии кнопки. n - в отличие от других контейнеров, не номер подъэлемента, а его произвольный индекс. Он задается программистом и служит для отличия одного подъэлемента от другого. У подъэлементов панели инструментов есть лишнее свойство -istate - состояние кнопки (нажата, выбрана и др.).
separate ( ctl -- )Добавить на панель разделитель кнопок.
add-std-bitmap ( id ctl -- n )Загрузить в панель стандартный набор картинок id. Возвращается номер первой загруженной картинки во внутреннем списке панели.
add-res-bitmaps ( cnt id ctl -- n)Загрузить cnt из ресурса с номером id. Возвращается номер первой загруженной картинки во внутреннем списке панели. Ресурсы должны быть в формате BMP, 8-битовые, со стандартной системной палитрой (в Фотошопе называется System (Windows), нулевой цвет в палитре считается прозрачным.
У панели инструментов не один список картинок, а целых три: what - код списка: 0 - обычные картинки, 1 - картинки, показываемые, когда на кнопку наводится курсор мыши, 2 - картинки отключенных кнопок. dropdown? ( -- ? )Если к кнопке добавлена маленькая стрелка (стиль tbstyle_dropdown), то
процедура обработки -command вызывается и тогда, когда нажата сама
кнопка, и тогда, когда нажата только стрелка. Различить эти случаи можно
с помощью слова dropdown?, возвращающего TRUE, если нажата только
стрелка. Кстати, если при обработке понадобится код кнопки, на которую
нажали (а это бывает нужно, когда одна процедура обрабатывает события от
нескольких кнопок сразу), узнать его можно следующим образом:
dropdown? IF wparam ELSE lparam @ THEN
Создает элемент-дерево указанного стиля.
| Стили деревьев | |
|---|---|
| tvs_haslines | Листья будут соединены линиями с родителем |
| tvs_linesatroot | Листья будут соединены линиями с корнем дерева |
| tvs_hasbuttons | К ветвям будет добавлена кнопка "свернуть/развернуть" |
| tvs_editlabels | Можно будет менять заголовки листьев |
| tvs_showselalways | Выбранный подъэлемент останется выделенным, даже если дерево потеряет фокус |
Добавляет новый подъэлемент к дереву как ветвь подъэлемента parent, стоящую после подъэлемента after. Если родитель равен 0, подъэлемент добавляется в корень дерева. after может быть обозначено константами tvi_first - добавить первым, tvi_last - добавить последним, tvi_sort - добавить в порядке сортировки. selectimage - рисунок выбранного элемента. Возвращает дескриптор, который следует использовать для доступа к созданному подъэлементу.
walk-tree ( proc from ctl -- )Обойти поддерево, начиная с ветви from. Для каждого подъэлемента будет вызвана процедура proc ( child ctl -- ).
Создает новый элемент - список иконок. Свойство -command будет вызываться при получении сообщения lvn_columnclick.
| Стили списков иконок | |
|---|---|
| lvs_alignleft | В режимах "значки" и "маленькие значки" иконки будут выравнены по левому края окна |
| lvs_aligntop | В режимах "значки" и "маленькие значки" иконки будут выравнены по верхнему края окна |
| lvs_autoarrange | В режимах "значки" и "маленькие значки" иконки будут выравниваться автоматически |
| lvs_editlabels | Можно будет редактировать подписи под иконками |
| lvs_icon | Режим "значки" |
| lvs_smallicon | Режим "маленькие значки" |
| lvs_list | Режим "список" |
| lvs_report | Режим "таблица" |
| lvs_nocolumnheader | В режиме "таблица" не будет показываться заголовок |
| lvs_nolabelwrap | В режиме "значки" подпись под иконкой будет занимать только одну строку |
| lvs_noscroll | Запрещает прокрутку иконок в окне |
| lvs_nosortheader | Заголовки колонок не будут работать как кнопки |
| lvs_ownerdrawfixed | Отрисовка элементов возлагается на родительское окно (только режим "таблица") |
| lvs_shareimagelist | Используемый список картинок не будет уничтожаться при уничтожении списка иконок |
| lvs_showselalways | Всегда показывать выбранный подъэлемент, даже если список потерял фокус |
| lvs_singlesel | Может быть выбран только один подъэлемент |
| lvs_sortascending | Подъэлементы будут автоматически сортироваться по подписям |
| lvs_sortdescending | Подъэлементы будут автоматически сортироваться по подписям в обратном порядке |
Добавляет новый подъэлемент к списку иконок.
prepare-listview ( n ctl -- )Подготавливает список к приему n дополнительных подъэлементов. Повышает эффективность add-item.
clear-listview ( ctl -- )Очищает список, удаляя из него все элементы.
arrange-listview ( type ctl -- )Выравнивает иконки в пределах элемента. Возможные значения выравнивания: lva_alignleft - по левому краю окна, lva_aligntop - по верхнему краю окна, lva_default - согласно текущей настройке, lva_snaptogrid - по ближайшему узлу сетки элемента.
icon-view, smallicon-view, list-view, report-view ( ctl -- )Переключает список иконок в различные режимы отображения: "крупные значки", "мелкие значки", "список", "таблица".
-selected ( -- n)Свойство возвращает информацию о выделенных элементах: -1 - не выделено ничего; >-1 - индекс выделенного подъэлемента; <-1 - число (по модулю) выделенных подъэлементов.
walk-selected ( xt ctl -- )Обходит все выбранные подъэлементы, вызывая для каждого xt ( i -- )
lv-param>i ( param ctl -- i/-1)Находит индекс подъэлемента по его параметру.
Добавляет i-тую колонку, присваивая ей значение subitem. Доступ к настройкам колонки осуществляется через свойства -ctext, -cflags, -cwidth, csubitem, -cimage, -corder
del-column ( i ctl -- )Удалить i-тую колонку.
Пример работы с общими элементами управления