Introduction | Downloads | Applications | News | FAQ | |
Forum | Subscribe | Articles | Links | Other |
Key Objects Library
Key Objects Library
ЧАВО (ЧАсто задаваемые Вопросы и Ответы) |
В: Что такое KOL? Что такое MCK? |
О: KOL - это библиотека объектных типов для программирования в среде Delphi. Основная цель KOL - уменьшение размера конечной программы (Win32, GUI) в 5-10 раз. Поддерживаются Delphi5, Delphi4, Delphi3, Delphi2. MCK - это набор зеркальных компонент, позволяющих разрабатывать проект на основе библиотеки KOL визуально. Компоненты MCK устанавливаются на палитру компонентов, работа с ними происходит так же, как это обычно делается в Delphi при визуальной разработк. В откомпилированном проекте визуальные компоненты замещаются своими невизуальными двойниками из KOL, в результате чего размер программы сокращается в несколько раз. |
В: Зависит ли размер программы, сделанной с помощью KOL, от версии Delphi? |
О: В очень малой степени. Разница между версиями Delphi3 и Delphi5 может колебаться (обычно) в пределах 1Кбайта, причем, в любую сторону. Однако, замена system.dcu предлагается пока только для Delphi5, а с этой заменой программа может быть еще на 9-10К меньше. Так что выбирайте. |
В: Библиотека KOL развивается, добавляются новые события, свойства, методы. Не опасаетесь ли Вы, что ваша библиотека раздуется до таких же размеров, как VCL? (И в чем тогда смысл изобретать велосипед...) |
О: Нисколько! Благодаря своей продуманной организации, KOL позволяет компилятору Delphi использовать так называемый smart-linking (дословно: "остроумное связывание"). Возьмем, к примеру, одно из недавних дополнений: событие OnDropFiles (1-May-2001, v0.71). Если оно не используется и не назначено, код программы не увеличивается НИ НА ОДИН БАЙТ. И только в случае, когда такое событие использовано в конечной программе, из библиотеки будет добавлен код двух процедур: метода SetOnDropFiles и процедуры WndProcDropFiles. Все дело в том, что на процедуру WndProcDropTarget имеется ссылка только из метода SetDropTarget, на который ссылка появляется только в случае явного присваивания значения событию OnDropTarget. И так устроена практически вся библиотека. (Так должна была бы быть построена VCL, но поскольку она устроена НЕ ТАК, то она и не может конкурировать ни с KOL, ни с какой другой библиотекой в плане экономии кода, подключаемого к исполнимой программе). |
В: Я использую замену sys*.dcu, но не могу использовать Write и другие подобные функции для работы с текстовыми файлами. Как мне заставить их работать? |
О: 1. Прочитать readme.txt J. 2. Вызвать процедуру UseInputOutput (один раз, например в dpr-файле). |
В: Как реализовать кнопку по умолчанию, срабатывающую на нажатию клавиши Enter или Escape? |
О: Использовать событие Applet.OnMessage (см. пример в TestKOL4). |
В: У меня установлен шрифт 125%. В VCL есть у формы свойство Scaled. Достаточно поставить его в False, и надписи на кнопках, метках и т.д. помещаются вне зависимости от разрешения экрана. Как сделать то же самое в KOL? |
О: В том-то и дело, что ничего
делать не надо. Кроме того, что прекратить
использовать шрифт по умолчанию. Для этого
достаточно обратиться к свойству Font
формы сразу после ее создания (в результате
происходит создание объекта TGraphicTool,
реализующего шрифт, который в последующем
устанавливается текущим для окна). Или можно
обратиться к свойству Font окна
приложения, родительского для всех форм.
Например, так: MyForm.Font; Или можно сразу же и изменить какое-либо свойство шрифта. Например, установить новый стиль, цвет, размер. Учтите, что по умолчанию шрифт получает значения, прописанные в глобальных переменных DefFontHeight (20 пикселов), DefFontName ('MS Sans Serif') и т.д. В то же время, любые дочерние визуальные контролы в момент создания унаследуют шрифт от родительского окна (если шрифт установлен в родительском окне). |
В: Когда используется переменная Applet, анимация при минимизации происходит не с позиции главной формы, а от верхнего левого угла экрана. Как это поправить? |
О: Использовать событие
Applet.OnMessage: function
TSomeObject.KOLForm1Message(var Msg: tagMSG; var Rslt:
Integer): Boolean; |
В: Как сделать DLL, содержащую форму, изготовленную в KOL, и правильно вызвать ее? |
О: Создать форму как обычно
и оттестировать ее в обычном приложении, без DLL
(форму можно создать визуально, используя MCK).
Затем, приготовить проект DLL, содержащий
экспортируемую функцию: function
ExecuteKOLform( < some parameters > ): Integer; stdcall; |
В: Возможно ли разрабатывать DLL, содержащую формы KOL визуально, используя MCK? |
О: Конечно. Создайте проект MCK как обычно, и затем измените слово program в dpr-file на library. Сделайте формы не автоматически создаваемыми, и добавьте экспортируемые функции подобно тому, как это показано в ответе на предыдущий вопрос. |
Copyright (C) by Vladimir Kladov, 2000-2001 |