Box lib editbox/ru

From KolibriOS wiki
Jump to navigation Jump to search

Введение

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

Функции

  • edit_box_key - эта функция должна вызываться при вводе информации с клавиатуры
  • edit_box_mouse - эта функция должна вызываться при вводе информации с мыши
  • edit_box_draw - эта функция должна вызываться при перерисовке элемента.
  • edit_box_set_text - эта функция копирует текст из указателя в текстовое поле. Если текст в указателе окажется длиннее чем допустимый в элементе edit_box, то он запишется не весь. После вызова данной функции необходимо перерисовать окно функцией edit_box_draw, иначе изменения будут сразу не видны. Пример использования:

<syntaxhighlight lang="asm">push dword buf push dword edit1 call dword [edit_box_set_text] ......... buf db '111-222-333',0</syntaxhighlight> где edit1 - структура элемента edit_box; buf - буфер, в котором содержится устанавливаемый текст.

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

Структура editbox

Размер структуры editbox указан внутри файла box_lib.mac в параметре ed_struc_size. <syntaxhighlight lang="asm">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 }</syntaxhighlight>

  • width - ширина элемента
  • left - отступ слева (положение по x)
  • top - отступ сверху (положение по y)
  • color - цвет фона
  • shift_color - цвет выделения при удерживании [Shift] или мышкой
  • focus_border_color - цвет рамки когда поле в фокусе
  • blur_border_color - цвет рамки когда поле не в фокусе
  • text_color - цвет текста
  • max - максимальный размер текста (должно быть +2 резервных символа)
  • size - текущая длина текста

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

<syntaxhighlight lang="asm"> 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 </syntaxhighlight>