📄 compositeunit1.pas
字号:
unit CompositeUnit1;
interface
type
TComposite = class;
TComponent = class
public
constructor Create; virtual;
function GetComposite(): TComposite; virtual;
end;
TComposite = class(TComponent)
public
constructor Create; virtual;
function GetComposite(): TComposite; override;
procedure add(aCompoent: Tcomponent); virtual;
procedure Remove(aCompoent: Tcomponent);virtual;
end;
TLeaf = class(TComponent)
public
constructor Create; virtual;
end;
procedure Test;
implementation
constructor TComponent.Create;
begin
//....
end;
function TComponent.GetComposite(): TComposite;
begin
//....
end;
constructor TComposite.Create;
begin
//....
end;
function TComposite.GetComposite(): TComposite;
begin
//....
end;
procedure TComposite.add(aCompoent: Tcomponent);
begin
//....
end;
procedure TComposite.Remove(aCompoent: Tcomponent);
begin
//....
end;
constructor TLeaf.Create;
begin
//....
end;
procedure Test;
var
aComposite, test: TComposite;
aLeaf: TLeaf;
aComponent,someComponent: TComponent;
begin
aComposite.Create;
aLeaf.Create;
aComponent := aComposite;
if (test is aComponent.GetComposite.ClassType) then
test.add(someComponent); //糤
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -