Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Книга о KOL.doc
Скачиваний:
29
Добавлен:
30.04.2019
Размер:
1.77 Mб
Скачать

2.25.2. Настройка формы

Теперь, когда открыт созданный только что MCK-проект, вы можете попробовать его откомпилировать и запустить на выполнение. Как обычно, нажмите зеленую стрелочку на линейке инструментов Delphi, или клавишу F9.

Не получилось? Наверное, надо в опциях проекта прописать путь к файлу KOL.pas. В меню Delphi выберите: Project|Options, далее на закладке Directories/Conditionals найдите поле Search Paths, впишите здесь C:\KOL - ну, или тот путь, по которому у вас "установлена" библиотека KOL.

Проект должен откомпилироваться и запуститься, форма должна показаться. Пока что на ней ничего нет, конечно. Окно формы можно подвигать, поизменять его размеры, поминимизировать, после чего закрыть.

Загляните в папку проекта (чтобы сделать это быстро, вы можете кликнуть на компоненте TKOLProject правой кнопкой мыши, и выбрать пункт меню Open Project Folder - он находится почти в самом верху списка), и выделите собранный исполнимый файл. Посмотрите, какой получился размер исполнимого файла. Вы можете убедиться, что размер у него достаточно мал, по сравнению с проектом из одной формы, которая получается в VCL (у меня сейчас получилось 22 Килобайта). Вы можете прямо сейчас сделать его еще меньше, если вы уже скачали и распаковали файлы для замены системных модулей в какую-либо папку. Откройте опции проекта (Project|Options) и в закладке Directories/Conditionals в поле Search Paths допишите (через точку с запятой) путь к этой папке. Теперь проект необходимо пересобрать (Project|Build). Посмотрите теперь, что стало с размером exe-файла. У меня получилось 14,5 Килобайт (вообще, эта цифра может на пару килобайт различаться в зависимости от используемой версии Delphi).

Пожалуй, для демонстрации возможностей по экономии размера можно сделать еще кое-что. Если прямо сейчас выделить на форме компонент TKOLForm, и изменить в Инспекторе Объектов значения свойств defaultPosition и defaultSize на true, в список символов условной компиляции - через точку с запятой после имеющегося там символа KOL_MCK добавить еще пару символов: SMALLEST_CODE и NOT_USE_RICHEDIT, то у меня получается 13,5 Килобайт. И что замечательно, полученный исполнимый файл может быть сжат утилитой сжатия типа UPX или AsPack еще до 8,5 Кбайт – т.е. примерно в том же отношении (на треть), как и большой VCL-проект.

Далее, понастраиваем форму. Если мы хотим всего лишь изменить ее размеры или позицию, то для изменения этих параметров формы во время разработки следует поступать как обычно, т.е. хватать мышку, и менять размеры формы. Да, соответствующие свойства defaultSize и defaultPosition придется вернуть в значение false, если вас не устраивают значения, присваиваемые системой по умолчанию.

В

се остальные свойства формы настраивать теперь следует через компонент TKOLForm. Если вы выделите форму, как вы это делали в VCL-проекте, и попробуете изменить какое-либо свойство, вроде Caption, или еще что-нибудь, это никак не отразится на форме при ее запуске. Итак, вот вам правило №1: для изменения свойств формы в MCK необходимо выделить компонент TKOLForm, и изменять в нем требуемые свойства (тот же Caption).

Теперь вы можете настраивать форму, как хотите. MCK будет генерировать код в модуле Uni1_1.inc (именно там находится код для инициализации формы, автоматически созданный компонентами MCK). Обычно нет необходимости загружать этот модуль в редактор IDE.

И

ни в коем случае не пытайтесь что-нибудь исправлять вручную в этом inc-файле: такие исправления доживут только до следующего изменения любого из свойств любого компонента MCK, после чего будет сгенерирована новая версия кода инициализации формы, и ваш труд по исправлению пропадет бесследно.

Е

if not OnShow_Fired then

begin

// код, который отработает

// только в первом вызове OnShow

end;

OnShow_Fired := true;

сли в инициализации формы требуется добавить какой-то свой код, то сделать это можно в обработчике события OnFormCreate, OnBeforeCreateWindow или в OnShow. Заметьте, что если какой-то код в обработчике события OnShow должен отработать один раз, необходимо обеспечить проверку того, что OnShow вызывается именно в первый раз. Например, завести свою булевскую переменную OnShow_Fired, которой присвоить true после первого исполнения OnShow, и поставить соответствующую проверку.

Необходимо учесть в обработчике "события" OnFormCreate, что дескрипторы окон все еще могут не существовать для визуальных объектов формы. В обработчике "события" OnBeforeCreateWindow дескрипторы окон не существуют гарантированно. А некоторые объекты могут быть в этот момент не созданы как объекты (т.е. указатели на них пока что содержат nil, и попытка обратиться к их свойствам, методам, полям приведет в этом случае к краху приложения). Т.е. необходимо добавить соответствующие проверки в свой код обработчиков.