Создание компонентов для KOL и MCK - Часть 2 - Создание невизуальных MCK объектовDelphi , Технологии , KOL и MCKСоздание компонентов для KOL и MCK - Часть 2 - Создание невизуальных MCK объектовВедущий раздела KOL и MCK: Анатолий aka XVeL Полную версию библиотеки KOL и MCK можно скачать здесь Создание невизуальных MCK объектов: Нечего на Mirror пенять коль… Возможно, после завершения прошлой главы у вас осталось двоякое чувство, с одной стороны мы сделали KOL компонент, с другой не на йоту не пододвинулись к MCK и компонентом в палитре пока и не пахнет. Для того, что понять, как делать MCK компоненты, разберемся что это. Итак, если посмотреть на код нашего проекта (KOL и MCK ) мы увидим строку: unit MCKMHAboutDialog; interface uses KOL, KOLMHAboutDialog, Mirror, MCKObjs, Classes, Graphics; type TKOLMHAboutDialog = class(TKOLObj) private FTitle: String; FCopyRight: String; FText: String; FIcon: TIcon; FIconType: TIconType; procedure SetTitle(const Value: String); procedure SetCopyRight(const Value: String); procedure SetText(const Value: String); procedure SetIcon(const Value: TIcon); procedure SetIconType(const Value: TIconType); protected function AdditionalUnits: string; override; procedure SetupFirst(SL: TStringList; const AName,AParent, Prefix: String); override; function SetupParams(const AName, AParent: String): String; public constructor Create(AOwner: TComponent); override; destructor Destroy; override; published property Title: String read FTitle write SetTitle; property CopyRight: String read FCopyRight write SetCopyRight; property Text: String read FText write SetText; property Icon: TIcon read FIcon write SetIcon; property IconType: TIconType read FIconType write SetIconType; end; procedure Register; implementation constructor TKOLMHAboutDialog.Create(AOwner: TComponent); begin inherited; FTitle := 'О программе "Программа"'; FCopyRight := 'CopyRight 1984-2001 Ваша Фирма'; FText := 'Программа'; FIcon := TIcon.Create; FIconType := itApplication; end; destructor TKOLMHAboutDialog.Destroy; begin FIcon.Free; inherited; end; function TKOLMHAboutDialog.AdditionalUnits; begin Result := ', KOLMHAboutDialog'; end; procedure TKOLMHAboutDialog.SetupFirst(SL: TStringList; const AName, AParent, Prefix: String); const IconType2Str: array [TIconType] of String = ('itShell', 'itApplication', 'itCustom'); var RsrcName, RsrcFile: String; begin inherited; SL.Add(Prefix + AName + '.Title:=' + String2PascalStrExpr(Title) + ';'); SL.Add(Prefix + AName + '.CopyRight:=' + String2PascalStrExpr(CopyRight) + ';'); SL.Add(Prefix + AName + '.Text:=' + String2PascalStrExpr(Text) + ';'); if Icon.Empty then SL.Add(Prefix + AName + '.Icon:=0;') else begin RsrcName := UpperCase(ParentKOLForm.FormName + '_' + Name); RsrcFile := ParentKOLForm.FormName + '_' + Name; SL.Add(Prefix + AName + '.Icon:=LoadIcon(hInstance,' + String2PascalStrExpr(RsrcName) + ')' + ';'); SL.Add(Prefix + ' {$R ' + RsrcFile + '.RES}'); GenerateIconResource(Icon, RsrcName, RsrcFile, fUpdated); end; SL.Add(Prefix + AName + '.IconType:=' + IconType2Str[IconType] + ';'); end; function TKOLMHAboutDialog.SetupParams(const AName, AParent: String): String; begin Result := ''; end; procedure TKOLMHAboutDialog.SetTitle(const Value: String); begin FTitle := Value; Change; end; procedure TKOLMHAboutDialog.SetCopyRight(const Value: String); begin FCopyRight := Value; Change; end; procedure TKOLMHAboutDialog.SetText(const Value: String); begin FText := Value; Change; end; procedure TKOLMHAboutDialog.SetIcon(const Value: TIcon); begin FIcon.Assign(Value); Change; end; procedure TKOLMHAboutDialog.SetIconType(const Value: TIconType); begin FIconType := Value; Change; end; procedure Register; begin RegisterComponents('KOL Dialogs', [TKOLMHAboutDialog]); end; end. Обратите внимания на названия файла, но более на название нашего класса (TKOLMHAboutDialog) оно должно соответствовать тому, что объявляли в KOL компоненте. procedure TKOLMHAboutDialog.SetIconType(const Value: TIconType); begin if Value<>FiconType then FIconType:=Value; …
if Icon.Empty then SL.Add(Prefix + AName + '.Icon:=0;') else begin RsrcName := UpperCase(ParentKOLForm.FormName + '_' + Name); RsrcFile := ParentKOLForm.FormName + '_' + Name; SL.Add(Prefix + AName + '.Icon:=LoadIcon(hInstance,' + String2PascalStrExpr(RsrcName) + ')' + ';'); SL.Add(Prefix + ' {$R ' + RsrcFile + '.RES}'); GenerateIconResource(Icon, RsrcName, RsrcFile, fUpdated); end;
Создание невизуальных MCK объектов: в статье описывается процесс создания неvizual'ных MCK объектов с помощью класса TKOLMHAboutDialog, который наследуется от класса TKOLObj и предоставляет функциональность для создания компонентов KOL и MCK. Комментарии и вопросыПолучайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 |