Page 14 of 29

Re: box_lib.obj - библиотека gui компонентов

Posted: Mon Jul 30, 2012 4:17 pm
by punk_joker
IgorA wrote:Простых примеров скорее всего нет. Есть примеры которые есть используют сразу несколько элементов.
Ну или хотябы не самые сложные примеры.

Re: box_lib.obj - библиотека gui компонентов

Posted: Mon Jul 30, 2012 6:43 pm
by 0CodErr
У edit_box-а после вызова edit_box_set_text не пропадает выделение, если оно было до вызова.

Re: box_lib.obj - библиотека gui компонентов

Posted: Wed Aug 01, 2012 11:24 am
by IgorA
0CodErr wrote:У edit_box-а после вызова edit_box_set_text не пропадает выделение, если оно было до вызова.
Исправил в ревизии 2898

Posted: Fri Aug 17, 2012 9:27 am
by punk_joker
В каком формате возвращает значение форма для ввода данных, с флагом ввода только цифр?

Re:

Posted: Fri Aug 17, 2012 11:53 am
by IgorA
punk_joker wrote:В каком формате возвращает значение форма для ввода данных, с флагом ввода только цифр?
Каким образом возвращает? Если подразумевается указатель text в структуре editbox, то там по указателю будет строка текста.
Вообще флаг ввода только цифр ничего не преобразовывает в числовой формат, он просто фильтрует попытки ввода не числовых символов.

Re: box_lib.obj - библиотека gui компонентов

Posted: Fri Aug 17, 2012 12:22 pm
by Mario
Вообще можно сделать чтобы возвращалось целое число, но такой метод не гибкий и по идее выходит за рамки логической целесообразности.

Posted: Fri Aug 17, 2012 5:10 pm
by punk_joker
Ну я так и думал насчет возвращаемого значения. И еще, есть у кого процедурка или макрос для преобразования этой строки в число? А то не хочется лишний раз велосипед изобретать, а учитывая мой опыт на фасме это дело может затянуться.

Re: box_lib.obj - библиотека gui компонентов

Posted: Fri Aug 17, 2012 6:59 pm
by IgorA
есть функция, только она для целочисленных значений (без плавающей точки)
Spoiler:

Code: Select all

;input:
; buf - указатель на строку, число должно быть в 10 или 16 ричном виде
;output:
; eax - число
align 4
proc conv_str_to_int, buf:dword
	xor eax,eax
	push ebx ecx esi
	xor ebx,ebx
	mov esi,[buf]

	;на случай если перед числом находятся пробелы
	@@:
	cmp byte[esi],' '
	jne @f
		inc esi
		jmp @b
	@@:

	;определение отрицательных чисел
	xor ecx,ecx
	inc ecx
	cmp byte[esi],'-'
	jne @f
		dec ecx
		inc esi
	@@:

	cmp word[esi],'0x'
	je .load_digit_16

	.load_digit_10: ;считывание 10-тичных цифр
		mov bl,byte[esi]
		cmp bl,'0'
		jl @f
		cmp bl,'9'
		jg @f
			sub bl,'0'
			imul eax,10
			add eax,ebx
			inc esi
			jmp .load_digit_10
	jmp @f

	.load_digit_16: ;считывание 16-ричных цифр
		add esi,2
	.cycle_16:
		mov bl,byte[esi]
		cmp bl,'0'
		jl @f
		cmp bl,'f'
		jg @f
		cmp bl,'9'
		jle .us1
			cmp bl,'A'
			jl @f ;отсеиваем символы >'9' и <'A'
		.us1: ;составное условие
		cmp bl,'F'
		jle .us2
			cmp bl,'a'
			jl @f ;отсеиваем символы >'F' и <'a'
			sub bl,32 ;переводим символы в верхний регистр, для упрощения их последущей обработки
		.us2: ;составное условие
			sub bl,'0'
			cmp bl,9
			jle .cor1
				sub bl,7 ;convert 'A' to '10'
			.cor1:
			shl eax,4
			add eax,ebx
			inc esi
			jmp .cycle_16
	@@:
	cmp ecx,0 ;если число отрицательное
	jne @f
		sub ecx,eax
		mov eax,ecx
	@@:
	pop esi ecx ebx
	ret
endp

Re: box_lib.obj - библиотека gui компонентов

Posted: Sat Aug 18, 2012 12:55 pm
by Asper
punk_joker

Например так.

Posted: Sun Aug 19, 2012 8:24 pm
by punk_joker
Вопрос по option_box. Куда заноситсю значение? Если я правильно понимаю, то если пункт выбран, то возвращает значение 1, иначе 0. Но куда это значение возвращается?

Posted: Sun Aug 19, 2012 8:28 pm
by punk_joker
Asper спасибо за исходничек, многое помог понять.

Posted: Thu Aug 23, 2012 8:05 am
by punk_joker
Второй пост в вверх. Подскажите.

Re: box_lib.obj - библиотека gui компонентов

Posted: Thu Aug 23, 2012 8:38 am
by Mario
http://websvn.kolibrios.org/filedetails ... ox_lib.mac
Spoiler:

Code: Select all

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Basic macros for use OptionBox                           ;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

struc option_box point_gr,left,top,op_text_margin,op_size,color,border_color,text_color,text,op_text_length,flags

{        ;структура параметров для чек бокса
op_flag_en=10b
.option_group: dd point_gr
.left: dw left       ;+0 ;положение по х
.top:  dw top        ;положение по у
.ch_text_margin:  dd op_text_margin ;расстояние от прямоугольника чек бокса до надписи
.ch_size: dd op_size ;размер квадрата чек бокса, для примера 12
.color:   dd color   ;цвет внутри чекбокса
.border_color: dd border_color ;цвет рамки
.text_color:   dd text_color   ;цвет надписи
.text: dd text                 ;адрес в коде программы где расположен текст
.ch_text_length: dd op_text_length ;длинна строки с символами
.flags: dd flags+0   ; флаги
}
.flags: dd flags+0 ; флаги

Re: box_lib.obj - библиотека gui компонентов

Posted: Thu Nov 01, 2012 2:50 pm
by 0CodErr
Устанавливаю для скроллбара такие параметры:

Code: Select all

scrollbar:
  .size_x         dw 15
  .start_x        dw 20
  .size_y         dw 300
  .start_y        dw 20
  .btn_high       dd 15
  .type           dd 1
  .max_area       dd 30
  .cur_area       dd 7
  .position       dd 0
  .bckg_col       dd 0xEEEEEE
  .frnt_col       dd 0xBBDDFF
  .line_col       dd 0
  .redraw         dd 0
  .delta          dw 0
  .delta2         dw 0
  .r_size_x       dw 0
  .r_start_x      dw 0
  .r_size_y       dw 0
  .r_start_y      dw 0
  .m_pos          dd 0
  .m_pos_2        dd 0
  .m_keys         dd 0
  .run_size       dd 0
  .position2      dd 0
  .work_size      dd 0
  .all_redraw     dd 1
  .ar_offset      dd 10
Если передвинуть ползунок до конца вниз, то .position = 24.
Теперь, если нажать на скроллбаре кнопку со стрелочкой вниз, то .position = 23.

Re: box_lib.obj - библиотека gui компонентов

Posted: Mon Nov 19, 2012 8:01 am
by 0CodErr
Должен ли edit_box терять фокус при нажатии на кнопку(событие с кодом 3)?