Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Вопрос по внедрению КОЛ-компонентов в VCL-проекты на Delphi


Сызганов Н.А. ©   (2003-04-22 10:21:00) 

Вопрос конечно хулиганский,но тем не менее...

Допустим,у меня есть VCL-проект на Д7,который ну ни в
какую не перевести на КОЛ (например,работа в DBExpress).

В тоже время есть компоненты на КОЛ, которые намного эффективнее
и привлекательнее аналогичных компонентов на VCl,и поэтому появляется
желание использовать их в своём VCL-проекте.

Возможен ли такой гибрид,или эти два антипода концептуально
никогда не смогут пересечься,как два берега одной реки.

С уважением, Сызганов Николай.


BaRToV   (2003-04-30 14:00:00) [1]

Да, чтоб было понятно что к чему - читаем статью "Создание визуальных компонентов в KOL."
http://delphikol.narod.ru/docs/WritingComp.htm

или качаем архив статьи с примером
http://delphikol.narod.ru/docs/WritingComp.zip


BaRToV   (2003-04-30 13:50:00) [2]

2 Centronix

Сама MCK KOL не использует.
Еще как использует, начиная с версии 1.64(кажется, может и позже), чтобы отображать реально компонент.
И получается, что мы создаем реальный Run-Time компонент в MCK.

TKOLBAPDriveBox = class(TKOLComboBox)
...
protected
...
// Визуализация MCK
procedure CreateKOLControl(Recreating: boolean); override;

public
...
// Визуализация MCK
procedure SetParent(Value: TWinControl); override;
...
end;

(* ВИЗУАЛИЗАЦИЯ MCK *)

procedure TKOLBAPDriveBox.CreateKOLControl(Recreating: boolean);
begin
FKOLCtrl := PControl(NewBAPDriveBox(KOLParentCtrl, TRUE,
clHighlightText, clHighlight));
end;

procedure TKOLBAPDriveBox.SetParent(Value: TWinControl);
begin
inherited;
// Т. к. мы сами вырисовываем компонент, то необходимо вызвать RecreateWnd.
if Assigned(Value) then
( FKOLCtrl) [6]

2 Centronix

Сама MCK KOL не использует.
Еще как использует, начиная с версии 1.64(кажется, может и позже), чтобы отображать реально компонент.
И получается, что мы создаем реальный Run-Time компонент в MCK.

TKOLBAPDriveBox = class(TKOLComboBox)
...
protected
...
// Визуализация MCK
procedure CreateKOLControl(Recreating: boolean); override;

public
...
// Визуализация MCK
procedure SetParent(Value: TWinControl); override;
...
end;

(* ВИЗУАЛИЗАЦИЯ MCK *)

procedure TKOLBAPDriveBox.CreateKOLControl(Recreating: boolean);
begin
FKOLCtrl := PControl(NewBAPDriveBox(KOLParentCtrl, TRUE,
clHighlightText, clHighlight));
end;

procedure TKOLBAPDriveBox.SetParent(Value: TWinControl);
begin
inherited;
// Т. к. мы сами вырисовываем компонент, то необходимо вызвать RecreateWnd.
if Assigned(Value) then
RecreateWnd;
end;

...

if Assigned(FKOLCtrl) then // Визуализация MCK
PBAPDriveBox(FKOLCtrl)^.DriveName := FDriveName;

Что, не используется???... ;-)


Gandalf   (2003-04-24 14:48:00) [3]


> > VCL+MCK= невозможно
>
> это как?


Попытка бросить MCK компоненты на форму без KOLProject...


> МСК - это ведь смесь VCL и KOL. Не знаю только что во что
> добавляли, скорее всего KOL в VCL.


Я понимаю MCK как набор утилит для генерации кода инициализации, что позваляет разрабатывать приложение "визуально", то что процесс разработки похож на аналогичный с VCL, родства не прибавляет, а только вносит путаницу в понимании концепции. Может не совсем верная аналогия, но точнее отражает суть (с нужной стороны).


Centronix   (2003-04-24 14:48:00) [4]


> это как? МСК - это ведь смесь VCL и KOL. Не знаю только
> что во что добавляли, скорее всего KOL в VCL.

MCK - это набор чистых VCL контролов, которые генерируют код для создания соответствующих KOL контролов. Сама MCK KOL не использует.


SPeller   (2003-04-24 14:17:00) [5]


> VCL+MCK= невозможно

это как? МСК - это ведь смесь VCL и KOL. Не знаю только что во что добавляли, скорее всего KOL в VCL.


Gandalf   (2003-04-24 09:38:00) [6]

Во первых всеже надо различать внедрение KOL в VCL и VCL в KOL. Тут дело обстоит так. Вещи разные, разграничить можно по тому чей Application (Applet). Насчет внедрения VCL в KOL все довольно ясно, в основном невизуальные (не все) и некоторые визуальные. Но даже при таком легировании, VCL тащит столько примеси, что размер "ухает на дно". В чем выигрыш? VCL+MCK= невозможно, они несовместимы и друг друга не переносят. VCL+KOL возможно помолясь и с большими натяжками, потому как не получиться приципить визуальные компоненты, да и не визуальные тоже не все запашут. Выигрыш в размере - неуглядеть!


SPeller   (2003-04-22 14:40:00) [7]

VCL и KOL вполне могут существовать вместе. Пример тому - сама МСК.


Наверх

Титульная страница Поиск, карта сайта Написать письмо