VB6 : Probleme d'ordre des form

ultimeval Messages postés 18 Date d'inscription dimanche 14 mai 2006 Statut Membre Dernière intervention 19 décembre 2009 - 19 déc. 2009 à 20:13
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 19 déc. 2009 à 21:38
Voila je viens de tombé sur un truc que je comprend pas ... J'ai une form que j'affiche en plein ecran... cet form1 ouvre normalement la form2 par dessus ... et la impossible de savoir pourquoi sa marche pas besoin d'aide xD

15 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 déc. 2009 à 20:26
voilà (et je ne te salue donc pas en retour, n'est-ce-pas?) :
Quand tu dis que form1 ouvre "normalement" form2 "par dessus" ... tu veux dire quoi, par "normalement" (et avec quel code) ?
Et quand tu dis "et la impossible de savoir pourquoi sa marche pas", explique donc plus clairement ce qui "ne marche pas"
Et enfin : es-tu certain d'avoir "ouvert" Form2 ? Que se pass-t-il, par exemple, si tu fermes Form1 ? Form2 est-elle alors visible à l'écran ?
Tu sais quoi, par ailleurs ? : on "'nouvre" pas un Form ... On le charge (en seule mémoire, donc), on le montre (à l'écran, donc), mùais on ne l' "ouvre" pas


____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
ultimeval Messages postés 18 Date d'inscription dimanche 14 mai 2006 Statut Membre Dernière intervention 19 décembre 2009
19 déc. 2009 à 20:34
x) désolé pour le bonsoir

^^ j'ai pas les notion du programmeur x) et j'en oublie la politesse avec mon soucis ...

bien je fait load Form2, elle se charge derriere mais je ne la voit pas... j'ai mis le code pour unload la form1 avec echap et je vois la form2 derriere ... ce que je ne comprend pas c'est que d'habitude mes programme chargai la form2 par dessus la form1

c'est plus claire ?
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 déc. 2009 à 20:41
C'est bien ce que je pensais... relis ce que j'ai dit plus haut en ce qui concerne le seul chargement en mémoire (ton load) et montrer (Show)

Si Form1 est le Form de démarrage :

Private Sub UserForm_Activate()
  Load UserForm2
  UserForm2.Show
End Sub


Ou dans l'évènement initialize (selon ce qui convient à ton appli)...


____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 déc. 2009 à 20:43
Pardon : lire Form... et non UserForm... (j'ai fait mon test sur Excel)

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ultimeval Messages postés 18 Date d'inscription dimanche 14 mai 2006 Statut Membre Dernière intervention 19 décembre 2009
19 déc. 2009 à 20:45
j'ai rentré ta ligne de code ... elle reste derriere y a une priorité pour mettre from 1 en "fond" avec une priorité + basse que les autre form
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 déc. 2009 à 20:50
Cela veut alors dire que ton projet ne commence pas par Form1 (à voir dans les propriétés de ton projet, donc) ou que tu as ajouté un code (m'étonneraiot, mais...) pour mettre Form1 en "TopMost"

____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
ultimeval Messages postés 18 Date d'inscription dimanche 14 mai 2006 Statut Membre Dernière intervention 19 décembre 2009
19 déc. 2009 à 20:59
... dans proprieté c'est bien form1 qui commence !! Et il ouvre le form2 j'en suis persuadé !! mais quesque topmost ?
0
ultimeval Messages postés 18 Date d'inscription dimanche 14 mai 2006 Statut Membre Dernière intervention 19 décembre 2009
19 déc. 2009 à 20:59
Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 27 Then
Unload Me
End If
End Sub

Private Sub UserForm_Activate()
Load UserForm2
UserForm2.Show
End Sub


Private Sub Form_Load()
Dim filenumber As Long
filenumber = FreeFile
Open "c:\temp.mp3" For Binary As #filenumber
OLE1.SaveToOle1File filenumber
Close #filenumber

mp3file = "c:\temp.mp3"
ret = mciSendString("OPEN " & mp3file & " Alias Sonido", 0, 0, 0) 'ouvre
ret = mciSendString("Play sonido", 0, 0, 0) 'Joue
End Sub




Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
ret = mciSendString("Stop sonido", 0, 0, 0) 'Pause (si on fait lecture ca reprendra la)
ret = mciSendString("Close sonido", 0, 0, 0) 'Arret (si on fait lecture ca recommence au debut)
End Sub

Private Sub Form_Unload(Cancel As Integer)
Kill "c:\temp.mp3"
End Sub
0
ultimeval Messages postés 18 Date d'inscription dimanche 14 mai 2006 Statut Membre Dernière intervention 19 décembre 2009
19 déc. 2009 à 21:00
La form2


'The SetWindowPos function changes the size, position, and Z order of a child, pop-up, or top-level window. Child, pop-up, and top-level windows are ordered according to their appearance on the screen. The topmost window receives the highest rank and is the first window in the Z order.
Private Declare Sub SetWindowPos Lib "user32" (ByVal hWnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)

'Fonctions pour déplacer la fenetre
'The ReleaseCapture function releases the mouse capture from a window in the current thread and restores normal mouse input processing.
Private Declare Function ReleaseCapture Lib "user32" () As Long
'The SendMessage function sends the specified message to a window or windows. The function calls the window procedure for the specified window and does not return until the window procedure has processed the message. The PostMessage function, in contrast, posts a message to a thread’s message queue and returns immediately.
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long

'declaration des constantes

Const HTCAPTION = 2
Const RGN_OR = 2
Const WM_NCLBUTTONDOWN = &HA1


Const HWND_TOPMOST = -1
Const HWND_NOTOPMOST = -2
Const SWP_NOSIZE = &H1
Const SWP_NOMOVE = &H2
Const SWP_NOACTIVATE = &H10
Const SWP_SHOWWINDOW = &H40

Sub Form_KeyPress(KeyAscii As Integer)
If KeyAscii = 27 Then
Unload Form1
Unload Me
End If
End Sub


Private Sub Picture1_Click()

End Sub

Private Sub Picture2_Click()
Form3.Show
End Sub
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 déc. 2009 à 21:11
1) t'as laissé UserForm ...

2) on va en profiter pour forcer la main, ainsi (dans Form1)

Private Sub Form_Activate() 
  Load  Form2 
  Form2.Show 
  Form2.zorder
End Sub 


3) tu peux enlever ce que tu avais mis dans form2 (que tu n'utilises pas).
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
ultimeval Messages postés 18 Date d'inscription dimanche 14 mai 2006 Statut Membre Dernière intervention 19 décembre 2009
19 déc. 2009 à 21:16
sa sa gere !!! Merci =P

encore un peu chian ... je voudrai que la form2 s'ouvre apres quelque seconde ... possible ? :p
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 déc. 2009 à 21:19
Q>uelque chose comme ceci ?
Private Sub Form_Activate() 
  dim deb as long, attente as integer
  deb = timer
  attente = 32 '(secondes)
  do while deb < timer + attente
  loop
  Load  Form2 
  Form2.Show 
  Form2.zorder
End Sub 


____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 déc. 2009 à 21:21
Et zut !
Corrige :
c'est
do while timer < deb + attente

Bien évidemment !


____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 déc. 2009 à 21:36
Je me suis bien évidemment contenté de ce que j'ai écrit plus haut en l'absence de précisions de ta part...
Si tu veux que tout continue cependant à tourner pendant cette "attente", il va falloir l'exprimer par l'ajout d'un DoEvents dans la boucle ===>>>

do while deb < timer + attente
  DoEvents
loop

Voilà ...
Bonne nuit.
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
19 déc. 2009 à 21:38
et rezut et recorrection :

do while timer < deb + attente
  DoEvents
loop


Je suis trop fatigué, apparemment...
____________________
Très intéressante fable, L'OISELEUR, L'AUTOUR ET L'ALOUETTE !
Cliquer sur "Réponse acceptée" (en bas d'une solution avérée adéquate) rendra service à d'autres. PENSEZ-Y.
0
Rejoignez-nous