[VB] Comment coder un menu déroulant et une ToolBar ?

Comment coder un menu déroulant et une ToolBar ? [VB] - VB/VBA/VBS - Programmation

Marsh Posté le 11-01-2003 à 17:56:09    

Je veux coder la fonction enregistrer de ce menu http://albator7k.free.fr/toolbar6.jpg
avec un bouton de commande j'y arrive sans problème je clic et je tape mon code celui là en l'occurence
Data.Recordset.CancelUpdate
Data.Recordset.Bookmark = Data.Recordset.LastModified
 mais dans un menu j'y arrive pas :/
la toolbar j'ai mis des case avec appel de fonction
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key
Case "New"
    Nouveau_Click
Case "Save"
    Enregistrer_Click
 
mais comment je fais poour coder ces focntions :cry:


---------------
L'expérience est une lanterne que l'on a accrochée dans le dos et qui n'éclaire que le chemin parcouru [:albator7k]
Reply

Marsh Posté le 11-01-2003 à 17:56:09   

Reply

Marsh Posté le 11-01-2003 à 17:59:41    

beuh? :heink:
 
pourtant avec un menu c plus facile, tu crées ton menu, puis au design time, tu sélectionnes le menu dont tu veux coder la réaction, il te fera apparaître un code du style

Code :
  1. Private Sub Menu1_Click()
  2. End Sub


en admettant que ton menu s'appelle Menu.  Suis pas sûr d'avoir bien capté la question cela dit :D


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 11-01-2003 à 18:10:24    

drasche a écrit :

beuh? :heink:
 
pourtant avec un menu c plus facile, tu crées ton menu, puis au design time, tu sélectionnes le menu dont tu veux coder la réaction, il te fera apparaître un code du style

Code :
  1. Private Sub Menu1_Click()
  2. End Sub


en admettant que ton menu s'appelle Menu.  Suis pas sûr d'avoir bien capté la question cela dit :D


je me suis mal expliqué ce que je veux c'est déclenché l'évènement click  de la même façon que sur un button je clic dessu il m'ouvre la fenêtre de code avec le Private Sub évènement_Click()
seulement là cette icone est inclus dans une toolbar http://albator7k.free.fr/toolbar6.jpg
et quand je clic sur la toolbar j'ai pas ça


---------------
L'expérience est une lanterne que l'on a accrochée dans le dos et qui n'éclaire que le chemin parcouru [:albator7k]
Reply

Marsh Posté le 11-01-2003 à 18:36:08    

Pas clair clair le problème précis (mais bien réel).
 
Si c'est un niveau fonctionnel, je ne sais pas comment font les autres, mais j'ai créé une fonction générale "OuvrirFichier". Quand on clique sur le bouton adhoc, il lance la fonction "OuvrirFichier", et le menu adhoc fait de même : une seule fonction qu'on peut lancer de différents endroits.
Y autant de fonctions que d'actions, mais mises à part.
 
Click sur bouton ou sur menu sont des évènements distincts même si le résultat (voulu par le développeur) final est le même.

Reply

Marsh Posté le 11-01-2003 à 19:31:27    

CARBON_14 a écrit :

Pas clair clair le problème précis (mais bien réel).
 
Si c'est un niveau fonctionnel, je ne sais pas comment font les autres, mais j'ai créé une fonction générale "OuvrirFichier". Quand on clique sur le bouton adhoc, il lance la fonction "OuvrirFichier", et le menu adhoc fait de même : une seule fonction qu'on peut lancer de différents endroits.
Y autant de fonctions que d'actions, mais mises à part.
 
Click sur bouton ou sur menu sont des évènements distincts même si le résultat (voulu par le développeur) final est le même.


les menus et les boutons ne me poe pas de problême, le problême je l'ai avec des bouton qui sont dans le toolbar


---------------
L'expérience est une lanterne que l'on a accrochée dans le dos et qui n'éclaire que le chemin parcouru [:albator7k]
Reply

Marsh Posté le 11-01-2003 à 19:48:37    

CARBON_14 a écrit :

Pas clair clair le problème précis (mais bien réel).
 
Si c'est un niveau fonctionnel, je ne sais pas comment font les autres, mais j'ai créé une fonction générale "OuvrirFichier". Quand on clique sur le bouton adhoc, il lance la fonction "OuvrirFichier", et le menu adhoc fait de même : une seule fonction qu'on peut lancer de différents endroits.
Y autant de fonctions que d'actions, mais mises à part.
 
Click sur bouton ou sur menu sont des évènements distincts même si le résultat (voulu par le développeur) final est le même.


idem pour moi, sauf que j'appelle directement le truc dans MenuMachin_Click :)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 11-01-2003 à 19:49:55    

albator7k a écrit :


les menus et les boutons ne me poe pas de problême, le problême je l'ai avec des bouton qui sont dans le toolbar


moi ce que je pige pas c'est que le code de ton premier post me paraît correct, pour autant que le champ Key de chaque bouton soit garni avec une constante.  Est-ce le cas?


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 11-01-2003 à 19:54:04    

C'est sûr que si Button.Key est un integer, faut comparer à une valeur integer (ou constante globale definie qq part).
 
Select Case Button.Key
  case "Ouvrir" peut pas aller si Button.Key n'est pas une chaine.
 
NB : je sais même plus si select case marche avec les chaînes, le C me fait perdre mémoire VB. :(
 
EDIT : VB, je suis resté à la version 3 16 bits. Passé à C et je me fait mes barres d'outils à la main, ex nihilo, => galèrique.


Message édité par Carbon_14 le 11-01-2003 à 20:14:26
Reply

Marsh Posté le 11-01-2003 à 20:04:35    

ben button.key est défini via les Custom Properties de la toolbar (champ Key) donc ce n'est pas compliqué à résoudre :)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 11-01-2003 à 21:56:19    

j'ai réussi à coder le menu déroulant sans problême, la fonction enregistrer via http://albator7k.free.fr/toolbar8.jpgfichier->enregistrer fonctionne nickel, par contre je sais pas comme ent la choper via la toolbar :/
 
vous me parlez de key  :??: c'est bien ça :??:
http://albator7k.free.fr/toolbar7.jpg
je suis largué là en plus y a rien dans mes bouquins à par les menus déroulant, et les boutons on peut pas dire qu'ils se cassent le cul les éditeurs


---------------
L'expérience est une lanterne que l'on a accrochée dans le dos et qui n'éclaire que le chemin parcouru [:albator7k]
Reply

Marsh Posté le 11-01-2003 à 21:56:19   

Reply

Marsh Posté le 11-01-2003 à 22:15:21    

voir la fonction que tu donnes dans ton premier post, c exactement ça que tu dois faire.  Si la key "Save" est associée à ton bouton, tu dois lire la propriété Key du bouton que tu reçois en paramètre à ta fonction Toolbar1_ButtonClick.  Cette Key doit être égale à la Key que tu as tapé dans les propriétés.


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 11-01-2003 à 22:42:16    

Moi j'utilise l'index (1, 2, 3, ...) et ça marche très bien


Message édité par MagicBuzz le 11-01-2003 à 22:43:15
Reply

Marsh Posté le 11-01-2003 à 22:54:55    

J'ai un doute (illumination) :
 
En VB, on fait pas  
select case Chaine$
  case IS "toto"
 
  case IS "tata"
end case
 
Faut pas le mot clé IS pour chaînes ??
 
Sinon, on peut créer des variables symboliques
const BTNNEW  1  (pour le const suis plus sûr syntaxe)
const BTNSAVE 2
etc..
et mettre ces variables dans zones de propriétés (c'est comme ça que je fais en C). C'est plus lisible que 1, 2, 3 et ça les remplace avantageusement.
 
EDIT : je suis jaloux pour la fabrication des boutons, ça semble très "facile" : créer nouveau bouton. Quand on le code en dur, ça est un peu plus beaucoup compliqué. C'est bien les langages évolué, finalement. :D  :ouch:


Message édité par Carbon_14 le 11-01-2003 à 22:58:45
Reply

Marsh Posté le 11-01-2003 à 23:01:20    

Non non.
 
Select Case Tartampion
Case "truc":
   ' Do something
Case "machin":
   ' Do another thing
Case Else:
   ' Do something else
End Select
 
Non, par contre, chaque section Case est totalement indépendante, contrairement au C ou tous les cases suivants sont éxécutés.

Reply

Marsh Posté le 11-01-2003 à 23:04:04    

Pour le coup des constantes dans les propriétés graphiques, chuis pas sûr... Jamais essayé, moi ça me fait peur :D
 
Mauis à priori, si tu mets des lettres alors qu'il attends un chiffre, il te jette.
 
Et c'est pas plus mal, parceque quand c'est du texte qui est attendu, le seule moyen pour différencier "toto" et la variable "toto", serait de mettre des guillemets autour des chaînes... Super pratique pour écrire les champs caption ;)

Reply

Marsh Posté le 11-01-2003 à 23:16:21    

MagicBuzz a écrit :

Non non.
Non, par contre, chaque section Case est totalement indépendante, contrairement au C ou tous les cases suivants sont éxécutés.


Pour les blocs, je sais car j'ai pratiqué qq années. Le case suivant fait un "break" invisible.
 
Je me demandais juste pour les "chaînes de caractères". Je croyais que c'était case IS "toto". En C, case szChne marche pas du tout du tout.. Mais case BTNSAUVE: très bien.
 
Il doit y avoir une discordance entre ses variables "New" dans création de bouton, et le test pour savoir quel bouton est cliqué.
 
Une chose à faire (si j'étais à sa place) : mettre un point d'arrêt (F9 non ?) avant ou au début du test sur  
Select Case Button.Key  
 
et quand on y arrive, voir quel est le Button.Key qui arrive à ce moment là (en l'explicitant avec la touche VB adhoc), voir si c'est une chaîne ou un nombre et adapter ensuite son code. Doit y avoir une astuce toute bête.
 
Je viens de vérifier sous QBasic, le CASE IS ne sert que pour les comparaisons "larges" genre case IS > 5. Ouf.
 
QUand on met "Toto", c'est une chaîne. Ca ne peut pas être la variable Toto "masquée".


Message édité par Carbon_14 le 11-01-2003 à 23:18:00
Reply

Marsh Posté le 11-01-2003 à 23:31:35    

perso je fais des Case "save", et j'avoue d'ailleurs que le Case Is ne m'est jamais venu à l'esprit :D
Je mets aussi des lettres plutôt que des chiffres dès qu'on parle d'une Key (y compris pour les collections) sinon ya très gros risque de confusion et de péter un câble  :pt1cable:


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 11-01-2003 à 23:45:02    

drasche a écrit :

perso je fais des Case "save", et j'avoue d'ailleurs que le Case Is ne m'est jamais venu à l'esprit :D
Je mets aussi des lettres plutôt que des chiffres dès qu'on parle d'une Key (y compris pour les collections) sinon ya très gros risque de confusion et de péter un câble  :pt1cable:  


A prpos du case le MSDN il me dit  
Private Sub Toolbar1_ButtonClick(ByVal Button As MSComctlLib.Button)
Select Case Button.Key
Case Is = "New"
    Nouveau_Click
 :heink:  :cry:  
tain je coince sur cette toolbar  :cry:  
j'ai tout codé sauf la toolbar qui fais chier  :cry:  il me faudrait un exemple j'en cherche sur le web mais sans succès :/


---------------
L'expérience est une lanterne que l'on a accrochée dans le dos et qui n'éclaire que le chemin parcouru [:albator7k]
Reply

Marsh Posté le 12-01-2003 à 00:01:19    

Si le résultat du codage ne correspond pas à ce qui est attendu, faut mettre un point d'arrêt sur le select case pour voir
1) si on y passe en cliquant sur bouton (sinon, pb codage)
2) si oui, la variable retournée est-elle la bonne (celle qui est prévue).
 
D'après les connaisseurs, le codage semble correct. Le debuggae par suivi d'instruction rend des fois de grands services. On pense qq chose, le compilo comprends autre chose.. Nous sommes humains donc faillibles (c'est ce que je dis quand on trouve des défauts dans mes progs :D).


Message édité par Carbon_14 le 12-01-2003 à 00:02:51
Reply

Marsh Posté le 12-01-2003 à 00:24:24    

CARBON_14 a écrit :

Si le résultat du codage ne correspond pas à ce qui est attendu, faut mettre un point d'arrêt sur le select case pour voir
1) si on y passe en cliquant sur bouton (sinon, pb codage)
2) si oui, la variable retournée est-elle la bonne (celle qui est prévue).
 
D'après les connaisseurs, le codage semble correct. Le debuggae par suivi d'instruction rend des fois de grands services. On pense qq chose, le compilo comprends autre chose.. Nous sommes humains donc faillibles (c'est ce que je dis quand on trouve des défauts dans mes progs :D).


 :lol: bon vais aller  :sleep: la nuit porte conseil quelle idée j'ai eu de vouloir foutre une toolbar  :pfff:


---------------
L'expérience est une lanterne que l'on a accrochée dans le dos et qui n'éclaire que le chemin parcouru [:albator7k]
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed