Salut tout le monde
Alors voila, je suis en train de me confectionner un composant perso, que j'intègre dans une application. Jusqu'à maintenant tout se passé pas trop mal et puis je me suis rendu compte que j'étais entrain de "spécialiser" mon composant en fonction de mes besoins rencontrés dans mon appli, hors je souhaiterais garder mon composant utilisable en dehors de cette appli, sinon aucun intérêt de faire un composant cela va de soit.
Je me suis donc dis, pas de panique , je vais tout simplement faire comme dans la VCL et implémenter une version Custom de mon compos puis dériver cette version Custom pour l'utiliser dans mon appli, belle idée... en théorie, par contre dans la pratique je me suis heurté a plusieurs mal façon de mon code, j'en ai résolue quelques unes (je pense... je ne peux plus compiler pour l'instant), mais je coince sur un problème de variable.
Je ne vais pas mettre ton mon code, ce serait long et je pense inutil, mais voila un exemple qui je l'espère vous permettra de me donner au mieux une réponse ^^, au pire de m'aiguiller vers elle :p
Donc mon composant s'organise comme ceci
Dans TCustomMonCompos, je déclare une variable representant ma Collection, jusque la je pense aps avoir fait de bêtise....je suis surement prétentieux hein ^^
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 TCustomMonCompo // (dérivé de TImage mais ca n'a pas d'importance je pense) TCustomMaCollection // (une collection qui contiendra les items) TCustomMonItemCollection //(Les Item contenus dans la collection de mon Compos)
Ensuite pour utiliser ce CustumCompos dans mon appli, je crée un dérivé de celui-ci, ainsi que des dérivé des Classe Collection et CollectionItem que je souhaite également personnaliser dans leur utilisation finale.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private FCollect : TCustomMaCollection; procedure SetCollect(New : TCustomMaCollection); Published property Collect : TCustomMaCollection read FCollect write SetCollect;
Donc dans MonCompos, FCollect ne doit plus etre de class TCustomMaCollection mais de class TMaCollection. Comment gerer cela?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 TMonCompo = Class(TCustomMonCompo) TMaCollection = Class(TCustomMaCollection) TMaCollectionItem = Class(TCustomMaCollectionItem)
Si je déclare
Je vais cacher l'ancien FCollect, sans pouvoir faire d'OverRide, est ce que je dois travailler sur SetCollect et GetCollect afin d'assurer la compatibilité de mes variables entre la version CustomCompo et Compo ? Ça me parait compliqué, je pense qu'il existe un truc plus simple.
Code : Sélectionner tout - Visualiser dans une fenêtre à part FCollect : TMaCollection;
J'ai regardé dans la VCL comme dis plus haut, mais malheureusement je ne trouve pas de compos organisé comme le mien, la plupart du temps seul le composant a une version Custum, mais pas la collection et CollectionItem. Si vous en connaissez un merci de me l'indiquer afin que je regarde comment ils ont réaliser cet compatibilité.
D'avance merci
Qwaz
Ps: en faisant quelque recherche je me pose la question de savoir si le Custome est le plus adapté a mon problème car visiblement le Custome est plutot utilisé pour une question de porté de variables des class dérivées :s
Partager