Box lib editbox/ru

From KolibriOS wiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Введение

Текстовое поле, используется при вводе текстовой/числовой информации.

Функции

  • edit_box_key - эта функция должна вызываться при вводе информации с клавиатуры
  • edit_box_mouse - эта функция должна вызываться при вводе информации с мыши
  • edit_box_draw - эта функция должна вызываться при перерисовке элемента.
  • edit_box_set_text - эта функция копирует текст из указателя в текстовое поле. Если текст в указателе окажется длиннее чем допустимый в элементе edit_box, то он запишется не весь. После вызова данной функции необходимо перерисовать окно функцией edit_box_draw, иначе изменения будут сразу не видны. Пример использования:
push dword buf
push dword edit1
call dword [edit_box_set_text]
.........
buf db '111-222-333',0

где edit1 - структура элемента edit_box; buf - буфер, в котором содержится устанавливаемый текст.

  • version_ed - версия элемента

Структура editbox

Размер структуры editbox указан внутри файла box_lib.mac в параметре ed_struc_size.

struc  edit_box width,left,top,color,shift_color,focus_border_color,\
       blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
{
.width dd width
.left  dd left
.top   dd top
.color dd color
.shift_color dd shift_color
.focus_border_color dd focus_border_color
.blur_border_color  dd blur_border_color
.text_color dd text_color
.max  dd max
.text dd text
.mouse_variable dd mouse_variable
.flags  dd flags+0
.size   dd size+0
.pos    dd pos+0
.offset dd 0
.cl_curs_x dd 0
.cl_curs_y dd 0
.shift     dd 0
.shift_old dd 0
}
  • width - ширина элемента
  • left - отступ слева (положение по x)
  • top - отступ сверху (положение по y)
  • color - цвет фона
  • shift_color - цвет выделения при удерживании [Shift] или мышкой
  • focus_border_color - цвет рамки когда поле в фокусе
  • blur_border_color - цвет рамки когда поле не в фокусе
  • text_color - цвет текста
  • max - максимальный размер текста (должно быть +2 резервных символа)
  • size - текущая длина текста

Флаги элемента

ed_figure_only= 1000000000000000b   ;одни символы
ed_always_focus= 100000000000000b
ed_focus=                     10b   ;фокус приложения
ed_pass=                       1b   ;поле с паролем
ed_shift_on=                1000b   ;если не установлен -значит впервые нажат shift,если был установлен, значит мы уже что - то делали удерживая shift
ed_shift_on_off=1111111111110111b
ed_shift=                    100b   ;включается при нажатии на shift т.е. если нажимаю
ed_shift_off=   1111111111111011b
ed_shift_bac=              10000b   ;бит для очистки выделеного shift т.е. при установке говорит что есть выделение
ed_shift_bac_cl=1111111111101111b   ;очистка при удалении выделения
ed_shift_cl=    1111111111100011b
ed_shift_mcl=   1111111111111011b
ed_left_fl=               100000b
ed_right_fl=    1111111111011111b
ed_offset_fl=            1000000b
ed_offset_cl=   1111111110111111b
ed_insert=              10000000b
ed_insert_cl=   1111111101111111b
ed_mouse_on =          100000000b
ed_mous_adn_b=         100011000b
ed_mouse_on_off=1111111011111111b
ed_disabled=        100000000000b   ;disable editbox