box_lib.obj - библиотека gui компонентов
-
В edit'ах при включенном capslock'е символы вводятся как бы с shift'ом.to infinity and beyond
А как, по твоему, они должны? CapsLock, по твоему, за что отвечает вообще? Фраза "Ты зачем пишешь КАПСОМ?" ни о чем не напоминает?punk_joker wrote:В edit'ах при включенном capslock'е символы вводятся как бы с shift'ом.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Уточню, становится невозможен ввод цифр без нажатия shift, или отключения capslock. Обычно capslock влияет на регистр букв.
to infinity and beyond
Да, вот теперь фраза выглядит логично. Это не edit_box, а на уровне системы я добавлял поддержку CapsLock. Надо будет код ядра посмотреть.punk_joker wrote:Уточню, становится невозможен ввод цифр без нажатия shift, или отключения capslock. Обычно capslock влияет на регистр букв.
З.Ы. Да, проблема так просто не решается. Дело осложняется тем, что в разных раскладках буквы могут присутствовать на не совпадающих клавишах. На английской раскладке букв меньше, а на русской больше и как отлавливать случай с русской кодировкой, если там нет английской буквы. А ведь есть и другие раскладки кроме русской и английской. Пожалуй оставлю я все как есть, выключить CAPS LOCK пользователем - вполне вариант. Если у кого есть нестерпимое желание решить этот вопрос кодированием, то я ему мешать не стану.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
SVN r.3830 компонент FileBrowser поддерживает поиск файлов по первой букве. Используются данные активной в текущий момент раскладки клавиатуры.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Для чего служит флаг "фокус приложения" у editbox'а?
to infinity and beyond
Для реализации переключения фокуса, же! Представь, что у тебя более одного editbox и все они показывают курсор, а поскольку он не мигающий, то как ты однозначно определишь в какой editbox будет занесен текст?
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Моя структура (на всякий случай):
edit_box edit_disk_size= {60,48,5,0xffffff,0x94AECE,0x000000,0xffffff,0,sizeof(disk_size)+2,#disk_size,#mouse_dd, 1000000000000000b};
Теперь собственно вопрос, как проверить активный edit или нет? Пробовал проверять равно ли edit_disk_size.flags значению 10b или 1000000000000010b, но не сработало, может и и в другом ошибся, или вообще не так делается?
edit_box edit_disk_size= {60,48,5,0xffffff,0x94AECE,0x000000,0xffffff,0,sizeof(disk_size)+2,#disk_size,#mouse_dd, 1000000000000000b};
Теперь собственно вопрос, как проверить активный edit или нет? Пробовал проверять равно ли edit_disk_size.flags значению 10b или 1000000000000010b, но не сработало, может и и в другом ошибся, или вообще не так делается?
to infinity and beyond
Я для OpenDialog переменную делал отдельную в качестве указателя.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
punk_joker, нужно проверять не значение, а бит.
Например, так:
или так:
Например, так:
Code: Select all
ED_FOCUS equ 10b
; ..........................................
test [edit_box.flags], dword ED_FOCUS
jz .not_focus
Code: Select all
ED_FOCUS equ 10b
; ..........................................
bt dword [edit_box.flags], 1 ; первый бит, начиная с нулевого
jnc .not_focus
SVN r.4000 - поправлен компонент Filebrowser.. Теперь пустой слот не выделяется, в случае если ничего не отображается компонентом, т.е. список пустой.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Нужна помощь по компоненту optionbox - прочитал много доков и исходников, но так для себя и не уяснил самый главный момент - как в программе определить, какой из чекбоксов выбран в данный момент?
ЕМНИП там побитовый указатель.Heavyiron wrote:Нужна помощь по компоненту optionbox - прочитал много доков и исходников, но так для себя и не уяснил самый главный момент - как в программе определить, какой из чекбоксов выбран в данный момент?
UPD А нет наврал. Там возвращается указатель на текущий чебокс. Можешь посмотреть в исходниках zSea, в частности в win_bcgr.inc
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Хочется более подробно - совсем для дурака...
Ну, вот достаточно простой пример - окно выбора режима сортировки файлов в zSea, т.е. файл win_sort.incHeavyiron wrote:Хочется более подробно - совсем для дурака...
Spoiler:
Code: Select all
;---------------------------------------------------------------------
k_sort_directory:
test dword [status],16
jnz still
or dword [status],16
call get_memory_for_thread_stack
mov [thread_stack_5],eax
mcall 51,1,thread5 ; thread_stack_5
jmp still
;---------------------------------------------------------------------
thread5: ; start of bgrd thread
mcall 9,procinfo_threads,-1
mov eax,[ebx+30]
mov [PID5],eax
mcall 40,0x27
mov eax,[sort_type]
cmp [sort_type],dword 0
jne @f
mov [option_group2],sort0
jmp .thread5
;---------------------------------------------------------------------
@@:
cmp [sort_type],dword 2
jne @f
mov [option_group2],sort2
jmp .thread5
;---------------------------------------------------------------------
@@:
cmp [sort_type],dword 4
jne @f
mov [option_group2],sort4
jmp .thread5
;---------------------------------------------------------------------
@@:
mov [option_group2],sort6
;-----------------------------------
.thread5:
mov [sort_type_old],eax
mov eax,[option_group2]
mov [option_group2_old],eax
;-----------------------------------
.red:
call .draw_window
;-----------------------------------
.still:
mcall 10 ; wait here for event
cmp eax,1 ; redraw request ?
je .red
cmp eax,2 ; key in buffer ?
je .key
cmp eax,3 ; button in buffer ?
je .button
cmp eax,6 ; mouse in buffer ?
je .mouse
jmp .still
;---------------------------------------------------------------------
.mouse:
push dword option_boxes_sort
call [option_box_mouse]
cmp [option_group2],sort0
jne @f
mov [sort_type],dword 0
jmp .still
;---------------------------------------------------------------------
@@:
cmp [option_group2],sort2
jne @f
mov [sort_type],dword 2
jmp .still
;---------------------------------------------------------------------
@@:
cmp [option_group2],sort4
jne @f
mov [sort_type],dword 4
jmp .still
;---------------------------------------------------------------------
@@:
cmp [option_group2],sort6
jne @f
mov [sort_type],dword 6
jmp .still
;---------------------------------------------------------------------
.key:
mcall
cmp ah,27
je .close
cmp ah,13
je .kok
cmp ah,177 ;down
je .fdn
cmp ah,178 ;up
jne .still
cmp [sort_type],0
je .still
sub [sort_type],2
jmp .flagcont
;---------------------------------------------------------------------
.fdn:
cmp [sort_type],6
je .still
add [sort_type],2
.flagcont:
cmp [sort_type],dword 0
jne @f
mov [option_group2],sort0
call .draw_opt_boxes
jmp .still
;---------------------------------------------------------------------
@@:
cmp [sort_type],dword 2
jne @f
mov [option_group2],sort2
call .draw_opt_boxes
jmp .still
;---------------------------------------------------------------------
@@:
cmp [sort_type],dword 4
jne @f
mov [option_group2],sort4
call .draw_opt_boxes
jmp .still
;---------------------------------------------------------------------
@@:
cmp [sort_type],dword 6
jne .still ;@f
mov [option_group2],sort6
call .draw_opt_boxes
jmp .still
;---------------------------------------------------------------------
.button: ; button
mcall 17 ; get id
cmp ah,1 ; button id=1 ?
jne .noclose
;-------------------------------
.close:
mov eax,[sort_type_old]
mov [sort_type],eax
mov eax,[option_group2_old]
mov [option_group2],eax
.close_1:
xor dword [status],16
xor eax,eax
mov [PID5],eax
mcall 68,13,[thread_stack_5]
mcall -1 ; close this program
;---------------------------------------------------------------------
.noclose:
.kok:
mov eax,[load_directory_pointer]
cmp [eax+4],dword 0
je .close_1
call load_directory.copy_dir_path
call load_directory.sort
mov [sort_directory_flag],byte 1
jmp .close_1
;---------------------------------------------------------------------
; *********************************************
; ******** WINDOW DEFINITIONS AND DRAW ********
; *********************************************
.draw_window:
mcall 12,1
xor eax,eax ; function 0 : define and draw window
xor esi,esi
mcall ,<100,300>,<100,110>,0x13909090,,labelt5
mcall 8,<120,40>,<50,20>,4,0xdddddd
mcall 4,<46,28>,0xffffff,sorttext,sorttext.size
xor ecx,ecx
mcall ,<135,57>,,ok_btn,ok_btn.size
call .draw_opt_boxes
; mcall 47,0x80000,[PID5],<200, 5>,0xffffff
mcall 12,2
ret
;---------------------------------------------------------------------
.draw_opt_boxes:
push dword option_boxes_sort
call [option_box_draw]
ret
;---------------------------------------------------------------------
Spoiler:
Code: Select all
;---------------------------------------------------------------------
align 4
;option_boxes_sort:
sort0 option_box option_group2,60,40,6,12,0xFFFFFF,0,0xffffff,op_text_1.1,op_text_1.e1-op_text_1.1
sort2 option_box option_group2,60,55,6,12,0xFFFFFF,0,0xffffff,op_text_1.2,op_text_1.e2-op_text_1.2
sort4 option_box option_group2,60,70,6,12,0xFFFFFF,0,0xffffff,op_text_1.3,op_text_1.e3-op_text_1.3
sort6 option_box option_group2,60,85,6,12,0xFFFFFF,0,0xffffff,op_text_1.4,op_text_1.e4-op_text_1.4
option_boxes_sort_end:
op_text_1:
.1 db 'Name'
.e1:
.2 db 'Type'
.e2:
.3 db 'Date'
.e3:
.4 db 'Size'
.e4:
option_group2 dd sort2
option_group2_old dd 0
option_boxes_sort dd sort0, sort2, sort4, sort6,0
Я уж не знаю как еще проще объяснить.
Всем чмоки в этом проекте! Засуньте эти 11 лет себе в жопу!
Who is online
Users browsing this forum: No registered users and 37 guests