GUI-SDL2 – GUI написанный на Haskell. Часть 4. Поле ввода текста
Запись от Curry размещена 02.07.2018 в 08:55
Показов 1762
Комментарии 0
|
(Предыдущая тема) Для ввода и редактирования однострочного текста служит виджет editBox. Как обычно, в конце package.yaml, через пустую строку, допишем ещё одно приложение
Дело в том, что для мигания символом каретки editBox запускает трэд. Необходимо указать через компилятор исполняющей системе haskell что требуется использовать треды операционной системы, иначе символ каретки будет мигать неравномерно и редко. То есть, практически для любого GUI-SDL2 приложения следует указывать такие опции компилятора. И так, создадим каталог 4.editBox в корневом каталоге проекта, и в нём новый файл Main.hs
Выполняем
Можем убедится что при любом изменении текста он копируется в lbStatus, а цвет lbStatus показывает, какой из обработчиков событий какого editBox-а отработал. Переход между полями редактирования, кроме Tab, возможно ещё и по Enter. Виджет editBox поддерживает общепринятые операции выделения фрагмента текста, его копирования и вставки. А теперь давайте введём ограничение на ввод текста. Допустим, нам нужно что бы во вводимом поле было не более одного пробельного символа. Для этого нужно установить для editBox-а верификатор. Допишите в конце исходного кода.
Функция верификации возвращает True если текст-кандидат на замещение текущего текста подходит. В противном случае, изменение не принимается. Существует более легковесный верификатор. Для правого editBox-а добавьте в его параметры инициализации
И верификатор и editBoxCharFilter можно использовать одновременно. Для данных изменений нам понадобится добавить пару импортов
Повторите
Продолжение следует. | ||||||||||||||||||||||||||||||||||||||||
Размещено в GUI-SDL2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Всего комментариев 0
Комментарии


