XmSpinBox позволяет пользователю производить выбор из последовательно отображаемых замкнутых в кольцо взаимоисключающих вариантов выбора. Виджеты этого класса всегда имеют стрелки инкремента и декремента, а также минимум одного дополнительного потомка. Варианты выбора по одному отображаются в доступном для клавиатурного перехода текстовом виджете (имеющем класс XmText или XmTextField). Клик кнопкой Btn1 на стрелке приводит к отображению следкющего (или предыдущего) элемента в кольце вариантов выбора. При нажатии и удержании кнопки Btn1 мыши на стрелке происходит последовательный перебор всех значений.
Доступный для клавиатурного перехода потомок XmSpinBox должен иметь тип XmNUMERIC (числовой) или XmSTRING (строковый), определяемый значением ресурса ограничения XmNspinBoxChildType. Кольцо вариантов выбора для числовых потомков определяется минимальным и максимальным значениями, величиной инкремента и количеством десятичных знаков за запятой. Кольцо вариантов для строковых потомков определяется массивом составных строк.
Имеется возможность включать несколько доступных для клавиатурного перехода потомков в одни виджет XmSpinBox. Например, XmSpinBox может состоять из пары стрелок и текстовых полей для указания дня месяца и года. Стрелки влияют только на содержимое виджета, владеющего фокусом ввода.
Размер стрелок определяется ресурсом XmNarrowSize. Это значение устанавливает как ширину, так и высоту каждой стрелки, и задается в пикселях.
Стрелки XmSpinBox могут иметь различное расположение, определяемой значением ресурса XmNarrowLayout:
Распологает пару стрелок перед потомками. Стрелки распологаются друг над другом.
Распологает пару стрелок после других потомков. Стрелки распологаются друг над другом.
Распологает по одной стрелке с каждой строны потомков.
Распологает стрелки перед потомками. Стрелки распологаются в горизонтальном ряду.
Распологает стрелки после потомков. Стрелки распологаются в горизонтальный ряд.
Расположение стрелок в режимах XmARROWS_BEGINNING и XmARROWS_END зависит от значения ресурса XmNlayoutDirection у VendorShell. Когда задано расположение слева на право, стрелки, расположенные перед потомками, распологаются слева от потомков. Когда установлен режит справа-на-лево, стрелки, расположенные перед потомками, распологаются справа от потомков.
Действие стрелок также зависят от значения ресурса XmNlayoutDirection у VendorShell. Для расположения слева-на-право, стрелка вправо является стрелкой инкремента, а стрелка влево -- декремента; для расположения справа-на-лево назначение стрелок меняется местами, т.е. правая стрелка производит декремент, а левая -- инкремент.
Для цифровых потомков стрелка инкремента увеличивает отображенное значение на величину инкремента вплоть до максимального. Стрелка декремента уменьшает отображенное значение на указанную величину инкремента вплоть до минимального значения.
Стрелка инкремента для строковых потомков производит перемещение в направлении последнего элемента списка, увеличивая значение ресурса ограничений XmNposition. Стрелка декремента производит перемещение в сторону первого элемента списка.
имеется возможность контролировать чувствительность каждой из стрелок виджета XmSpinBox. Чувствительная стрелка может изменить выбранный элемент, а нечувствительная -- не может. Чувствительность стрелок для виджета XmSpinBox устанавливается с помощью ресурса XmNdefaultArrowSensitivity, но может быть изменена для каждого из потомков в отдельности установкой ресурса ограничений XmNarrowSensitivity.
XmSpinBox предоставляет прикладным программам две процедуры обратного вызова. Кроме этого могут использоваться стандартные процедуры обратного вызова дочерних виджетов. Каждая из этих двух процедур обратного вызова принимает указатель на структуру XmSpinBoxCallbackStruct. Процедуры XmNmodifyVerifyCallback вызываются перед выбором нового значения. Процедуры XmNvalueChangedCallback вызываются после отображения нового значения.
XmNmodifyVerifyCallback сообщает приложения о новом положении в кольце вариантов выбора. Эта процедура обратного вызова может быть использована для остановки изменения значения при достижении минимального или максимального предела или для перехода на другое, отличное от нового, значение. Приложение дает разрешение на изменение положения посредством сохранения поля doit в True. Приложение может перейти на другое, отличное от нового, значение посредством сохранения в поле doit значения True и установки в поле position необходимого значения. Если поле doit установлено приложением в значение False, то изменение отображаемого значения не производится.
После отображения нового выбора вызывается процедура XmNvalueChangedCallback. Приложение может использовать эту процедуру для выполнения некоторых задач при установке специфичного значения или пересечении границ диапазона. Например, если пользователь перешагнул с января на декабрь, приложение может перейти к предыдущему году. Если же пользователь перешел от декабря к январю, приложение может перейти к следующему году.
Размеры XmSpinBox могут быть установлены ресурсами Core XmNheight и XmNwidth. Если размеры не указаны, то они определяются размерами стрелок и потомков. XmSpinBox позволяет увеличить размер пока стрелки и все потомки не станут видимыми.
XmSpinBox использует особенность XmQTaccessTextual и сохраняет особенность XmQTnavigator.
Пред. | Начало | След. |
XmSimpleSpinBox | Уровень выше | Трансляции |