Dans visual basic, lorsque l'on crée des menu, on passe par l'option en haut dans le programme et on les fait un par un.
Ce que j'aimerais faire, c'est que lorsque, j'ouvre mon programme, l'exécutable compiler, ça accède une base de donnée, puis à l'aide des informations de cette base de données, ça rajoute un menu dans le haut à coté de Fichier, Affichage etc...
En gros, mon problème, c'est comment je fais pour créer un menu en ouvrant l'exécutable.
Je ne peux donc créer des menu préfait
En fais mon utilisation est simple, ca me sert de favoris pour lancer IE ou d'autres programmes.
Cette table dans la base de données contient alors 3 clefs.
1- Le Titre
2- La commande à exécuter
3- Une phrase afin d'identifier les groupes
Donc ca génèrerait un premier menu "Favoris"
À l'intérieur, ca afficherait un sous menu qui contiendrais chaque phrase au point 3
À l'intérieure de chaque sous menu, il y aurait un sous menu contenant le titre au point 1 qui exécuterait la commande au point 2.
La programmation, je la fais pour le fun comme ça, malgré mon diplôme en programmation, je ne compte pas en faire carrière ou lire des bouquins là dessus. Ce que j'ai besoin je le trouve sur internet et ça ma tout de même permis de créer un programme pour mon travail. Ce programme contrôle une fenêtre internet explorer qui nous sert à passer des commandes sur n'importe lequel des différent 2000 serveurs ou 25000 postes du réseau.
Le programme utilise une base de données Access, qui classe des commandes déjà pré fait avec exemple et info etc... et en double cliquant sur la commande, ca copie la commande dans IE et lance IE avec les valeurs appropriés.
Par la suite, le programme prend le résultat d'IE et l'affiche, assez simple comme utilisation.
Évidement, en passant la commande, ca demande les infos nécessaires dépendamment de celle ci.
Je voulais rajouter dans le haut, un menu favori, qui permet de lancer des applications sur le poste.
Présentement, je la fait afficher dans un listbox avec séparation d'astérix entre chaque classe d'application.
J'utilise alors VB6 et Access que je connais bien et auquel j'ai une facilité à programmer afin d'atteindre mon but.
Bonsoir,
Je te suggère de regarder là (le 1er commentaire, surtout).
http://www.vbfrance.com/codes/AJOUT-SOUS-MENU-DYNAMIQUEMENT_156.aspx Ceci étant dit, j'ai l'intime conviction (mais peux me tromper) que tu cherches à te compliquer la vie (enfin... si j'ai bien deviné...)
Celà va plus loin encore !
Si j'ai bien deviné (il exploite un titre,et "une commande à exécuter")
1) Le titre semble devoir être utilisé comme texte de l'ongler de menu
or le caption d'un élément de menu est parfaitement modifiable dynamiquement !
2) la "commande à exécuter" me parait plutôt être une chaône de caractères à passer à une commande, pas une commande "en soi"
et il suffirait alors de mettre ce texte dans une variable et de passer cette variable
etc...
J'au donc tout simplement l'impression de ce que l'in a toujours les mêmes éléments, dont seuls les captions changent (voir plus haut) et dont les instructions utilisent toujours ce qui peut être remplacé pat une variable string
Je voudrais ajouter ici une chose que j'ai envie de dire depuis longtemps.
Il y a de très sérieuses raisons pour ne jamais utiliser les menus de VB et de leur préférer autre chose.
Je sais que je vais en faire hurler plus d'un et fais donc cette déclaration en parfaite connaissance de cause (on en reparlera et on verra bien)
Angelius : si vraiment tu veux pouvoir éviter quelques ennuis de dernière minute (notamment lorsque tu dustribueras ton application) : fais comme moi : crée donc tes propres menus cinstitués de contrôles dans une picturebox. Laisse tomber ce que t'offre VB dans ce domaine car c'est un cadeau empoisonné.
Bien qu'ici (ton problème actuel) tu pourrais à mon avis t'en sortir sans création dynamique de menus et sous-menus... :
1) Tu remarqueras qu'il te serait possible de créer très facilement, de façon dynamique, des contrôles dans une PictureBox
2) Essaye maintenant de redimensionner des menus VB pour correspondre à une résolution de l'écran-client : tu n'y parviendras pas, sauf à modifier les paramètres Windows (ce que ton client n'apréciera surement pas !...). sauf si; bien évidemment, tu n'utilises qu'une fraction de la place disponible pour l'affichage d'un menu VB (une occupation "complète" te conduirait à la catastrophe assurée en cas de nécessité de redimensionner en résolution inférieure à celle du développement)
L'emploi de contrôles dans une pictureBox te servant de barre de menu, par contre, te permettrait ce redimensionnement de manière relativement facile.
J'ajoute ici que la raison qui pourrait m'être opposée, à savoir le fait d'utiliser une MDI comme porteuse de menu, ne tient pas debout. Il est également possible d'utiliser une picturebox "porteuse" dans une MDIForm et la forme fille sera également confinée (comme avec un menu VB) dans la partie restant disponible de la MDIForm.
Voilà ! J'ai dit ... tu fais maintenant comme tu l'entends, bien évidemment...mais je retiens que je te l'aurai dit.
Vous n’avez pas trouvé la réponse que vous recherchez ?
En fait le code est simple
Mettons que je load les valeur dans la liste box, voici la commande:
Public Sub Lance()
Dim LanceApp As String
Dim go As Object
On Error GoTo ErreurLance
LanceApp = Lst_Application.List(Lst_Application.ListIndex, 1)
If LanceApp <> "" Then
Set go = CreateObject("WScript.Shell")
go.run LanceApp
End If
Exit Sub
ErreurLance:
Call MsgBox("Erreur critique à l'accès de l'application.", vbCritical, "Erreur au lancement de l'application")
Exit Sub
Salut,
Tu crés des menus et sous menus sans rien mettre à caption, en lui donnant un nom (name), ensuite suivant ce que tu veux, dans ton code tu fais
Nom_de_ton menu.Caption ="ce_que_tu_veux"
Merci jmfmarques, c'est exactement ce que je voullais.
En fait, j'ai utiliser les forms et module puis ca fonctionne.
Je vais donc l'adapter pour mon code.
Le premier commentaire, "VB.qeqchose" me génère du code rouge pour dire que visual basic comprends rien.