|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2010 Messages : 36 ![]() |
Bonjour à tous,
J'ai installé Lazarus 0.9.30.2, et après avoir programmé un peu, je me suis rendu compte que le onActivate ne marchait plus comme avant (.28.2) J'ai donc été voir dans le change log, et en effet apparemment, il ne se déclenche que sur la première activation de la fenêtre... Je trouve ça un peu inutile, car au final il fais la même chose que le onLoad/onShow. Le problème : Dans mon application j'ai deux fenêtres, lorsque je ferme la deuxième fenêtre (fenêtre de configuration), ça revient donc sur la Main, je voudrais faire une routine (pour afficher les nouvelles valeurs) sans avoir à mettre un bouton "refresh" pour déclencher manuellement la routine, mais avec le nouveau onActivate je ne vois plus comment déclencher cette routine... J'ai pensé à mettre un booléen "fenetre_perdu" mais bon c'est pareil, pour checker le booléen, pour savoir si il faut déclencher la routine ou non, il faut un évent... Si vous avez des idées pour que ça m'évite de repasser sur le .28.2 ça serait avec plaisir. Merci Jean-François. |
|
|
00
|
|
|
#2 |
|
Membre habitué
![]() Emilien Étudiant Inscription : octobre 2010 Messages : 59 ![]() |
Bonsoir,
Une solution (pas très propre) serait d'appeler la routine de rafraîchissement lors du "onclose" de la fenêtre de config (ou lors du clic sur le bouton OK s'il y a aussi un bouton annuler). Cela risque de créer un problème de références circulaires entre les unités des deux fenêtres, problème qui peut être contourné en mettant une clause uses après le "implementation" d'une des unités. Cependant, comme dit précédemment, cela est moins propre, car il faudrait faire autant d'appels qu'il y a de fenêtres susceptibles de provoquer un retour sur le main (ce qui revient à remplacer manuellement le "onactivate") Ceci dit, je n'ai pas la 0.9.30, donc impossible pour moi de constater ce problème. Cordialement. |
|
|
10
|
|
|
#3 | ||
|
Membre Expert
![]() Inscription : décembre 2003 Messages : 1 716 ![]() |
si ta 2éme fenêtre est modal (est c'est ce que je crois), normalement tu l'appel depuis ta form main, ce que je fais (sous delphi)
Code :
__________________
PAS DE DESTIN, C'EST CE QUE NOUS FAISONS |
||
|
|
00
|
|
|
#4 | |
|
Candidat au titre de Membre du Club
![]() Inscription : janvier 2010 Messages : 36 ![]() |
Le première solution est vraiment pas très propre...
La deuxième c'est quand tu ouvre la deuxième fenêtre que tu fais ça donc ça peut marcher. Mais moi c'est à la fermeture de la deuxième fenêtre que je veux déclencher (pour mettre à jour des infos dans la première), donc si à la fermeture de la deuxième je dois envoyer un params à la première je dois forcement l'uses et rebelote "Circular" etc.... C'est toujours pareil sur les version Snapshoot developer ? (0.9.31.xx ?) Pour rigoler 5 minutes : Citation:
Quelle bonne idée ils ont eut ! |
|
|
|
00
|
|
|
#5 | ||||
|
Membre expérimenté
![]() Gilles Enseignant Inscription : novembre 2006 Messages : 599 ![]() |
Bonjour,
Je ne sais pas si je comprends correctement votre problème mais déjà pour éliminer les références circulaires, on peut procéder ainsi: Unit1 Code :
Code :
L'exécution des codes dépend du mode d'ouverture de la Form2. Si vous l'appelez avec Show, le "traitement" (ie la synchronisation des évènements) est différent d'un appel par Showmodal. Pour échanger des valeurs entre 2 Forms, vous pouvez également utiliser avec les précautions d'usage une unit dans laquelle vous déclarez les variables partagées, unit appelée dans les uses (interface) des 2 Forms. Cordialement. Gilles Code réalisé et vérifié avec Lazarus 0.9.31-34335-fpc-2.5.1-20111221-Win32 |
||||
|
|
10
|
|
|
#6 | ||||
|
Membre chevronné
![]() ![]() |
Bonjour,
Citation:
(cf. ci-après). Et c'est à mon avis une bonne chose, même si je suis sur que certains parmi vous argumenteront le contraire ! Citation:
Code :
C'est dans ce sens où j'estime que c'est une bonne chose: quand on affiche de manière modale, on a le contrôle sur ce qui se produit et l'on sait quand la fenêtre redevient active, ces évènements n'ont donc pas de sens et les gérer non plus ! Dans le cas contraire, ils reprennent toute leur importance tout comme leur gestion. ![]() -- Philippe. |
||||
|
|
20
|
Copyright © 2000-2012 - www.developpez.com