Forum Liberty Basic France

Le 15/02/2021 à 18h02

Libertynaute Débutant

Groupe: Membre

Inscrit le: 22/09/2015
Messages: 24
Bonjour !
Savez-vous comment mettre des sous-menu dans un "popupmenu" ?
J'explique : j'obtiens mon popupmenu en faisant click droit (c'est mon programme qui le fait), et je voudrais, dans ce popupmenu, mettre des "sous-menu", avec les petites flèches noires à droite, si vous voyez ce que je veux dire :-)
Je peux le faire sans problème avec les "vrais" menus qui proviennent de la "menu bar", car ceux-là ont un numéro et on peut obtenir leur handle. Mais comment obtenir le handle et le numéro (s'il en a un) du popupmenu ?
Ou alors, ça fonctionne tout-à-fait autrement que pour les menus "normaux" ?
Merci de vos lumières !
1180michel

   
Le 15/02/2021 à 18h21

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 419
aucune idée XD
tu peux mettre le code qu'on puisse faire des test ? :D
____________________
Yo !

MSN Web    
Le 16/02/2021 à 16h25

Libertynaute Débutant

Groupe: Membre

Inscrit le: 22/09/2015
Messages: 24
Heu... Merci, mais le prog fait 33000 lignes, et ne pourrait pas marcher "comme ça".
Je vais tâcher d'en extraire quelque chose de pa

   
Le 16/02/2021 à 16h26

Libertynaute Débutant

Groupe: Membre

Inscrit le: 22/09/2015
Messages: 24
Heu... Merci, mais le prog fait 33000 lignes, et ne pourrait pas marcher "comme ça".
Je vais tâcher d'en extraire quelque chose de parlant (désolé, le message précédent s'est posté tout seul, j'avais pas fini !
A+

   
Le 16/02/2021 à 18h47

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
1180michel:
Heu... Merci, mais le prog fait 33000 lignes, et ne pourrait pas marcher "comme ça".
Je vais tâcher d'en extraire quelque chose de parlant (désolé, le message précédent s'est posté tout seul, j'avais pas fini !
A+


Tu peux le zipper et le mettre dans ton espace de stockage (sauf si c'est pour la NASA, of course).
Pour faire: Ton profil (en haut à gauche)/Gestion des Fichiers/Ajouter un fichier (à droite); ça t'envoie dans l'explorateur Windows/clic sur ton zip/ouvrir/et "Uploader" (en bas de page).
Puis, dans le message: Clic sur le nuage (au dessus de la fenêtre du msg et à droite); ça t'envoie dans ton espace de stockage; clic sur la flèche (sous le zip).
____________________
Roro

   
Le 19/02/2021 à 15h46

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 741
Hello ! (un petit bonjour en passant, parce que je me fais rare, volontairement rare pour cause d'addiction au Basic, et que je ne vois pas le temps passer quand j'ai le malheur de mettre le nez dedans ;) )

Je n'ai pas fait mieux que mes collègues du forum, l'aide ne parle pas de sous-menu dans les popupmenus, j'ai bien peur qu'on ne puisse utiliser qu'un seul niveau de menu...

Au mieux, je fais pointer un popupmenu sur un autre popupmenu, ça marche, mais ça n'a pas la fluidité d'un vrai sous-menu de popupmenu. D'après l'exemple fourni dans l'aide :

Code VB :
 
  nomainwin
  open "Geometric White-board" for graphics_nsb as #geo
  print #geo, "trapclose [quit]"
  print #geo, "when rightButtonUp [popupMenu]"
  wait ' stop and wait for a menu item to be chosen

[popupMenu]
  popupmenu "&Spirale carrée", [sousPopupMenu1], _
    "&Spirale rectangulaire", [sousPopupMenu2]
  wait
 
[sousPopupMenu1]    'carré
  popupmenu "&Rouge", [rouge], _
    "&Vert", [vert]
  wait
 
[sousPopupMenu2]    'triangle
  popupmenu "&Bleu", [bleu], _
    "&Gris", [gris]
  wait
 
[rouge] g$="red":gosub [asSquare]:wait
[vert] g$="green":gosub [asSquare]:wait
[bleu] g$="blue":gosub [asTriangle]:wait
[gris] g$="darkgray":gosub [asTriangle]:wait
 
[asSquare]
  print #geo, "cls ; home ; down ; color ";g$
  for x = 1 to 120
    print #geo, "go "; x; " ; turn 87"
  next x
  wait
 
[asTriangle]
  print #geo, "cls ; home ; down ; color ";g$
  for x = 1 to 120
    print #geo, "go "; x; " ; turn 117"
  next x
  wait
 
[quit]
  close #geo
  end
 
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 22/02/2021 à 18h30

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 419
Les codes que je poste font parfois 10-20k lignes ^^ la taille n'est pas importante il faut faire des tests pour comprendre et aider. Ici on aide on vole pas les codes ;)
____________________
Yo !

MSN Web    
Le 22/02/2021 à 23h52

Libertynaute Actif

Groupe: Membre

Inscrit le: 10/10/2017
Messages: 121
Hello Atomose,
Je suis également de cet avis. On emporte rien.
J’ai beaucoup reçu de conseils et explications et pour cela j’ai posté
Ce que je faisait pour les recevoir.
Si les secrets étaient de mise, on avancerait pas beaucoup.
____________________
Castel

   
Le 23/02/2021 à 18h47

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 741
Certes... Je ne suis pas si convaincu que ça qu'il faille étudier l'intégralité du code pour répondre à la question "peut-on avoir des sous-menus dans un popupmenu ?", j'voudrais pas dire, hein, mais ça a, comme qui dirait, pas grand chose à voir l'un avec l'autre et l'autre avec l'un ;)

En ce qui concerne la confidentialité, du moment que le forum est public, n'importe quel quidam peut se servir. Et même, sans vouloir faire le cachottier, on n'a pas forcément envie de divulguer des travaux personnels, même si ce serait, en effet, formateur d'étudier les programmes des autres et de comparer avec nos propres méthodes. Au risque d'oublier la question initiale et de pratiquer le hors-sujet.

Enfin, voilà, ce que j'en pense... Pour la question qui nous intéresse ici, pas besoin du code ;)
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 23/02/2021 à 18h55

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
Moi je n'aide pas ceux qui ne partagent pas leur code, ne serais-ce qu'en mp.
C'est ma philosophie.
Et de toutes façons, utiliser les popup's est une absurdité de fainéant.
____________________
Roro

   
Le 24/02/2021 à 17h54

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 741
Ce n'est pas une attitude très cool envers un lecteur qui n'a aucune idée des idées réciproques et mutuelles des uns envers les autres sur le forum, et qui vient uniquement dans le but technique de parfaire ses connaissances en JB/LB.

Comme nous avons tous pas mal dérivé, mon état de modérateur trouve qu'il serait sympathique et bienvenu de ramener la discussion à son thème initial, et rien qu'à lui : "peut-on faire un popupmenu contenant des sous-menu ?"

Voili :hi
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 25/02/2021 à 14h57

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
Citation:
Ce n'est pas une attitude très cool envers un lecteur

Ce qui n'est pas cool c'est de demander de l'aide sans partager son code, même pas en mp.
Je me demande ce qui me retient de virer carrément le "pas cool".
____________________
Roro

   
Le 25/02/2021 à 22h15

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 741
Roland:
Ce qui n'est pas cool c'est de demander de l'aide sans partager son code, même pas en mp.
Je me demande ce qui me retient de virer carrément le "pas cool".


Et moi, je me demande ce qui me retient de verrouiller carrément la discussion. Je parle du lecteur intéressé par la question et surtout par sa réponse, et qui n'y est pour rien dans les querelles entre contributeurs.

Par ailleurs, la question posée n'ayant aucun rapport avec un problème de programmation qui nécessiterait de publier le code pour obtenir de l'aide, il n'y avait aucune raison de fournir un code.
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 27/02/2021 à 18h00

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 741
*** L'avis du Modo ***

J'interviens ici avec la casquette de modérateur, mon avis personnel ne compte pas.

Il y a trop de hors-sujet dans cette conversation, et quelques propos désagréables. Avant de poster nos prochaines réponses, je ne saurais trop nous conseiller de vérifier (et je dis "nous" parce que ça s'adresse aussi à moi) que ces réponses se réfèrent bien à la question posée, qu'elles ne sont pas des réactions "à chaud" à des propos qui ne sont pas l'objet de la discussion.

Ainsi, près de 90% du texte de la présente discussion n'a rien à voir avec son thème, et aurait dû se trouver dans une discussion dédiée à l'utilité de fournir un code. Et là, ceux qui sont intéressés auraient fourni un lien vers cette discussion, ceux qui voulaient répondre auraient utilisé ce lien, et laissé libre la discussion sur le popupmenu. Si chacun y va de sa petite intervention en oubliant le thème de la discussion, le forum va vite devenir un sacré foutoir.

*** fin de l'avis du modo qui n'est pas si modo que ça mais que quand faut y aller, faut y aller ***
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 27/02/2021 à 19h00

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
Christophe, tu me gonfle.
____________________
Roro

   
Le 28/02/2021 à 09h40

Modérateur

Groupe: Modérateur

Inscrit le: 09/02/2015
Messages: 741
Oui, je sais, et c'est pour ça qu'on s'aime bien ;)

Bonne journée tout le monde, et ne vous prenez pas la tête, c'est dimanche. Je ferme la discussion à la prochaine intervention qui ne parle pas du popupmenu.

à+, donc.
____________________
Just BASIC v2.0 :
  • utilisation courante avec GNU/Linux Mageia7+ Wine (Pas trouvé d'incohérences ou de bug de compilation à ce jour)
  • utilisation occasionnelle ou vérification/débugage difficile avec Windows XP sur un petit eeepc

   
Le 01/03/2021 à 14h51

Modérateur

Groupe: Modérateur

Inscrit le: 30/03/2011
Messages: 419
le problème c'est qu'on veut bien aider mais si on a rien sur quoi travailler on va pas aller loin. Ne pas partager son code entier s'il veut le vendre plus tard il a le droit mais au moins le bout en question pck pour répondre a la question initiale il faut faire des test, proposer des bouts de code...

Bon pour essayer de répondre a la question je pense pas que ce soit possible directement.
Sur mon jeu ascension, j'ai fait un menu déroulant. Peut être que c'est ce qui s'en rapproche le plus ... c'est juste une cascade de bmp qui sen brique avec une interdiction d'action en dehors de son champs. Ca permet d'avoir un menu puis un ou plusieurs sous menu avec la fenêtre du style que l'on veut.
Si c'est pas ca faudrait être plus précis sur ce qui est demandé ^^

____________________
Yo !

MSN Web    
Le 04/03/2021 à 11h39

Libertynaute Actif

Groupe: Membre

Inscrit le: 10/10/2017
Messages: 121
Bonjour à Tous,
Voici ma modeste contribution au sujet des menus déroulants.
Si ça peut intéresser .... Bien volontiers !
Avec ce principe on peut faire également des sous-menus, etc ...
Utiliser les touches flèches de direction.
On peut également programmer d'autres touches.

OldStyleMenu.zip
____________________
Castel

   
Le 05/03/2021 à 11h11

Libertynaute Débutant

Groupe: Membre

Inscrit le: 22/09/2015
Messages: 24
Bonjour et merci à ceux qui m'ont apporté leur réponse.
C'est totalement inutile que je vous envoie mon programme, il ne marchera pas. C'est un programme de navigation (maritime) qui nécessite d'installer des dizaines de fichiers, dll, etc qui sont dans des répertoires particuliers à mon PC. Entre faire un programme pour soi et faire un programme qui s'adapte à toutes les configurations, il y a un monde...
Mais pour ceux que ça intéresse, voici un petit programme qui explique ce que je veux. Programme trouvé dans la nombreuse doc sur LB (merci à l'auteur Jim Brossman) et un peu modifié.
Bonne journée à vous.
Code VB :
 
'Cascading Menu Demo - Jim Brossman

    nomainwin
    WindowWidth = 600 : WindowHeight = 300
    UpperLeftX=int((DisplayWidth-WindowWidth)/2)
    UpperLeftY=int((DisplayHeight-WindowHeight)/2)
 
    'These are the menu items that will be modified to have cascading menus added.
    'The label [anybranch] must be in the menu but does not need to be defined.
    'You can't leave it blank.
    menu #main, " &Names ",_
        "Edit Names", [anybranch],_                              'Menu #0
        "&Print Names", [PrintNames],_
        "Find Duplicate",[anybranch]
    menu #main, " &Address ", "&Edit Address", [EditAdd]         'Menu #1
    menu #main, " &Tools ", "Sub Menu 1",_                       'Menu #2
     [SubMenu1],"Sub Menu 2", [SubMenu2],_
      "Sub Menu 3", [anybranch]
 
    'These will be the sub menus that modify the above menus and
    'add the cascading menus.
    menu #main, "&Edit Names","&Add",[Add],"&Change",[Chg],_     'Menu #3
        "&Delete",[Del]
    menu #main, "&Find Duplicate", "&Names", [FindDupNames],_    'Menu #4
    "&Addresses", [FindAdds]
    menu #main, "&Sub Menu 1", "&Top", [Top], "&Middle", [Middle],_     'Menu #5
    "&Bottom", [Bottom]
    menu #main, "&Sub Menu 2", "&First", [First], "&Second", [Second],_ 'Menu #6
    "&Third", [Third]
    menu #main, "&Sub Menu 3", "&One", [One], "&Two", [Two],_    'Menu #7
    "T&hree", [Three]
 
    'These is another menu items that will not be modified.
    menu #main, " &Help ", "&Help File", [HelpFile],_            'Menu #8
    "Help &About", [HelpAbout]
 
    open "Cascading Menu Demo" for graphics as #main
 
#main,"when rightButtonUp [popup]"
 
    print #main, "trapclose [Quit]"
'wait  'Unremark this line to see all menus in the window.

    'Get handles of the main window, window menu and sub menus.
    hMain=HWnd(#main)'Handle of main window
    CallDLL #user32,"GetParent",hMain AS word,hParent AS word
'    CallDll #user,"GetMenu",_

    'Get the handle of the window menu into hMenu
    calldll #user32, "GetMenu",hParent as ulong,hMenu as ulong
    'Get the handles of the sub menus from hMenu using the Menu #
    'and put the handle into hnames, htools, heditnames etc.
    'We are going to modify menu #0 with menu #3 and #4
    'and menu #2 with menus #5, 6 and 7.
    calldll #user32, "GetSubMenu",hMenu as ulong,_
    0 as long,h0 as ulong  'Get handle of the Names menu #0
    calldll #user32, "GetSubMenu",hMenu as ulong,_
    2 as long,h2 as ulong  'Get handle of the Tools menu #2
    calldll #user32, "GetSubMenu",hMenu as ulong,_
    3 as long,h3 as ulong  'Get handle of Edit Names menu #3
    calldll #user32, "GetSubMenu",hMenu as ulong,_
    4 as long,h4 as ulong  'Get handle of Find Duplicate menu #4
    calldll #user32, "GetSubMenu",hMenu as ulong,_
    5 as long,h5 as ulong  'Get handle of Sub Menu 1 menu #5
    calldll #user32, "GetSubMenu",hMenu as ulong,_
    6 as long,hsubmenu2 as ulong  'Get handle of Sub Menu 2 menu #6
    calldll #user32, "GetSubMenu",hMenu as ulong,_
    7 as long,hsubmenu3 as ulong  'Get handle of Sub Menu 3 menu #7

    'Modify the submenus to add the cascading menus.
    'To modify a sub menu you need the handle of the menu item from the above lines,
    'the the sub menu position under the menu item,
    'the handle of the sub menu to make that will make the change,
    'and the new name of the sub menu.
    call MenuMod h0, 0, h3, "&Edit Names"
    call MenuMod h0, 2, h4, "&Find Duplicate"
    call MenuMod h2, 0, h5, "Sub Menu &1"
    call MenuMod htools, 1, hsubmenu2, "Sub Menu &2"
    call MenuMod htools, 2, hsubmenu3, "Sub Menu &3"
 
    'Remove all the cascading sub menus now that they have replaced the
    'original ones because they still remain in the window menu.
    'Remove in reverse order or numbers will be wrong because if you
    'remove 3 first, #4 becomes #3, #5 becomes #4 etc.
    for x=7 to 3 step -1
        call MenuRemove hMenu, x
    next
 
    'You must redraw the menu bar for all the changes to take effect.
    calldll #user32, "DrawMenuBar", hMain as ulong, result as long
 
 
notice "En cliquant sur les menus, vous voyez les menus cascadés, avec les petites flèches noires"
 
notice "Avec click droit, vous voyez un menu popup.  C'est celui-là que je voudrais cascader aussi..."
 
    wait
 
    'Sub to modify the sub menus and add the cascading menu.
    sub MenuMod hmainmenu, position, hsubmenu, pointer$
        flags = _MF_BYPOSITION Or _MF_POPUP Or _MF_STRING
        calldll #user32, "ModifyMenuA",_
            hmainmenu as ulong,_  'Handle of the menu to be modified
            position as long,_ 'position of the sub menu under the menu
            flags as long,_ ' change using the position number
            hsubmenu as ulong,_ 'hendle of sub menu to change
            pointer$ as ptr,_ 'new name of the sub menu
            result as long
    end sub
 
    'Sub to remove cascading menus no longer needed.
    sub MenuRemove hmainmenu, position
        calldll #user32, "RemoveMenu",hmainmenu as ulong,_ 'handle of window menu
        position as long,_MF_BYPOSITION as long,_ 'Menu # of original cascading menu.
        result as long
    end sub
 
 
    'These branches are here so the program doesn't crash if
    'you select a menu item.
    [Add] a$="Add": gosub [Notify]:wait
    [Chg] a$="Change": gosub [Notify]:wait
    [Del] a$="Delete": gosub [Notify]:wait
    [PrintNames] a$="Print Names": gosub [Notify]:wait
    [EditAdd] a$="Edit Addresses": gosub [Notify]:wait
    [FindDupNames] a$="Find Duplicate Names": gosub [Notify]:wait
    [FindAdds] a$="Find Duplicate Adresses": gosub [Notify]:wait
    [Top] a$="Top": gosub [Notify]:wait
    [Middle] a$="Middle": gosub [Notify]:wait
    [Bottom] a$="Bottom": gosub [Notify]:wait
    [First] a$="First": gosub [Notify]:wait
    [Second] a$="Second": gosub [Notify]:wait
    [Third] a$="Third": gosub [Notify]:wait
    [One] a$="One": gosub [Notify]:wait
    [Two] a$="Two": gosub [Notify]:wait
    [Three] a$="Three": gosub [Notify]:wait
    [HelpFile] a$= "Help File": gosub [Notify]:wait
    [HelpAbout] a$= "Help Aboute": gosub [Notify]:wait
 
    [Quit]
    close #main
    end
 
    [Notify]
    Notice "You have selected "+a$:return
 
[Notifys]'
    Notice "You have selected popupmenu"
    wait
 
[popup]'
    popupmenu "Menupopup1",[Notifys],_
              "Menupopup2",[Notifys],_
              "Menupopup3",[Notifys]
    wait
 

   
Le 05/03/2021 à 13h21

Administrateur

Groupe: Administrateur

Inscrit le: 04/03/2012
Messages: 2453
Voilà qui est bien; on sait au moins de quoi on parle.
Pourquoi ne fais-tu pas avec les menus, qui cascadent très bien ?
____________________
Roro

   

 |  |

1 Utilisateur en ligne : 0 Administrateur, 0 Modérateur, 0 Membre et 1 Visiteur
Utilisateur en ligne : Aucun membre connecté
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie