unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls; type TMaman = class(TObject) private Fs_Moi : string ; public constructor Create(ps_CestQui : string); procedure ShowChuiQui; virtual; end; TFifille_1 = class(TMaman) public procedure ShowChuiQui; end; TFifille_2 = class(TMaman) public procedure ShowChuiQui; end; TForm1 = class(TForm) Button1: TButton; procedure FormCreate(Sender: TObject); procedure FormActivate(Sender: TObject); procedure Button1Click(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } MesFilles : array of TMaman; end; var Form1: TForm1; implementation {$R *.dfm} constructor TMaman.Create(ps_CestQui : string); begin Fs_Moi := ps_CestQui; end; procedure TMaman.ShowChuiQui; begin showmessage('Maman : ' + Fs_Moi); end; procedure TFifille_1.ShowChuiQui; begin showmessage('Fifille_1 : ' + Fs_Moi); end; procedure TFifille_2.ShowChuiQui; begin showmessage('Fifille_2 : ' + Fs_Moi); end; procedure TForm1.FormCreate(Sender: TObject); begin SetLength(MesFilles, 2); MesFilles[0] := TFifille_1.Create('Joséphine'); MesFilles[1] := TFifille_2.Create('Berthe'); end; procedure TForm1.FormActivate(Sender: TObject); begin MesFilles[0].ShowChuiQui; end; procedure TForm1.Button1Click(Sender: TObject); begin if mesfilles[0] is TFifille_1 then TFifille_1(mesfilles[0]).ShowChuiQui else if mesfilles[0] is TFifille_2 then TFifille_2(mesfilles[0]).ShowChuiQui else showmessage('c''est là que le bas blesse : ca ne devient plus générique cet technique'); end; end.