MEnuet STACK

Главная

Дистрибутивы

Документации

Статьи

Программы

Старый форум

Новый форум

Ссылки


Официальный англоязычный сайт по Menuet OS

Русскоязычный сайт по Menuet OS

Форумы на SysBin

Файлы для Menuet OS

IRC - канал: #menuetos

Сайт операционной системы Triada

REBOOTING - операционные
системы,история,статьи Rambler's Top100

Документации


Quick Controls Manual - быстрое руководство пользователя.


Итак, что мы имеем...

На данный момоент (5.1.05) имеем пока что 4 основных компоненты, которые более менее функционируют

TEditBox	(sample.asm)	- 	текстовое поле ввода
TProgressBax	(progress.inc)	-	вывод % соотноешения в виде прямоугольника .. :)
 (привык так называт - "прогресс" да и все)
TButton		(buttons.inc)	-	кнопка, которая автоматичеки задает ID, выводит 
текст по центру и прочее
TLabel		(stdctrls.inc кажется ..) - вывод текста ...

над чем работаю (в ближайшем будущем)

TScrollBar	- ну и так ясно, скроллбар...
TCheckBox	-	флажок

что ещё осталось

TEditBox	- работа с текстом... текст выводится, а вот с вводом придётся ещё поработать
 (внутренний буффер, удаление, вставка...) + некоторые баги (просчёт координат)
TButton	-	всё работает более менее, за искючением что алгоритм вывода текста (центрирования) 
надо переделать ибо на малых размерх наблюдаются заметные смещения текста

Если вы рылись в исходничках, то видели что всё реализовано в виде структур...
Мне этот механизм намного удобнее нежели юзать макросы... в идеале было бы работать с обьектами,
но в фасме я онных не наблюдал... если кто то переделает контролы для работы в динамичекой памяти
это было бы очень здорово

каждый котнрол описывается как переменная с начальными параметрами (которые можно задать нулями)

например

Text1	TEditBox	0,0,0
Text2	TEditBox	100,200,40
			100-X,200-Y,40-количество отображаемых в боксе символов (пока что так...)

в случае Text1 начальные данные можно внести до вызова конструктора
mov	[Text1.X],100
mov	[Text1.Y],200
mov	[Text1.Count],30

и вызываем конструктор, который вызывает прорисовку компонента

call	Text1.Create

Все, компонент на форме...

для того что бы произвести ввод текста вызывается метод .Enter

call	Text1.Enter

при этом будет производиться ввод с клавы до тех пор, пока не будет потерян фокус ввода

call	Text1.CheckFocus
cmp	[Text1.isFocus],1
jz	фокус потерян

вывести строку для редактирования можно методом .SetValue

mov	edx,stringToEdit
mov	[Text1.Text],edx
call	Text1.SetValue

а получить введёную строку

call	Text1.GetValue

строка хранится по адресу Text1.Text

следует заметить что использутся ASCIIZ строки..
(это следует учитывать при использовании всех компонентов... моих по крайней мере)

Более любопытные могут просмотреть исходник компоненты, 
в частности метод .PrintChar, .BackSpace и ещё 
методы работы с буффером - необходимо реализовать посимвольный ввод в буффер, 
копирование, перемещение и т.д.
т.е. все основные операции, которые мы привыкли делать при вводе текста...
У меня пока на это мозгов не хватает :_) 
Просто я разбираюсь с текстом походу изучения самого асма и написания
компонент, ессно по этому они ещё дико неоптимизированные..

Работа с остальными компонентами таже

В TButton добавлен деструктор, который затирает образ кнопки, 
и её ID, освобождая данный ID для другой
копмоненты.

Это пока что всё... Со дня на день постараюсь выложить более подробное описание

(Вобщем концепция взята из Делфи...)

С ув. FreGL (Kharkov,Ukraine) АСЯ # 166399000
	
Copyright © 2004 MEnuet STACK. All rights reserved.
Design by Hex.
Сайт создан в системе uCoz