Initialisation d'un composant [Résolu]

ThWilliam 424 Messages postés mardi 3 janvier 2006Date d'inscription 26 novembre 2013 Dernière intervention - 30 janv. 2007 à 16:30 - Dernière réponse : ThWilliam 424 Messages postés mardi 3 janvier 2006Date d'inscription 26 novembre 2013 Dernière intervention
- 30 janv. 2007 à 20:08
Bonjour à tous.


Dans un composant, j'ai une méthode interne 'ReInit'


procedure TMonCompo.Reinit;
begin
   if Assigned(FOnReInit) then FOnReInit(self)  //événement OnReInit
   else  FaireParDefaut;
end;


J'ai plusieurs propriétés publiées avec Setters dans lesquels il y a appel à la  procedure ReInit.
Le problème est que, lors de la création du compo à l'exécution, les Setters sont appelés avant l'assignation de l'événement, donc le code dans cet événement n'est pas exécuté.
J'ai alors placé la propriété OnReInit avant toutes les autres et enlevé les valeurs par défaut des propriétés pour que leur Setter soit toujours appelé.
Cela marche, mais manque évidemment d'élégance.
J'ai alors surchargé la procedure Loaded de la façon suivante :


procedure TMonCompo.Loaded;
begin
   if Assigned(FOnReInit) then FOnReInit(self);
end;


Tout marche, mais est-ce la meilleure solution ?
Quand la procedure Loaded est-elle exactement appelée (chronologiquement) dans la construction d'un composant ?


Merci d'avance.
Thierry
Afficher la suite 

Votre réponse

2 réponses

Meilleure réponse
florenth 1105 Messages postés dimanche 1 août 2004Date d'inscription 17 août 2008 Dernière intervention - 30 janv. 2007 à 19:23
3
Merci
Salut !

La procédure Loaded() est appelée lorsque le composant a fini de lire ses propriétés dans le flux (dfm). Elle est appelée une fois qe TOUS les composants d'une même fiche sont crées (voir TCustomform.Create() unité Forms, InitInheritedComponent() et NotifyGlobalLoading() unité Classes)

Par contre, je remplacerai "if Assigned(FOnReInit) then FOnReInit(self)" par un appel à Reinit, qui fait la même chose.

Et n'oublie pas "inherited" dans Loaded(): très important puisqu'il enlève l'état de chargement du composant !

A+
Flo

Merci florenth 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 68 internautes ce mois-ci

Commenter la réponse de florenth
ThWilliam 424 Messages postés mardi 3 janvier 2006Date d'inscription 26 novembre 2013 Dernière intervention - 30 janv. 2007 à 20:08
0
Merci
Grand merci, Florent

A +
Thierry
Commenter la réponse de ThWilliam

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.