Что такое KOL? Что такое MCK? |
KOL - это библиотека объектных типов для программирования в
среде Delphi. Основная цель KOL - уменьшение размера конечной программы
(Win32, GUI) в 5-10 раз по сравнению с тем, что дает VCL. Поддерживаются
все 32-разрядные версии Delphi, начиная с Delphi2 и заканчивая Delphi7.
MCK - это набор зеркальных компонент, позволяющих разрабатывать проект на основе библиотеки KOL визуально. Компоненты MCK устанавливаются на палитру компонентов, работа с ними происходит так же, как это обычно делается в Delphi при визуальной разработке. В откомпилированном проекте визуальные компоненты замещаются своими невизуальными двойниками из KOL. Использование MCK сокращает размер исполнимой программы так же, как и при использовании KOL невизуально. Преимущество - визуальная разработка. Недостаток - некоторая зависимость от версии Delphi (проект, выполненный в более новой версии Delphi, не всегда удается открыть в более старой). |
Как правильно оформить вызов модальной формы? |
Всего имеется два варианта. Более простой, когда модальная форма
создается непосредственно перед показом и разрушается сразу после того,
как модальный диалог завершен - проще. И не требует использования
отдельного объекта Applet (в MCK - не обязательно использовать компонент
TKOLApplet на главной форме).
// показ модального диалога с его созданием // непосредственно перед началом диалога и // с разрушением - после: procedure TForm1.Button1Click(Sender: PObj); begin NewForm2( Form2, Applet ); // добавьте здесь свой код для инициализации // контролов формы Form2 Form2.Form.ShowModal; // добавьте здесь свой код для чтения // состояний контролов формы Form2 Form2.Form.Free; // нельзя использовать Close ! //ShowMessage( 'End of TForm1.Button1Click' ); end; // Для такого варианта достаточно определить // вот такой обработчик какой-либо кнопки // (но и он не требуется - достаточно закрыть // форму обычным образом, нажимая "крестик" // в заголовке окна, в этом случае значение // ModalResult = -1 по завершении). procedure TForm2.Button1Click(Sender: PObj); begin Form.ModalResult := 1; // любое значение <> 0 end; Чуть посложнее случай, когда форма существует (и обычно невидима), ее нужно модально показать, но не уничтожать по завершении диалога, а просто скрыть. В этом случае использование отдельного объекта Applet обязательно, главная форма не может выполнять его роль. Для MCK-проекта это означает, что на главную форму надо бросить компонент TKOLApplet. // Показ диалога модально: procedure TForm1.Button1Click(Sender: PObj); begin Form2.Form.ShowModal; Form2.Form.Hide; end; // Завершение диалога по кнопке: procedure TForm2.Button1Click(Sender: PObj); begin Form.ModalResult := 1; end; // Обязательно надо определить событие OnClose // и предотвратить в нем закрытие формы Form2: procedure TForm2.KOLForm1Close(Sender: PObj; var Accept: Boolean); begin Accept := FALSE; // предотвращаем закрытие Form.ModalResult := -1; // любое значение <> 0 end;Заметьте, что в обоих случаях за финальные действия (Close или Hide) отвечает код, инициирующий диалог, а не код, принадлежащий самой модальной форме. |
Copyright (C) 1999-2006 by Vladimir Kladov