TComboBox = class(FMX.ListView.TComboBox) contre TComboBox = class(TCombobox).
Autant la première forme que l'on désigne pour "Hack"/"Jacking" est un grand classique que l'on pratiquait déjà avec la VCL
Autant la seconde forme est clairement un bug du compilateur si il laisse passer cela, comme le dit ALWEBER et Andnotor c'est un incorrect car c'est le même identificateur TComboBox
Je ne sais pas comment le gestionnaire de flux arrivent à trouver via un truc genre FindClass la TComboBox local à la place de la Namespace.Unit.TComboBox
Cela reste pour moi un mystère
Par contre, on sait que cela fonctionne très bien et l'on peut hériter de "Namespace.Unit.TComboBox" car le nom complet est bien un identifiant différent du TComboBox local que l'on est en train de définir
Un petit QC pour dénoncer le TComboBox = class(TCombobox) serait bienvenu !
Et ce n'est pas que pour les controles,
On pourrait très bien définir par manque d'originalité définir une classe technique hérité de la RTL
Et évidemment TObjectList<T: class> = class(TObjectList<T>) doit absolument pas pouvoir être compileé car TObjectList est le dernier déclaré (donc la classe en cours de définition et pas celle que l'on choperais via System.Generics.Collections)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 type TObjectList<T: class> = class(System.Generics.Collections.TObjectList<T>) public function MethodeSuperSympaQuiManque(): T; end;
Je pense que tu as la réponse à ta question
TCombobox = class(FMX.ListBox.TComboBox) grâce à la portée d'unité on peut accéder à tout membre protégé de FMX.ListBox.TComboBox (ça évidemment tu le savais)
TCombobox = class(TComboBox) est un code incorrect que le compilateur devrait refuser (ça c'est le piège dans lequel il t'a fait tomber et qui est finalement la cause de tout ce sujet à rallonge)
Partager