Bonjour tout le monde.
Chaque fois que je définis un composant (TMyComponent), je définis une liste associée (TMyList) qui permet de gérer des TMyComponent sans avoir à transtyper à chaque fois des items.
Pour faire ainsi, je fais ce code :
Mon soucis est que lorsque je vais dériver le composant (TMyDerivedComponent) et que je désire faire sa liste associée, je suis obligé de redéfinir les méthodes GetItem et SetItem.
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 TMyList = class( TList ) protected function GetItem( Index : Integer ) : TMyComponent; procedure SetItem( Index : Integer; const Value : TMyComponent ); public property Items[ Index : Integer ] : TMyComponent read GetItem write SetItem; default; end; // .... function TMyList.GetItem( Index : Integer ) : TMyComponent; begin Result := inherited Items[ Index ] as TMyComponent end; procedure TMyList.SetItem( Index : Integer; const Value : TMyComponent ); begin inherited Items[ Index ] := Value; end;
Sans parler des autres méthodes, qu'il faut surcharger juste pour qu'elles retournent les nouveaux types afin de ne pas transtyper les composants dans le code.
Je suis sûr qu'il existe un moyen plus simple mais je n'ai pas encore trouvé comment. Avez-vous une idée ?
Merci.
Partager