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 :

Disparition d'une Toolbar dans une form MDI


Sujet :

VB 6 et antérieur

  1. #1
    Invité
    Invité(e)
    Par défaut Disparition d'une Toolbar dans une form MDI
    Bonjour à tous

    Je vous pose le contexte.

    Une application VB6 avec une MdiForm et des MdiChild.
    La MdiForm comporte une Toolbar.

    Je souhaite qu'à certains moments une MdiChild reste au premier plan par rapport aux autres MdiChild, comme une fenêtre modale.

    Pour cela j'utilise cette API :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Const GWL_HWNDPARENT = (-8)
    Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal wNewLong As Long) As Long
     
    Public Sub KeepScreenVisible(frm As Form)
        'if the form is to stay on top, frm.hwnd will get the name of the form
        Dim KeepScreenOnTop As Long
        KeepScreenOnTop = SetWindowLong(frm.hwnd, GWL_HWNDPARENT, frm_Main.hwnd)
    End Sub
    frm_Main étant bien sûr le conteneur principal.

    Cela fonctionne parfaitement, cependant sur une de mes MdiChild, j'ai un treeview et lorsque je sélectionne celui-ci (pour le déployer), la Toolbar de la fenêtre parent disparait et impossible de la voir s'afficher à nouveau.

    Je précise que pour les autres contrôles de cette forme, listbox, je n'ai pas de disparition de la ToolBar.

    Merci à tous ceux qui pourront m'aiguiller.

    Philippe
    Dernière modification par Invité ; 11/07/2013 à 20h53.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Re

    Petit complément d'information.

    Lorsque je redimensionne le formulaire Parent manuellement (en cliquant sur les boutons), la toolbar apparaît, mais c'est moche de faire cela, et par code (WindowsState) cela ne fonctionne pas

    Philippe

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

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

    Informations forums :
    Inscription : Décembre 2004
    Messages : 6 077
    Points : 17 172
    Points
    17 172
    Par défaut
    Salut

    cependant sur une de mes MdiChild, j'ai un treeview et lorsque je sélectionne celui-ci (pour le déployer), la Toolbar de la fenêtre parent
    La fenêtre parent, la MDIForm ?

    Curieusement je n'ai pas ce problème chez moi, a moins que je n'ai pas réussi à reproduire exactement les mêmes conditions que toi.
    Je souhaite qu'à certains moments une MdiChild reste au premier plan par rapport aux autres MdiChild, comme une fenêtre modale.
    Une solution peut être utilisable pour le cas que tu décris, sans utilisation d'APIs (qui semble t il créerait le disfonctionnement).
    Form2 qui contient le TreeView se comporte comme si elle était modale dés qu'un node est sélectionné.

    Un module.bas pour avoir une variable globale
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Option Explicit
    Public Drapeau As Boolean
    Un MDIForm avec son Toolbar et ces 3 boutons, chacun déclenchant l'affichage de 3 Forms MDIChild.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    'MDIForm
    Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
    Select Case Button.Index
        Case 1: Form1.Show
        Case 2: Form2.Show
        Case 3: Form3.Show
    End Select
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Form1 MDIChild
    Private Sub Form_Activate()
    If Drapeau = True Then Form2.Show: Me.ZOrder 1
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    'Form3 MDIChild
    Private Sub Form_Activate()
    If Drapeau = True Then Form2.Show: Me.ZOrder 1
    End Sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    'Form2 MDIChild
    Private Sub Form_Load()
    Dim T As Integer
    For T = 0 To 15
        TreeView1.Nodes.Add , , "MainMenu" & T, Chr$(T + 65)
    Next T
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
    Drapeau = False
    End Sub
    Private Sub TreeView1_NodeClick(ByVal Node As MSComctlLib.Node)
    If Node.Selected = True Then Drapeau = True
    End Sub
    Lorsque je redimensionne le formulaire Parent manuellement (en cliquant sur les boutons), la toolbar apparaît, mais c'est moche de faire cela, et par code (WindowsState) cela ne fonctionne pas
    Cela reste du code, mais une variable et une ligne dans chaque MDIChild reste une bidouille acceptable (pour moi )
    Soyez sympa, pensez -y
    Balises[CODE]...[/CODE]
    Balises[CODE=NomDuLangage]...[/CODE] quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Balises[C]...[/C] code intégré dans une phrase.
    Balises[C=NomDuLangage]...[/C] code intégré dans une phrase quand vous mettez du code d'un autre langage que celui du forum ou vous postez.
    Le bouton en fin de discussion, quand vous avez obtenu l'aide attendue.
    ......... et pourquoi pas, pour remercier, un pour celui/ceux qui vous ont dépannés.
    👉 → → Ma page perso sur DVP ← ← 👈

  4. #4
    Invité
    Invité(e)
    Par défaut
    Ce type de solution marche parfaitement et me convient

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

Discussions similaires

  1. [XL-2007] Afficher une checkbox dans une feuille si une checkbox d'une autre feuille est cochée
    Par JessieCoutas dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 18/08/2009, 13h35
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Envoyer une formulaire dans une page dans une Frame
    Par zooffy dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 29/06/2007, 10h13
  5. Recherche une valeur d'une cellule dans une colonne d'une autre feuille
    Par kourria dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 21/06/2007, 13h48

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