IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB 6 et antérieur Discussion :

Application MDI Mère et fille


Sujet :

VB 6 et antérieur

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par défaut Application MDI Mère et fille
    Bonjour à tous.

    Je cherche à effectuer plusieurs fonctions sur une application MDI. J'ai crée une feuille Form1 qui sera le modèle des feuilles MDI Filles. J'ai rajouté une feuille MDI Mère avec deux menus déroulant (Fichiers et Format). Je voudrais savoir comment ouvrir un document existant au format rtf et sauvegarder un fichier quelconque. En cherchant un peu j'ai trouvé qu'il fallait utilisé le contrôle: Microsoft Common Dialog mais je n'ai pas réussi à trouve les commandes correspondantes.

    Voila le code de la MDI Mère:

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
     
    Private Sub Form_Load()
    Save.Enabled = False
    Fermer.Enabled = False
    Sauver.Enabled = False
    End Sub
     
    Private Sub Nouveau_Click()
    Save.Enabled = True
    Fermer.Enabled = True
    Sauver.Enabled = True
    Static N As Integer
    Dim F As Form
    N = N + 1
    Set F = New Form1
    F.Caption = "Feuille" + Str$(N)
    F.Show
    End Sub
     
    Private Sub Ouvrir_Click()
    On Error GoTo ExitOuvrir
    Save.Enabled = True
    Fermer.Enabled = True
    Sauver.Enabled = True
    CommonDialog1.CancelError = True
    CommonDialog1.Filter = True
    CommonDialog1.Filter = "Tous les fichiers|*|Fichier(*txt)|*.txt|Fichier(*rtf)|*rtf"
     
    CommonDialog1.ShowOpen
    Call Nouveau_Click
    Me.ActiveForm.RichTextBox1.LoadFile CommonDialog1.FileName, rtfRTF
    ExitOuvrir:
    End Sub
     
    Private Sub Save_Click()
    On Error GoTo ExitSave
    CommonDialog1.DialogTitle = "Enregistrer le fichier sous..."
    CommonDialog1.Filter = "Fichier(*.txt)|*txt|Fichier(*rtf)|*rtf"
    CommonDialog1.CancelError = True
    CommonDialog1.ShowSave
    RichTextBox1.SaveFile
    ExitSave:
    End Sub
     
    Private Sub Sauver_Clik()
    On Error GoTo ExitSauver
    CommonDialog1.CancelError = True
    CommonDialog1.Filter = "Fichier|*.*"
    CommonDialog1.ShowSave
    Me.ActiveForm.RichTextBox1.SaveFile CommonDialog.FileName, rtfRTF
     
    ExitSauver:
     
    End Sub
     
     
    Private Sub Fermer_Click()
    Unload Me.ActiveForm
    End Sub
     
    Private Sub Quitter_Click()
    Unload Me
    End Sub
    Le code de la MDI 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
    Private Sub Form_Load()
    On Error Resume Next
        Me.Tag = CStr(Me.Width) & ":" & CStr(Me.Height)
        For Each object In Me
            object.Tag = CStr(object.X1) & ":" & CStr(object.Y1) & ";" & CStr(object.X2) & "!" & CStr(object.Y2)
            object.Tag = CStr(object.Width) & ":" & CStr(object.Height) & ";" & CStr(object.Left) & "!" & CStr(object.Top)
        Next object
    End Sub
     
    Private Sub Form_Resize()
    On Error Resume Next
        For Each object In Me
     
            object.Width = Val(Mid(object.Tag, 1, InStr(object.Tag, ":") - 1)) * Me.Width / Val(Mid(Me.Tag, 1, InStr(Me.Tag, ":") - 1))
            object.Height = Val(Mid(object.Tag, InStr(object.Tag, ":") + 1, Len(object.Tag) - InStr(object.Tag, ":") + 1)) * Me.Height / Val(Mid(Me.Tag, InStr(Me.Tag, ":") + 1, Len(Me.Tag) - InStr(Me.Tag, ":") + 1))
            object.Left = Val(Mid(object.Tag, InStr(object.Tag, ";") + 1, Len(object.Tag) - InStr(object.Tag, ";") + 1)) * Me.Width / Val(Mid(Me.Tag, 1, InStr(Me.Tag, ":") - 1))
            object.Top = Val(Mid(object.Tag, InStr(object.Tag, "!") + 1, Len(object.Tag) - InStr(object.Tag, "!") + 1)) * Me.Height / Val(Mid(Me.Tag, InStr(Me.Tag, ":") + 1, Len(Me.Tag) - InStr(Me.Tag, ":") + 1))
        Next object
    End Sub

  2. #2
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    On va "déblayer" un peu, si tu veux bien.
    Ta question se résume-t-elle à :
    1) comment se servir d'un commonDialog ppour choisir un fichier à ouvrir ?
    2) comment ouvrir le fichier choisi ?
    et si oui : l'ouvrir directement dans une fenêtre distincte de ton appli ?
    ou
    b) l'ouvrir directement à l'intéroeur de la fenêtre de ton appli
    ou
    c) en charger le contenu (en vue de modifications éventuelles) dans un contrôle (et ce serait alors une RichTextBox pour traiter un fichier RTF) de ton appli ?


    La 3ème question dépend de ces 2 premières, bien évidemment

    Tout le reste (mdi ou non, aspects, positionnements, etc...) reste autre chose de totalement distinct, me semble-t-il.

  3. #3
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    Bonjour Jmichou972, bonjour ucfoutu

    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
    23
    24
    25
    26
    27
    28
    29
    30
    Private Sub Save_Click()
    On Error GoTo ExitSave
    CommonDialog1.DialogTitle = "Enregistrer le fichier sous..."
    CommonDialog1.Filter = "Fichier(*.txt)|*txt|Fichier(*rtf)|*rtf"
    CommonDialog1.CancelError = True
    CommonDialog1.ShowSave
    Me.ActiveForm.RichTextBox1.SaveFile CommonDialog1.FileName, rtfRTF
    ExitSave:
    End Sub
     
    Private Sub Sauver_Clik()
    On Error GoTo ExitSauver
    CommonDialog1.CancelError = True
    CommonDialog1.Filter = "Fichier|*.*"
    CommonDialog1.ShowSave
    'Me.ActiveForm.RichTextBox1.SaveFile CommonDialog.FileName, rtfRTF
    'CommonDialog1
    Me.ActiveForm.RichTextBox1.SaveFile CommonDialog1.FileName, rtfRTF
     
    ExitSauver:
     
    End Sub
     
     
    Private Sub Fermer_Click()
    'precaution si pas de MIDIChild en cours
    On Error GoTo Gesterr
    Unload Me.ActiveForm
    Gesterr:
    End Sub
    je ne comprend pas trop entre Private Sub Save_Click et Private Sub Sauver_Clik ?
    Mauvaise maitrise des index de creation de MIDIChild.
    Je continu à regarder dans le projet d'essais
    A+
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    'Private Sub Form_Load()
    Private Sub MDIForm_Load()
    Save.Enabled = False
    Fermer.Enabled = False
    Sauver.Enabled = False
    End Sub
    re A+
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par défaut
    Bonjour ucfoutu et ProgElecT

    ucfoutu: je veux pouvoir ouvrir dans la feuille MDI Mère un fichier de type rtf et pouvoir également le sauvegarder si je le modifie. En gros, tu as déjà tout résumer dans ton post

    ProgElecT: Je n'ai pas trop compris ton post, peut tu m'expliquer ce que j'ai mal écrit??

  5. #5
    Expert confirmé
    Avatar de ProgElecT
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2004
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 132
    Par défaut
    MDI Mère:
    Private Sub Form_Load(), ne serait ce pas, Private Sub MDIForm_Load()

    dans Private Sub Save_Click()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    CommonDialog1.ShowSave
    RichTextBox1.SaveFile
    Pultôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Me.ActiveForm.RichTextBox1.SaveFile CommonDialog1.FileName, rtfRTF
    dans Private Sub Sauver_Clik()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    'Me.ActiveForm.RichTextBox1.SaveFile CommonDialog.FileName, rtfRTF
    'CommonDialog doit être -> CommonDialog1
    Me.ActiveForm.RichTextBox1.SaveFile CommonDialog1.FileName, rtfRTF
    dans Private Sub Fermer_Click(), il y a des moments le bouton reste actif,
    si l'utilisateur clique sur le bouton Fermer alors qu'il n'y a plus de MdiChild, erreur, donc j'ai ajouté un traitement d'erreur pour eviter le bloquage, le mieux serat de gérer correctement le menu, mais en attendant ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    On Error GoTo Gesterr
    Unload Me.ActiveForm
    Gesterr:
    Une precision, le CommonDialog1 peut (doit) être sur la MDI Mère.
    A+

    _____________________________Suite___________________________________
    Je rajoute
    dans Form1, Form_Load() et Form_Resize(), a quoi correspond pour toi For Each object In Me, object devrait être une variable (declarée), et comme object est un mot reservé de VB, forcement il y a erreur.
    Dans la suite Form_Load(), tu as 2 lignes object.Tag = , la 2° ecrase l'information que ta as mis dans la 1°.
    object.X1, laisse penser a l'objet Line, mais object.Width pour une Line n'existe pas.
    Il me/nous faudra plus d'information sur ce que tu veux faire avec ces 2 procedures, car là on ne peut plus t'aider
    A+
    :whistle:pourquoi pas, pour remercier, un :plusser: pour celui/ceux qui vous ont dépannés.
    saut de ligne
    OOOOOOOOO👉 → → Ma page perso sur DVP ← ← 👈

  6. #6
    Rédacteur

    Avatar de Jean-Michel Ormes
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    1 838
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Services à domicile

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 838
    Par défaut
    Une precision, le CommonDialog1 peut (doit) être sur la MDI Mère.
    A+

    _____________________________Suite___________________________________
    Je rajoute
    dans Form1, Form_Load() et Form_Resize(), a quoi correspond pour toi For Each object In Me, object devrait être une variable (declarée), et comme object est un mot reservé de VB, forcement il y a erreur.
    Dans la suite Form_Load(), tu as 2 lignes object.Tag = , la 2° ecrase l'information que ta as mis dans la 1°.
    object.X1, laisse penser a l'objet Line, mais object.Width pour une Line n'existe pas.
    Cette partie de code, je l'ai récupéré sur ce forum. Il me permet de redimensionner correctement une feuille crée dans la MDI Mère.

    Mon CommonDialog1 est bien sur la MDI Mère.

    Par contre, j'ai testé ce que tu m'as proposé pour les fonctions Save, mais toujours rien. Je vais continuer de chercher en attendant

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 14/10/2013, 18h47
  2. [2.0] MDI - Fonction mère depuis fille
    Par olivier_23 dans le forum C#
    Réponses: 4
    Dernier message: 30/01/2007, 13h15
  3. Réponses: 11
    Dernier message: 06/12/2005, 08h23
  4. Fiche Login avec une application MDI
    Par Andry dans le forum Composants VCL
    Réponses: 6
    Dernier message: 13/09/2004, 11h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo