에서 I 캔버스에 다른 물건을 그리 인터페이스
일반 TLIST <IMyInterface> 델파이
IImage = interface
// another methods...
procedure Draw;
end;
의 TList를이.
및TCustomImage = class(TInterfacedObject, IImage)
procedure Draw; virtual; abstract;
end;
와 자식 클래스의 몇
TSomeShape = class(TCustomImage, IImage)
procedure Draw(aCanvas:TCanvas); reintroduce; overload;
end;
TSomeAnotherShape = class(TCustomImage, IImage)
procedure Draw(aCanvas:TCanvas); reintroduce; overload;
end;
나는 다음과 같이 코드를하고자하는 부모 클래스 :
var
list : TList<IImage>;
shape : IImage;
begin
try
list := TList<IImage>.Create;
list.Add(TSomeShape.Create(atSomePosition));
list.Add(TSomeAnotherShape.Create(atSomePosition));
// or better :)
for shape in list do
shape.Draw(Canvas); // TSomeShape and TSomeAnotherShape respectively.
finally
FreeAndNil(list);
end;
end;
UPD
올바른 클래스 (TSomeShape
또는 TSomeAnotherShape
)로 list.Items[I].draw()
을 사용하고 싶습니다. 그러나 지금, 나는 이것이 IImage
인터페이스로는 불가능하다는 것을 안다. 나는 IImage에 Draw(Canvas:TCanvas)
메소드를 가지고 있었지만 클래스에서 메소드를 재 도입하는 것이 합리적이라고 생각했습니다.
감사합니다. 코드를 작성해 드리겠습니다. :)
실제 문제는 무엇입니까? 코드 샘플을 제공하는 것 외에는 설명 할 필요가 없습니다. –
아래 해결 방법으로 해결할 수있는 경우 해당 진드기를 맞추어 허용 된 답변으로 표시하십시오. –