Réponse acceptée !
Bon, me voila enfin de retour.
Explications : au lieu d'hériter, on crée une classe dont un des membres est du type de la classe que l'on veut adapter ou envelopper.
Ensuite, il suffit de déclarer les méthodes, les propriétés et évènements que l'on veut voir apparaître dans notre nouveau composant. Ainsi, on peut déclarer les portées (publique, privée, protégée et privée) que l'on veut, cela n'a aucune importance vu de l'extérieur.
Diagramme d'un composant TMyImage, s'appuyant sur un TImage mais ne montrant que deux de ses propriétés (Enable et Visible) ainsi que ses constructeurs et son destructeur, simplifiant ainsi son usage :

Le code qui en résulte est très simple :
type
TMyImage = class (TGraphicControl)
private
FImage: TImage; function GetEnabled: Integer;
function GetVisible: Integer;
procedure SetEnabled(Value: Integer);
procedure SetVisible(Value: Integer);
public
constructor Create; overload;
constructor Create(AOwner: TComponent); overload;
destructor Destroy;
published
property Enabled: Integer read GetEnabled write SetEnabled;
property Visible: Integer read GetVisible write SetVisible;
end;
procedure Register;
implementation
procedure Register;
begin
RegisterComponents('Wrapped', [TMyImage]);
end;
{****************** Class: TMyImage ******************}
constructor TMyImage.Create;
begin
inherited Create;
FImage := TImage.Create;
end;
constructor TMyImage.Create(AOwner: TComponent);
begin
inherited Create;
FImage.Create(AOwner);end;
destructor TMyImage.Destroy;
begin
FImage.Destroy; inherited Destroy;
end;
function TMyImage.GetEnabled: Integer;
begin
Result := FImage.Enabled;
end;
function TMyImage.GetVisible: Integer;
begin
Result := FImage.Visible;
end;
procedure TMyImage.SetEnabled(Value: Integer);
begin
FImage.Enabled := Value;
end;
procedure TMyImage.SetVisible(Value: Integer);
begin
FImage.Visible := Value;
end;
end.
Les lignes de code qui ont vraiment un intérêt pédagogique ont été colorées en vert.
Donc, je peux maintenant ajouter les méthodes, propriétés et évènements souhaités à mon nouveau composant. Chaque fois que j'aurai besoin d'influer sur le comportement de l'image, je le ferai par le biais d'un appel de méthode sur le membre FImage. Pour les autres actions, je laisse la place à votre imagination fertile

Est-ce maintenant plus clair ?
Le Design pattern adapter est un motif structurel parmi les plus simples à mettre en oeuvre et je sens déjà qu'il n'a plus de secrets pour vous

May Delphi be with you !
Pensez à cliquer sur
Réponse acceptée lorsque la réponse vous convient.