Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2004.01.13;
Скачать: CL | DM;

Вниз

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

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

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

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

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

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

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


 
SPeller ©   (2003-04-22 14:40) [1]

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


 
Gandalf ©   (2003-04-24 09:38) [2]

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


 
SPeller ©   (2003-04-24 14:17) [3]


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

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


 
Gandalf ©   (2003-04-24 14:48) [4]


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


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


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


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


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


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

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


 
BaRToV   (2003-04-30 13:50) [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
( 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;

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


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

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

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



Страницы: 1 вся ветка

Текущий архив: 2004.01.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.019 c
1-37698
Tumcoat
2003-12-26 03:53
2004.01.13
Выравнивание столбцов таблицы в Word-е


4-37992
SkyN
2003-11-08 11:04
2004.01.13
Как вынуть иконку из exe файла и вставить в замен другую?


1-37604
kullibin
2003-12-31 11:08
2004.01.13
Слежка


11-37595
Кладов
2003-04-21 20:04
2004.01.13
Версия 1.72


1-37768
yaric
2003-12-29 14:57
2004.01.13
Фокус ввода для ячейки в TStringGrid