Базовые знания о KOL. Наше первое окно.
Базовый объект TObj - аналог класса TObject из VCL.
TObj мало похож на своего старшего брата, разве что методом удаления Free.
Я никогда не применял TObj для дела, поэтому плавно перейду ко второму
(самому главному для работы) объекту TControl.
TControl может выполнять роль любого визуального обьекта и фактически
выполняет обязанности для которых в Delphi отведены десяток классов. Для
создания определенного контрола вам надо воспользоваться соответствующим
"конструктором" . Под конструктором подразумевается функция,
в параметрах у которой указывается родительский объект ( на нем будет
находится ваш контрол, если дело касается визуальных объектов).
В KOL есть и другие объекты, но про них я расскажу в соответствующих уроках
так как они более узкоспециализированны.
Фактически, это не только ваше первое окно написанное с помощью KOL, но
и первая программа с использованием этой библиотеки :)
Для начало удалим все лишнее. Лишним я называю все, что относится к визуальному
программированию и VCL. В меню “Project“ выберите “Remove
from Project“ и удалите форму. Теперь подредактируем и файл проекта.
Нажмите F12 и выберите соответствующий файл.
То, что вы увидите, будет выглядеть примерно так:
program Project1; uses Forms; {$R *.RES} begin Application.Initialize; Application.Run; end. Подредактируем текст : program Project1; uses Windows, messages, KOL; {$R *.RES} begin end.
Можно конечно удалить и строчку {$R *.RES} (тем самым уменьшив приложение
на пару кб), но я предпочитаю оставлять эту строку, чтобы приложение было
более красивым (красивые иконки - это моя слабость;)
Ну, а теперь можно сохранить наш проект (например под именем L1). Конечно,
как вы понимаете, это еще не программа, но запустить ее можете уже и сейчас.
Вернемся к KOL.
function NewForm( AParent: PControl; const Caption: String ): PControl; |
Для создания формы надо воспользоваться конструктором NewForm. В параметрах у этого конструктора указывается специальный объект Applet (AParent) и заголовок окна (Caption). Вы наверное сразу зададитесь вопросом: что такое Applet ? Для ответа на этот вопрос надо вспомнить то, о чем я говорил об обьекте TControl (ну, насчет того, что в параметрах конструктора визуальных контролов обычно указывается объект, на котором находится контрол). Так Applet - это объект, "на котором" создается окно. Если у вас одно окно, то этот объект создается автоматически и не надо пользоваться его конструктором.
function NewApplet( const Caption: String ): PControl; |
Вот пример создания окна:
program L1; uses Windows, messages, KOL; {$R *.RES} var form:PControl; begin form:=NewForm(Applet,'Первое окно'); run(form); end.
Функция Run, "запускает" программу, т.е. запускает цикл, в котором обрабатываются сообщения программы.
Теперь рассмотрим некоторые свойства окна, из которых многие аналогичны стандартным свойствам форм Delphi.
Свойство | Описание |
Width | Длина окна |
Height | Высота окна |
Саption | Заголовок |
Handle | Хендл |
Style | Стиль окна |
ExStyle | Расширенный стиль окна |
Top | Положение окна от верхнего края монитора |
Left | Положение окна от левого края монитора |
Это конечно не все свойства, но они обычно самые нужные.
Style и ExStyle отвечают за то, что у обычной формы в VCL отвечает свойство
FormStyle. Для тех, кто никогда не имел дело с API, привожу список тех
значений, которые они могут принимать. Для Style (основные):
Для расширенного стиля окна ExStyle значения следующие:
Общий стиль окна получается соединением флагов при помощи операции OR.
Если вы используете флаги стиля, то один из них должен быть WS_VISIBLE.
В следующей таблице я покажу какими должны быть флаги, для того чтобы
создавать окна аналогичные окнам, создаваемым в Delphi.
Delphi
|
KOL |
bsSizeable |
Form.Style := WS_THICKFRAME or WS_SYSMENU or WS_MAXIMIZEBOX
or WS_MINIMIZEBOX or WS_VISIBLE; |
bsSingle | Form.Style := WS_BORDER or WS_SYSMENU or WS_MAXIMIZEBOX or WS_MINIMIZEBOX or WS_VISIBLE; |
bsNone | Form.Style := WS_POPUP or WS_VISIBLE; |
bsDialog | Form.Style := WS_BORDER or WS_SYSMENU or WS_VISIBLE; |
bsSizeToolWin | Form.ExStyle := WS_EX_TOOLWINDOW; |
bsToolWindow | Form.Style := WS_BORDER or WS_SYSMENU
or WS_VISIBLE; Form.ExStyle := WS_EX_TOOLWINDOW; |
Но кроме этих типов окон, вы сможете создавать и любые другие, просто по разному комбинируя с флагами стилей.
У окна в KOL есть несколько свойств, позволяющие упрощенное изменение вида окна. Например:
Также в KOL-окно уже "встроен" StatusBar. Чтобы у вас появилась надпись внизу экрана вам достаточно обратится к свойству
StatusText[idx:integer]:PChar;
idx отвечает в какой "ячейке" у вас будет надпись. Например
если у вас окно Form, то строка
Form.StatusText[1]:='Пример';
Этой информации достаточно, чтобы создать окно на KOL.
Источник: http://bonanzas.rinet.ru , http://kol.mastak.ru
|
Программирование для чайников.
|