Une form dans une form

Résolu
tanaka13 Messages postés 14 Date d'inscription mardi 14 septembre 2004 Statut Membre Dernière intervention 16 mars 2005 - 24 oct. 2004 à 14:08
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 - 29 oct. 2004 à 22:34
bonjour à tous

je cherche à integrer un form dans une form pour un ecran de veille
integrer à la feuille principale. je suis tomber il y a quelque temps sur un truc form within mais c'est vague.

merci

j'espere être dans le bon forum :shy)

9 réponses

cs_Tioneb Messages postés 193 Date d'inscription dimanche 16 décembre 2001 Statut Membre Dernière intervention 29 juillet 2015
24 oct. 2004 à 17:52
Salut,
Ta question a déjà été posé sur ce forum!!! ;)
Pour intégrer une form dans une autre dynamiquement, il faut d'abord créer tes forms. Mais comme tu le verras plus bas, il te faudra son hwnd (handle) donc tu sera obligé de passer par 2 controles "picturebox".
Donc tu cré tes picture box (1 pour la réception et l'autre pour l'emission), tu enlève les effets de 3d (en fait c'est selon ce que tu veux en faire mais là c'est pour que l'intégration soit parfaite), puis tu met tout les controles dedans (dans celle pour l'emission). Si ta form est déjà créé, tu vas devoir tout refaire!
Quand c'est fait, tu remarquera que la position des controles sont par rapport à la picturebox et plus par rapport à ta form!!!
Ensuite tu mets le code suivant:

'En déclarations
Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

'La fonction
Public function IntegrerForm(IFSource as picturebox, IFDestination as picturebox)
    SetParent ifsource.hwnd, ifdestination.hwnd
end function


Et voilà, c'est pas plus compliqué que ça! :big)
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
25 oct. 2004 à 22:40
Une solution pour mettre Form2 à l'intérieur de Form1 sans passer par une MDI:

rem à mettre dans Form1

Private Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long

Private Sub CmdActiver_Click()
    SetParent Form2.hWnd, Me.hWnd
    Form2.Show
End Sub


rem à mettre dans Form2

Private Sub Form_Load()
    Form2.Top = 0
    Form2.Left = 0
    Form2.Width = Form1.ScaleWidth
    Form2.Height = Form1.ScaleHeight
End Sub

Private Sub CmdQuitter_Click()
    Unload Me
End Sub
tanaka13 Messages postés 14 Date d'inscription mardi 14 septembre 2004 Statut Membre Dernière intervention 16 mars 2005
24 oct. 2004 à 20:33
salut

je me doute que la question a deja ete posée, mais apres une recherche infructueuse on fini par demander(oui oui j'ai chercher). :)

mais la solution que j'avais aperçu, ne demandais pas de tous refaire et faisait appel simplement a un truc du genre:
form1 within form2

parce que là je ne me trouve pas le courage de tous recommencer
enfin si personne ne repondait favorablement(je l'ai vu sur vbfrance) je finirai par utiliser ta technique. merci donc pour ta reponse et wait and see

@+
Gobillot Messages postés 3140 Date d'inscription vendredi 14 mai 2004 Statut Membre Dernière intervention 11 mars 2019 34
24 oct. 2004 à 21:30
Dim Form2 As New Form1

Form2.Show

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

Posez votre question
tanaka13 Messages postés 14 Date d'inscription mardi 14 septembre 2004 Statut Membre Dernière intervention 16 mars 2005
25 oct. 2004 à 00:22
ok pour la creation d'une nouvelle form mais elle ne s'integre pas dans la form initial.
ma feuille est borderstyle = 0 je l'ai arrondi et rajouter un cadre autour
et quand je veux deplacer les forms, tous se petit monde tous part en c%¨lle.

merci pour reponse

et la quete continue...
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
25 oct. 2004 à 13:04
J'ai pas bien compris ta question, mais pour qu'une forme reste à l'intérieure d'une autre (comme un doc Word dans la fenetre de Word par exemple) il faut que la 1ere soit une fenetre MDI et que la seconde est sa propriété MDIChild à True !!

Christophe R.
tanaka13 Messages postés 14 Date d'inscription mardi 14 septembre 2004 Statut Membre Dernière intervention 16 mars 2005
25 oct. 2004 à 14:01
alors ma feuille principale n'est pas en MDI et j'ai un bouton veille dans ma feuille qui permettrai à l'utilisateur de cacher son travail derriere un un ecran de veille avec login pour continuer mais integrer dans la feuille principale et sans à avoir un ecran de veille sur l'ingralite de son ecran.

Une simple picturebox au premier plan pourrai faire l'affaire mais je voudrai qu'il ai une animation style matrix (trouver sur vbfrance) comme j'avais mis la premiere fois en attendant de trouver quelque chose de plus original.
J'avais eu le temps de faire un simple copier/ coller de la fonction form within form(tard dans la nuit..) et ça fonctionnait bien et la deuxieme feuille en maximize recouvrai l'integralité de la premiere sans retoucher le code de la celle ci.(malheuresement mon disque dur a crasher le lendemain)

j'espere avoir été plus clair...
tanaka13 Messages postés 14 Date d'inscription mardi 14 septembre 2004 Statut Membre Dernière intervention 16 mars 2005
25 oct. 2004 à 23:55
parfait

exactement le but rechercher :big)

donc un gros merci pour le code accompagner ça marche du premier coup

merci à toi Gobillot

desoler à toi Tioneb je n'ai pas su adapter ton info à mes besoin puisque tu me donnais la lib adequate et la marche à suivre pour jouer avec.(je suis debutant et donc un pauvre nain competent) ;)

bonne prog a tous et @+
cs_AbriBus Messages postés 492 Date d'inscription jeudi 28 août 2003 Statut Membre Dernière intervention 25 avril 2007 5
29 oct. 2004 à 22:34
C'est bien vrai ca... impec !
Rejoignez-nous