Box lib editbox/ru: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
(Created page with '==Введение== Текстовое поле, используется при вводе текстовой/числовой информации. ==Функции== '''edi...')
 
 
(12 intermediate revisions by 5 users not shown)
Line 4: Line 4:


==Функции==
==Функции==
'''edit_box_key'''
*'''edit_box_key''' - эта функция должна вызываться при вводе информации с клавиатуры
Эта функция должна вызыватся при вводе информации с клавиатуры.
*'''edit_box_mouse''' - эта функция должна вызываться при вводе информации с мыши
'''edit_box_mouse'''
*'''edit_box_draw''' - эта функция должна вызываться при перерисовке элемента.
Эта функция должна вызыватся при вводе информации с мыши.
*'''edit_box_set_text''' - эта функция копирует текст из указателя в текстовое поле. Если текст в указателе окажется длиннее чем допустимый в элементе edit_box, то он запишется не весь. После вызова данной функции необходимо перерисовать окно функцией edit_box_draw, иначе изменения будут сразу не видны. Пример использования:
'''version_ed'''
<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==
<asm>struc  edit_box width,left,top,color,shift_color,focus_border_color,\
Размер структуры 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
       blur_border_color,text_color,max,text,mouse_variable,flags,size,pos
{
{
Line 34: Line 40:
.shift    dd 0
.shift    dd 0
.shift_old dd 0
.shift_old dd 0
}</asm>
}</syntaxhighlight>


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


==Стили элемента==
==Флаги элемента==
''ed_figure_only''
<syntaxhighlight lang="asm">
Разрешается ввод чисел от 0 до 9.
ed_figure_only= 1000000000000000b  ;одни символы
''ed_focus''
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>
 
[[Category: Кодинг]]
[[Category:Библиотеки]]

Latest revision as of 10:53, 29 October 2018

Введение

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

Функции

  • 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