![]() |
![]() ![]() ![]() ![]() |
|
Создание компонентов для KOL и MCK - Часть 2 - Создание невизуальных MCK объектовDelphi , Технологии , 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 прямо в свой смартфон. Подпишитесь на наш
|
||||
©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007 | ||||