|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
Bonjour et bonne année !
Voilà j'ai un petit blème. J'ai 2 composants avec les mêmes propriétés mais n'étant pas issus de la même classe auxquels je voudrais appliquer les mêmes traitements procédure FaitDesTrucs(Sender:TComponent); begin if (Sender is Tcompo1) then with Tcompo1(Sender) do begin ... traitements end; else if (Sender is Tcompo2) then with Tcompo2(Sender) do begin ... traitements (les mêmes tout pareil) end; end; Y aurait-il un transtypage quelconque pour éviter ça ? merci. |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Non, pas de manière propre.
Par contre, tu peux faire une classe qui prend l'un ou l'autre des composants, note les valeurs, puis fait les traitements. Ou dans ta fonction, tu commences par noter les valeurs puis tu fais les traitements |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
OBones a écrit :
> Non, pas de manière propre. Faire une interface dédiée au traitement, et la rattacher à chacun des objets. Non ? :-) |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
> Faire une interface dédiée au traitement, et la rattacher à chacun des
> objets. Non ? :-) > .... Euh... Mais encore ? |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
> J'ai 2 composants avec les mêmes propriétés mais n'étant pas issus de la
> même classe auxquels je voudrais appliquer les mêmes traitements Si tu contrôles ces composants, alors tu peux les faire dériver tous les deux de la même classe intermédiaire contenant les propriétés communes. Puis alors tu manipules l'un ou l'autre via la classe intermédiaire. TCustomDonJos = class(TComponent) // Définitions des propriétés, méthodes et événements communs end; TDonJoseA = class(TCustomDonJose) // Définitions des propriétés, méthodes et événements propres à cette classe end; TDonJoseB = class(TCustomDonJose) // Définitions des propriétés, méthodes et événements propres à cette classe end; procedure FaitDesTrucs(Sender:TCustomDonJose); begin with Sender do begin ... traitements end; end; Tu peux passer à FaitDesTrucs() une instance de TDonJoseA, ou TDonJoseB indifféremment. -- PS: On peut aussi me joindre sur le forum news://news.delphinaute.be/delphi.internet -- Contribuez à l'effort SSL pour ICS. Visitez http://www.overbyte.be/eng/ssl.html -- francois.piette@overbyte.be Auteur du freeware ICS - Internet Component Suite Auteur du freeware MidWare - Multi-tiers framework http://www.overbyte.be |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
> Si tu contrôles ces composants, alors tu peux les faire dériver tous les > deux de la même classe intermédiaire contenant les propriétés communes. > Puis > alors tu manipules l'un ou l'autre via la classe intermédiaire. Je sais bien mais justement non, je ne contrôle pas En fait ce sont les compos TcxGridDBColumn et TcxGridDBBandedColumn de l'ExpressuantumGrid dont j'initialise automatiquement certaines propriétés identiques. Dommage, merci. |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
> Je sais bien mais justement non, je ne contrôle pas
> En fait ce sont les compos TcxGridDBColumn et TcxGridDBBandedColumn de > l'ExpressuantumGrid dont j'initialise automatiquement certaines propriétés > identiques. Et ces deux composants n'héritent pas par hazard déjà d'un ancêtre commun ? -- francois.piette@overbyte.be Auteur du freeware ICS - Internet Component Suite Auteur du middleware multi-tiers MidWare web: http://www.overbyte.be blog: http://francois-piette.blogspot.com |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
> Et ces deux composants n'héritent pas par hazard déjà d'un ancêtre commun > ? SI, si,... au début. Mais ensuite il y a séparation + une couche supplémentaire pour l'un des 2 et en fin chaque branche les mêmes propriétés. ClassA ClassB ClassC.prop1 ClassC.prop2 ... et ClassA ClassB ClassY ClassZ.prop1 ClassZ.prop2 ... Bien entendu, ce sont les propriétés de la couche finale dont j'ai besoin. Merci. |
|
![]() |
| Outils de la discussion | |
|
|