| :: Написание компонент для оболочки HiAsm 3.x :: | ||||||||||||||||||||||||||||||||||||
| Одна из новых замечательных возможностей HiAsm3 - это возможность
самостоятельно написать свой собственный компонент для интеграции в среду.
Причем сразу стоит отметить тот факт, что пользовательские компоненты ничем не
будут отличатся от тех, что поставляются вместе с программой. А это значит, что
конечный EXE файл по прежнему останется автономной, не требующей дополнительных
библиотек программой(если конечно вы не будете использовать в своём компоненте
внешние DLL библиотеки). Писать компоненты в HiAsm3 просто, но несмотря на это
вам необходимо хоть какое-то представление о принципах программирования в целом
и знание языка Pascal в часности. |
||||||||||||||||||||||||||||||||||||
| Этапы разработки компонента | ||||||||||||||||||||||||||||||||||||
| Написание компонента для HiAsm достаточно простой и
быстрый процесс(по сравнению с тем, как это было в предыдущих версиях). Так,
например, полный шаблон со всем описанием для таких компонент, как Beep, Ping,
WinExec и прочие делается с среднем за 2-3 минуты, причем большая часть времени
уходит на составление описания точек входа. Всё проектирование компонента можно разделить на две части: 1) написание шаблона 2) реализация методов и вспомогательного кода Первый этап заключается в том, что пользователь составляет "шаблон" компонента(файл конфигурации) со всем его описанием и определяет для него иконку размером 24х24. Затем по составленному файлу конфигурации, пользователь создает "шаблон" кода. На этом шаге вы уже сможите запустить HiAsm и посмотреть, что у вас получилось. Файл конфигурации вам поможет составить программа ECreator, она же сразу зарегестрирует компонент в оболочке. Второй этап - это наполнение методов компонента кодом на языке Object Pascal(Delphi). Тут теоритически вы можите использовать любой текстовый редактор вроде программы Notepad, но конечно же лучше воспользоваться какой либо оболочкой Delphi. |
||||||||||||||||||||||||||||||||||||
| Первый этап | ||||||||||||||||||||||||||||||||||||
|
И так сначало, как написано выше, необходимо составить файл конфигурации компонента. Для этого вы можите использовать программу ECreator или любой текстовый редактор, поскольку формат описания компонента практически идентичен формату INI файлов Windows и не содержит никаких специальных символов. ------- ШАГ 1 ------- Весь файл конфигурации делится на 5 секций: [About ] - некоторая информация об авторе и версии компонента На данный момент информация из этой секции нигде не используется и содержит 2 поля Version - версия елемента; Author - автор. При реализации этой секции желательно так же использовать поля Home - адрес домашней страницы и Mail - почтовый ящик Секция [Type] Может содержать всего 3 поля:
Стоит сразу отметить, что из этих пяти классов EditMulti - не
используется нигде, а классы MultiElement и WinElement вы сможете использовать
только в том случае, если помимо языка Object Pascal знаете ещё и то,
что такое KOL. Поэтому советую начинать с построения простых компонент,
основанных на классе Element.
Element - если указать этот параметр равным Form( Sub=Form или если вы работаете с программой ECretor - поставить галочку Form ), то HiAsm сгенерирует код, в котором компонент получит ссылку на родительский визуальный элемент( MediaPlayer, ClipboardHook, KeyHook ). Для класса WinElement такой код генерируется всегда и параметр указывать не нужно. Необходимо это потому, что некоторым компонентам необходимо перехватывать и принимать сообщения, которые Windows шлёт форме. Небольшой совет разработчикам: если ваш компонет может обойтись без формы, то не используйте этот параметр, т.к. вы не сможете поместить его(компонент) в проектах где нет формы. Однако если вам нужен(но не обязателен!) доступ к форме, то получить его можно так: if Assigned(Applet) then Applet.Children[0].Caption := 'Главная форма'; В этом примере сначало происходит проверка на доступность главного апплета приложения, затем первой форме(главная форма всегда создается первой и имеет индекс 0) в заголовок помещается надпись 'Главная форма'. Примерами таких компонет в HiAsm являются Message, Browse и диалоги выбора файла. MultiElement - указывает на то, какой визуальный компонент будет компонентом-родителем. В качестве значения прописывается имя компонента-контейнера из папки conf. Например, у ChildPanel это поле выглядит так: Sub=Panel, которое указывает HiAsm автоматически вставить компонент Panel внутрь компонента ChildPanel. DPElement - служит для описания имен динамически создаваемых точек входа и указания какое свойство отвечает за данный тип точек(это св-во, само собой разумеется должно иметь тип Integer). Формат описания точек следующий: Sub=(имя св-ва для точек Work)|(общее имя создаваемых точек Work),(... Event)|(... Event),(... Var)|(... Var),(... Data)|(... Data) Вот как вылядит этот параметр у компонента Hub: Секция [Edit]
Секция [Property] (Имя свойства)=(help)|(тип)|(начальное значение)[|(Список выбора)]
(начальное значение) - значение по-умолчанию для данного св-ва. Задаётся только для типов: Integer,String,List(в виде номера пункта начиная с 0),StrList(в виде (строка1)#13#10(строка2) и т.д), Real,Color(кроме числа поддерживаются все стандартные константы: clRed, clWindows, clYellow и т.д.) (Список выбора) - определяется только в том случае, если выбран тип List и содержит перечисление всех пунктов выбора через запятую( например: True,False ). Секция [Methods]
Если вы используете программу ECreator, то в последнем поле нужно указать папку с установленной программой(например c:\program files\HiAsm3\) и нажать кнопку Save. После этой операции программа добавит компонент к среде разработки и зарегестрирует его. Если вы не используете программу или решили переместить компонент с одной вкладки в другую, то вы можите открыть файл \HiAsm3\Elements\Elements.ini и изменить или добавить описание компонента. Формат этого файла достаточно прост и не нуждается в описание. Сам же файл конфигурации будет помещен в папку \HiAsm3\Elements\conf где вы всегда можите его найти в случае необходимости. ------- ШАГ 2 ------- После успешного создания прототипа компонента самое время определить ему иконку в соответствие с его функциями. Иконка компонента может иметь любую глубину цвета, с длинной и шириной равной 24 пикселям. Иконка компонента помещается в папку \HiAsm3\Elements\icon и должна иметь точно такое же имя, как и файл конфигурации. Если вы укажите другое имя или не поместите иконку вообще, то HiAsm в качестве таковой вставит иконку с именем nil.ico. ------- ШАГ 3 ------- Последний шаг первого этапа состоит в генерации шаблона кода на языке Object Pascal(Delphi). В этом вам может помочь программа Code.exe. К сожалению на данный момент она правильно генерирует код только для компонент класса Element( тот самый, что указывается в секции [Type]). Остальные придется делать вручную на основе исходных кодов компонент из стандартного пакета. Для упрощения отладки компонент в среду HiAsm добавлены специальные сочетания клавиш: Ctrl+F - открыть исходный текст выделенного компонента из папки code, Ctrl+G - открыть файл конфигурации компонента из папки conf. |
||||||||||||||||||||||||||||||||||||
| Второй этап | ||||||||||||||||||||||||||||||||||||
|
На втором этапе вы наполняете сгенерированный исходник компонента кодом. Пока
нет смысла разъяснять этот процесс для компонент с классом Element, так как
программа Code.exe всё сделает сама, а всё остальное вы без проблем сможете
дописать сами, ознакомившись с исходным текстом нескольких простых елементов из
папки Elements\code. Для остальных же классов описание будет сделано позже. |
||||||||||||||||||||||||||||||||||||
| Программы для закачки | ||||||||||||||||||||||||||||||||||||
|
ECreator.exe (146Kb) -
создание Файла конфигурации компонента Code.exe (136Kb) - создание шаблона кода компонента |