Je travaille sur une application MDI.
Dans la partie form activate de ma fenetre fille j'appele une fonction et cette fonction ne s'execute jamais, le programme n'allant même pas dans le form activate.
Est--ce normal ?
Je travaille sur une application MDI.
Dans la partie form activate de ma fenetre fille j'appele une fonction et cette fonction ne s'execute jamais, le programme n'allant même pas dans le form activate.
Est--ce normal ?
Si tu le met dans le form load ca fait quoi? je pense pas que ca soit normal que ca n'aille pas dans le form_activate..
L'événement Activate est subi par la Form active (pas la voisine), bien évidemment !
Edit :
L'événement load est subi par la Form chargée ....(pas la voisine non plus)
Allez montre-nous un peu de code, qu'on ait quelquechose à se mettre sous la dent...
Le code du "Activate", et comment cette Form est activée...
Dans le form activate de ma fenetre fille j'ai mon appel à la fonction
J'ai cette ligne de codeQui appele ma fonction. bsearchdone est un boolen mis à true si on execute une recherche
Code : Sélectionner tout - Visualiser dans une fenêtre à part If bSearchDone = True Then RemplirGrille
Je met un point d'arret sur cette ligne de commande et le programme ne s'arrete pas, j'en ai déduit qu'il ne passe pas dans le form activate
Ok, donc on en vient à ma deuxième question: Comment actives-tu ta form "fille"?
J'ai 3 fenetres. La fenetre mere et 2 fenetres filles.
Donc j'ouvre ma 1ere fenetre fille puis j'ouvre ma 2eme fenetre fille en cliquant sur un bouton de la 1ere fille.
J'arrive à un écran de recherche, je tape un mot puis sur ok, à ce moment la mon booléen passe à true, la 2eme fille se ferme et à ce moment la le programme devrait passer dans le form activate de la 1ere fille et démarrer la fonction remplirgrille...
j'ai testé tout ça avec une version non MDI du programme et cela fonctionne ...
Non ,
L'évènement Activate n'intervient qu'après le chargement et ne se répète pas automatiquement (spontanément) sauf si l'on a déchargé et rechargé !
Il faut donc le provoquer par : ma-machin-truc-form_activate
Merci, jmf, c'était un peu le but de ma question...
Je me demande quand même pourquoi avec le même code cela fonctionne dans la version non MDI et pourquoi ça ne fonctionne pas dans la version MDI
comme on ne voit pas ton code (une version et l'autre), on se gratte la tête mais on ne devine pas ...
Rien ne change entre les 2 versions mais voici les grandes lignes du code
Dans la 2eme fille j'aiqui active le booléen.
Code : Sélectionner tout - Visualiser dans une fenêtre à part bSearchDone = True
Et dans le form activate de la 1ere fille j'aiEn mettant un point d'arret dans ce form activate, le programme s'arrete lors de la version non mdi mais ne s'arrete pas lors de la version mdi.
Code : Sélectionner tout - Visualiser dans une fenêtre à part If bSearchDone = True Then RemplirGrille
ceci ne nous éclaire absolument pas , je regrette !...
ce qui nous intéresse c'est le code ou les codes par lesquels tu charges, montres, décharges ...
Je pense de toute façon que rien d'autre n'est utile.
La ligne de code que j'ai montré pour la 2eme fille est la derniere ligne d'un code de + de 1000 lignes (un bouton ok, on clique, et à la fin on passe le booleen à true et on retourne dans la 1ere fille(je me vois donc mal tout poster ici).
Voici néammoins dans son inégralité le form activate de ma 1ere fille :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 Private Sub Form_Activate() On Error GoTo gestErreur If VerifDroits(sUserID, 129) = False Then Me.Hide Screen.MousePointer = vbDefault MsgBox "Vous n'êtes pas autorisé à consulter la bibliothèque", vbOKOnly + vbCritical, "Droits" Unload Me Exit Sub End If ' N'afficher que les éléments correspondants à l'onglet en cours ReqSQL = "SELECT codeTypeStruct FROM TypeStructChiffrage WHERE nomTypeStruct = '" & _ TreatQuote(SSTab1.TabCaption(SSTab1.Tab)) & "' AND isModeleTypeStruct = 'Non' AND typeFixeTypeStruct = 'Non'" BDD.RecupDonnee ReqSQL, varTableau ResizeGrid (CStr(varTableau(0, 0))) If frmLogo.AdodcElements.Recordset.RecordCount > 0 Then sCriterePositionnement = TDBGrid1.Columns(1).Text frmLogo.AdodcElements.Recordset.Filter = "type = '" & varTableau(0, 0) & "'" If sCriterePositionnement <> "" And bSearchDone = False Then frmLogo.AdodcElements.Recordset.Find "code = '" & sCriterePositionnement & "'" ' On rafraîchit l'enregistrement en cours (utile surtout pour les ouvrages...) frmLogo.AdodcElements.Recordset.Resync adAffectCurrent If bSearchDone = True Then RemplirGrille Screen.MousePointer = vbDefault Exit Sub
c'est pourtant simple !
tu nous montres le/les codes (en nous disant où ils sont mis) concernant uniquement les chargements, déchargements,affichages ou désaffichage de chacune de tes Forms, ainsi que ceux qui concernent leur activation éventuelle, en effaçant tout le reste, qui ne nous intéresse pas !
A défaut de voir celà, je vois mal comment on pourrait te répondre !
Oui mais ça c'est deja fait ...
Quand ma 1ere fille est ouverte et que j'ouvre la 2eme, la 1ere n'est pas déchargée.
N'étant pas déchargée, elle ne se réactive pas spontanément (voir plus haut) et ce qui se trouve dans son événement activate ne s'exécute donc plus, sauf forcé (voir plus haut) !
Ca je l'ai compris mais je me demande pourquoi mon programme fonctionne dans une version non MDI mais ne fonctionne pas dans une version MDI
Je n'en sais rien, du seul fait que je ne vois pas, non plus, le code de ton appli sans MDI !
Quelle importance ? Puisque à part la propriété mdichild mise a true il n'y a absolument aucune différence de code
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager