В ревизии 1619 добавил новую функцию edit_box_set_text
При изменении текста в edit_box-е програмным путем нужно делать изменение параметров size (размер теста) и pos (позиция курсора). Это не всегда бывает удобно, потому я решил ввести данную функцию.
Эта функция копирует текст из указателя в текстовое поле. Если текст в указателе окажется длиннее чем допустимый в элементе edit_box, то он запишется не весь. После вызова данной функции необходимо перерисовать окно функцией edit_box_draw, иначе изменения будут сразу не видны. Пример использования:
где edit1 - структура элемента edit_box; buf - буфер, в котором содержится устанавливаемый текст.
Вопрос с графическим буфером решил отложить на неопределенное время.
SVN 1657 Новая версия checkbox. Переписан, оптимизирован, комментарии почти к каждой строке. Изменена строка данных checkbox, появилась возможность построение прямоугольных checkbox'ов, работает со строками ASCIIZ. В ближайшее время будет перенесен код в trunk.
SVN 1661 Релиз кандидат checkbox. Код готов к перемещению в trunk.
Что нового:
1) Checkbox может быть любого размера прямоугольником, квадратом. (Раньше только квадратом).
2) Уменьшен объем кода и реализовано описание почти каждой инструкции.
3) Появился код инициализации компонента.
4) Поддержка ASCIIZ строк в подписях checkbox.(Раньше нужно было указывать количество символов в строке).
5) Написаны макросы, которые работают с группой checkbox, это инициализация группы checkboxes (init_checkboxes), проверки мышки (checkboxes_mouse), нарисовать в окне (checkboxes_draw) макросы принимают в качестве параметров начало структуры и конец.
Необходимо все приложения использующие данный компонент модифицировать. Структура данных checkbox изменена.
<Lrz>
Может быть пока стоит включить новый чекбокс как еще один компонент, чтобы не нужно было резко переделывать все программы. Все же большой объем работы, а выбросить потом после переделки старый чекбокс всегда можно успеть.
SVN 1682 Код checkbox2 доступен из основной библиотеки box_lib. Сейчас в библиотеке доступны 2 версии, 1-я и 2-я. Я рекомендую использовать 2-ю версию для написания ваших программ. 1-я версия будет удалена.
Ревизия 1715 исправление глюка в новой версии checkbox (при нажатии мышкой менялся не тот бит в поле flags) Ревизия 1720 немного доработал функцию init_checkbox2
;--- нажата клавиша backspace ---
edit_box_key.backspace:
test word ed_flags,ed_shift_on
jne edit_box_key.delete
; проверяем, курсор у левого края?
mov ecx,ed_pos
test ecx,ecx
jnz edit_box_key.del_bac
popad
ret 4
Сначала проверяем наличие выделения и, если оно есть, передаём обработку в Delete, которое работает так как нам надо.
Тестировал на паре-тройке приложений использующих EditBox в KlbrInWin и Qemu.
У меня работает как надо. Код самого Delete мне не очень нравится, по моему поверхностному анализу, он сначала убивает первый символ, а уже затем добивает остаток выделенного блока, но итоговый результат правильный, поэтому можно и не править.
[off]Сегодня получил доступ на svn, и если примерно к полуноночи не поступит возражений, залью правку. Будем потом откатывать [/off]
Главное, чтобы внесенные изменения не вызвали непредвиденных результатов в других случаях, например когда Shift зажат или еще что-нибудь. Будешь потом сам выправлять.
Да там и так ещё своих остаётся Просто BackSpace при наличии выделения я часто-часто использую и этот баг мне чуток надоел.
Например, попробуйте выделить последний символ и нажать Shift+Del...
ревизия 2102
В элементе t_edit новый формат файлов синтаксиса. Добавлена возможность задавать подавляющий символ, для более правильного отображения строк. Например в синтаксисе C++ теперь правильно будет выделяться цветом такой текст:
Программы использующие t_edit пострадать не должны, потому что все делается внутри функций библиотеки. Единственное что им будут нужны новые файлы синтаксиса, которые я тоже поменял.
.text_pointer указатель на область данных с исходной строкой символов. .work_area_pointer указатель на область данных, где будет сформирована выводимая строка символов.
З.Ы. Причем PathShow_prepare нужно вызывать лишь один раз, если исходный текст не меняется, а если меняется то каждый раз после изменения. Соответсвенно PathShow_draw вызывается при каждой перерисовке.
Пожалуйста, и одну свою программу я добавил на вики, потому решил заодно и элемент PathShow внести.
Mario wrote:.work_area_pointer указатель на область данных, где будет сформирована выводимая строка символов
Я так и догадывался, но в программе на которой я тестировал этот элемент функцию PathShow_prepare вызвал только 1 раз при запуске. В результате показывался всегда один и тот же текст. Потому и возникли сомнения насчет назначения параметров.
И еще вопрос мне кажется в какой-то программе была обводка вокруг текста в PathShow, или может я перепутал его с текстовым полем edit?