Bonjour,
Je rencontre le problème d'héritage suivant :
J'ai créé une form que j'ai appelé w_Base
Elle contient juste un bouton et un évènement clic de ce bouton
J'ai créé une form que j'ai appelée w_Test2 et qui dérive de w_Base
Pour la créer j'ai fait Fichier / Nouveau / Autre et j'ai délectionné dans l'onglet correspondant à mon projet w_Base
Sur la nouvelle fenêtre j'ai surchargé l'évènement clic du bouton
le code de la fenêtre est le suviant :
Enfin dans la fenêtre principale j'ai appelé ma fenêtre de test
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 type Twin_Test2 = class(Twin_base) procedure Button1Click(Sender: TObject); private { Déclarations privées } public { Déclarations publiques } end; var win_Test2: Twin_Test2; implementation {$R *.dfm} procedure Twin_Test2.Button1Click(Sender: TObject); begin inherited; ShowMessage('test après héritage'); end;
Ce que je ne comprends pas c'est qu'à l'ouverture l'évènement clic traite le code de l'objet parent (w_Base) et pas de celui qui en hérite (w_Test2) alors que LO_Form a été créé avec.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 procedure Twin_Appli.Button2Click(Sender: TObject); var LO_Form : TWin_Base; begin if LO_Form = Nil then LO_Form := TWin_Test2.Create(Application); LO_Form.Button1Click(Nil); LO_Form.Parent := Panel1; LO_Form.Visible := true; end;
si je remplace ma ligne par
effectivement cela fonctionne mais dans l'application que je veux construire ma procédure reçoit en paramètre une chaine de caractère indiquant la fenêtre à ouvrir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part TWin_Test2(LO_Form).Button1Click(Nil);
Je fais
et cela va multiplier les if et alourdir le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if Param = 'Test2' then LO_Form := TWin_Test2.Create(Application); if Param = 'xxx' then LO_Form := TWin_xxx.Create(Application);
J'espère avoir été clair
Merci de vos conseils
Partager