FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Une calculatrice en une ligne de programme
Assistant de création de menu Panoramic Emptypar jean_debord Aujourd'hui à 8:47

» Form(résolu)
Assistant de création de menu Panoramic Emptypar leclode Hier à 17:59

» trop de fichiers en cours
Assistant de création de menu Panoramic Emptypar Marc Hier à 11:42

» Bataille navale SM
Assistant de création de menu Panoramic Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Gestion d'un système client-serveur.
Assistant de création de menu Panoramic Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Assistant de création de menu Panoramic Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Assistant de création de menu Panoramic Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Assistant de création de menu Panoramic Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Assistant de création de menu Panoramic Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Assistant de création de menu Panoramic Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Assistant de création de menu Panoramic Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Assistant de création de menu Panoramic Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Assistant de création de menu Panoramic Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Assistant de création de menu Panoramic Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Assistant de création de menu Panoramic Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
-20%
Le deal à ne pas rater :
Ecran PC GIGABYTE 28″ LED M28U 4K ( IPS, 1 ms, 144 Hz, FreeSync ...
399 € 499 €
Voir le deal

 

 Assistant de création de menu Panoramic

Aller en bas 
3 participants
AuteurMessage
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Assistant de création de menu Panoramic Empty
MessageSujet: Assistant de création de menu Panoramic   Assistant de création de menu Panoramic EmptyJeu 1 Oct 2015 - 18:17

Bonjour à tous,
J'ai enfin terminé mon Assistant de création de menu Panoramic.

J'ai du me résoudre à vous fournir une version limitée à 2 Niveaux de menu. Je n'ai pas réussi au 3éme niveau.

Cette version donne la possibilité de numéroter les menus par variables si vous avez coché l'option.

Pas besoin d'explications, il suffit de répondre aux questions, de lire les infos écrites en bleu et d'utiliser les bons boutons.

Pour commencer, je vous conseille répondre non au premier message vous comprendrez mieux la construction du code du menu. Par la suite, vous pourrez essayer la version "Small" qui présent l'avantage de prendre moins de place sur l'écran.

A la sortie, vous pourrez coller votre code tout prêt dans l'éditeur Panoramic. C'est pourquoi je vous conseille de faire un exe, ça évite d'avoir 2 éditeurs Panoramic ouverts, mais ce n'est pas obligatoire.

Bon à savoir:
1) le premier caractère d'un menu ou sous-menu est automatiquement transformé en Majuscule, mais pas pour les label.
2) Pour les menus le ON_CLICK est facultatif.
3) si vous avez choisis l'option "numérotation par variable" vos variables sont crées comme ceci:
pour un menu fichier par exemple => M_Fichier%
pour un sous-menu nouveau par exemple => SM_Nouveau%
4) Le numéro de MAIN_MENU peut commencer à 4000 (dans ce cas il vous reste 999 n° d'objets disponibles pour votre menu)

Voici le code en open source:
Code:
' assistant de création d'un Menu_Panoramic V2 (2 niveaux maximum) par Jean Claude 10/2015
rem ============================================================================
INIT()
if message_confirmation_yes_no("Souhaitez-vous une version réduite (sans détails) ?")=1 then option_affichage$="S"
if option_affichage$="S"
   width 0,965 : height 0,175
   hide Dlist_Code% : hide Dlist_Dim% : hide Dlist_Label%
   hide Dlist_SP% : hide Dlist_VC% : hide Dlist_OC%
else
   width 0,945 : height 0,692
end_if
START()
END
rem ======================================================' générer le code
GVC:
  inactive bouton_GVC% : clear list_codeG% : show list_codeG%
  inactive_boutons() : inactive bouton_visu%
  caption info%,"Génération et visualisation du code Panoramic" : pause 100
  item_add list_codeG%,"REM ====================================================' MAIN_MENU "+str$(NMM%) : pause 100
  if count(Dlist_Dim%)>1
     item_add list_codeG%,"' -----   DIM(s) du MAIN_MENU "+str$(NMM%)+"   -----" : pause 100
     b$=item_read$(Dlist_Dim%,1)+" "
     for n%=2 to count(Dlist_Dim%)
         a$=item_read$(Dlist_Dim%,n%) : b$=b$+a$+" , " : pause 1
     next n%
     b$=left$(b$,len(b$)-3) : item_add list_codeG%,b$ : item_add list_codeG%,"" : pause 1
     item_add list_codeG%,"' -----   CONSTANTES du MAIN_MENU "+str$(NMM%)+"   -----" : pause 1
     b$=""
     for n%=2 to count(Dlist_VC%)
            a$=item_read$(Dlist_VC%,n%) : b$=b$+a$+" : " : pause 1
     next n%
     b$=left$(b$,len(b$)-3) : item_add list_codeG%,b$
  end_if
  item_add list_codeG%,""
  item_add list_codeG%,"' -----   LABEL(s) du MAIN_MENU "+str$(NMM%)+"   -----" : pause 1
  if count(Dlist_Label%)>1
     b$=item_read$(Dlist_Label%,1)+" "
     for n%=2 to count(Dlist_Label%)
         a$=item_read$(Dlist_Label%,n%) : b$=b$+a$+" , " : pause 1
     next n%
     b$=left$(b$,len(b$)-3) : item_add list_codeG%,b$ : item_add list_codeG%,"" : pause 1
  end_if
  item_add list_codeG%,""
  if count(Dlist_Code%)>1
     item_add list_codeG%,"' -----   Création du MAIN_MENU "+str$(NMM%)+"   -----" : pause 1
     a$="" : b$=""
     for n%=2 to count(Dlist_Code%)
         a$=item_read$(Dlist_Code%,n%)
         if left$(a$,1)="§"
            item_add list_codeG%,"" : pause 1
         else
            item_add list_codeG%,a$ : pause 1
         end_if
     next n%
  end_if
  item_add list_codeG%,""
  if count(Dlist_Label%)>1
     item_add list_codeG%,"' -----   CONNEXIONS du MAIN_MENU "+str$(NMM%)+"   -----" : pause 1
     for n%=1 to count(Dlist_OC%)
         a$=item_read$(Dlist_OC%,n%) : item_add list_codeG%,a$ : pause 1
     next n%
     item_add list_codeG%,""
     item_add list_codeG%,"END"
     item_add list_codeG%,"' -----   SOUS-PROGRAMMES du MAIN_MENU "+str$(NMM%)+"   -----" : pause 1
     a$="" : b$=item_read$(Dlist_SP%,1) : b$=""
     for n%=2 to count(Dlist_SP%)
         a$=item_read$(Dlist_SP%,n%) : item_add list_codeG%,a$ : pause 1
     next n%
  end_if
  pause 100
  if option_affichage$=""
     caption info%,"ATTENTION: la sélection d'une ligne entraine sa suppression."
     on_click list_codeG%,sup_lig
  else
     caption info%,"Il vous reste à copier le code ou quitter."
  end_if
  show Bt_Copy% : on_click Bt_Copy%,Copy
RETURN
Copy:
  b$="" : caption info%,"Copie du code en cours..." : pause 100 : show memo_codeG%
  for n%=1 to count(list_codeG%)
      a$=item_read$(list_codeG%,n%)+chr$(13) : pause 5
      item_add memo_codeG%,a$
      b$=b$+a$
  next n%
  clipboard_string_copy b$
  caption info%,"Le code est maintenant copier dans le presse-papier. Vous pouvez quitter"
  caption bouton_modif%,"QUITTER" : inactive Bt_Copy%
RETURN
sup_lig:
  n%=item_index(list_codeG%) : if n%=0 then return
  if item_index$(list_codeG%)=""
     item_delete list_codeG%,n% : return
  else
     m%=message_confirmation_yes_no("La ligne que vous avez selectionnée contient du code."+chr$(13)+chr$(13)+" Voulez-vous réellement supprimer cette ligne")
     if m%=1 then item_delete list_codeG%,n%
  end_if
RETURN
fin:
  if option_affichage$="S" then m%=-2
  if option_affichage$="" then m%=-10
  for n%=height(0) to 1 step m%
      if width(0)>10 then width 0,width(0)-14
      height 0,n%: pause 1
      if n%<5 then exit_for
  next n%
  terminate
RETURN
rem ===========================================================' Ajouter un menu
Aj_Menu:
   inactive_boutons()
   if caption$(bouton_visu%)="Annuler Visualiser"
      for n%=NMM%+1 to nm%
          active n% :maxn%=n%
             on_click n%,rien
      next n%
   else
      Parent_Prov%=NMM% :variable$=""
      nm%=nm%+1 : SUB_MENU nm% : PARENT nm%, Parent_Prov% : caption nm%,string$(10," ")
      inactive bouton_visu% : caption info%,"Sélectionnez le menu vide" : on_click nm%,Aj_Menu1
   end_if
RETURN
Aj_Menu1:
   if caption$(number_click)<>string$(10," ")
      message "Vous devez sélectionner un menu vide"
      Parent_Prov%=NMM% :variable$="" : caption info%,"" : active BT_Aj_Menu%
   else
      gosub Aj_Menu2 : return
   end_if
RETURN
Aj_Menu2:
    caption info%,"Saisir le nom du menu"
    if message_input("Nom du Menu: (Objet n°"+str$(nm%)+")","","")=1
       caption nm%,message_text$
    else
       message "Réponse obligatoire" : goto Aj_Menu2
    end_if
    if message_text$="" then message "La création d'un menu sans nom est impossible" : delete nm% : nm%=nm%-1: gosub Redemarre : return
    if right$(message_text$,1)="%" then message "Le caratère % est interdit" : delete nm% : nm%=nm%-1 : gosub Redemarre : return
    for n%=1 to len(message_text$)
        a$=mid$(message_text$,n%,1) : Ctrl_si_Caractere_Interdit(a$)
        if okc$="N" then delete nm% : nm%=nm%-1 : gosub Redemarre : return
    next n%
    substitue(message_text$,"_"," ")
    Majuscule_Auto(message_text$) : message_text$=a$
    if count(Dlist_doublon_menu%)<>0
       for n%=1 to count(Dlist_doublon_menu%)
           if message_text$ = item_read$(Dlist_doublon_menu%,n%)
              message "Ce Nom est déjà utilisé, recommencez" : delete nm% : nm%=nm%-1 : gosub Redemarre : return
           else
              item_add Dlist_doublon_menu%,message_text$
           end_if
       next n%
    else
       item_add Dlist_doublon_menu%,message_text$
    end_if
    off_click nm%
    active bouton_visu%
    Majuscule_Auto(message_text$) : caption nm%,a$
    variable$="M_"+a$+"%"
    item_add Dlist_Code%,"    SUB_MENU "+str$(nm%)+" : PARENT "+str$(nm%)+","+str$(Parent_Prov%)+" : CAPTION "+str$(nm%)+","+chr$(34)+a$+chr$(34)
    item_add Dlist_Code%,"§"+str$(nm%)
    Connexion()
RETURN
SUB Majuscule_Auto(chaine$)
    dim_local Lposchaine%,chaineProv$,debChaine$
    debChaine$=upper$(left$(chaine$,1)) : Lposchaine%=len(chaine$)-1 : chaineProv$=right$(chaine$,Lposchaine%) : a$=insert$(chaineProv$,debChaine$,1)
END_SUB
SUB Connexion()
    if checked(option_vr%)=1
       item_add Dlist_Dim%,variable$
       item_add Dlist_VC%,variable$+"="+str$(nm%)
    end_if
    Connexion2()
END_SUB
SUB Connexion2()
    caption info%,"Saisir (ou pas) une connextion vers un sous-programme"
    if message_input("Connexion ON_CLICK ","indiquez ici le LABEL sans les 2 points (:)   (Facultatif)","")=1
       if message_text$<>""
          for n%=1 to len(message_text$)
              a$=mid$(message_text$,n%,1) : okc$="E" : Ctrl_si_Caractere_Interdit(a$)
              if okc$="N" then Connexion2() : exit_sub
          next n%
          if count(Dlist_doublon_label%)<>0
             for n%=1 to count(Dlist_doublon_label%)
                 if message_text$ = item_read$(Dlist_doublon_label%,n%)
                    message "Ce Nom de label est déjà utilisé, recommencez" : Connexion2() : exit_sub
                 else
                    item_add Dlist_doublon_label%,message_text$
                 end_if
             next n%
          else
       item_add Dlist_doublon_label%,message_text$
    end_if
          if checked(option_cl%)=1
             item_add Dlist_OC%,"ON_CLICK "+str$(nm%)+","+message_text$
             item_add Dlist_Label%,message_text$
             item_add Dlist_SP%,message_text$+":"
             item_add Dlist_SP%,"stop"
             item_add Dlist_SP%,"RETURN"
             item_add Dlist_SP%,""
          end_if
          if checked(option_vr%)=1
             item_add Dlist_OC%,"ON_CLICK "+variable$+","+message_text$
             item_add Dlist_Label%,message_text$
             item_add Dlist_SP%,message_text$+":"
             item_add Dlist_SP%,"stop"
             item_add Dlist_SP%,"RETURN"
             item_add Dlist_SP%,""
          end_if
       end_if
    end_if
    active bouton_GVC% : active bouton_visu% : Inactive_main_menu() : gosub Redemarre
END_SUB
rem ======================================================' Ajouter un sous-menu
Aj_SMenu:
    inactive_boutons()
   if caption$(bouton_visu%)="Annuler Visualiser"
      for n%=NMM%+1 to nm% : active n% : on_click n%,rien : next n%
   else
      for n%=NMM%+1 to nm% : maxn%=n% : active n% : on_click n%,Aj_SMenu1 : next n%
      inactive bouton_visu% : caption info%,"Cliquez sur un Menu Parent (2 fois au premier sous-menu) "
   end_if
RETURN
Aj_SMenu1:
    if caption$(bouton_visu%)="Annuler Visualiser" then return
    off_click number_click
    variable$=""
    if object_exists(maxn%+1)=0
       Parent_Prov%=number_click
       nm%=maxn%+1 : SUB_MENU nm% : PARENT nm%, Parent_Prov% : caption nm%,string$(10," ")
    else
       ' rien
    end_if
    on_click nm%,Aj_SMenu2
RETURN
Aj_SMenu2:
    if caption$(bouton_visu%)="Annuler Visualiser" then return
    caption info%,"Saisir le nom du sous-menu"
    if message_input("Ajouter un sous-Menu au menu: "+caption$(Parent_Prov%),"","")=1
       caption nm%,message_text$
    else
       message "Réponse obligatoire" : goto Aj_Menu2
    end_if
    if message_text$="" then message "La création d'un sous-menu sans nom est impossible" : delete nm% : nm%=nm%-1 : gosub Redemarre : return
    for n%=1 to len(message_text$)
        a$=mid$(message_text$,n%,1) : Ctrl_si_Caractere_Interdit(a$)
        if okc$="N" then delete nm% : nm%=nm%-1 : gosub Redemarre : return
    next n%
    substitue(message_text$,"_"," ") : Majuscule_Auto(message_text$) : variable$="SM_"+a$+"%"
    if count(Dlist_doublon_menu%)<>0
       for n%=1 to count(Dlist_doublon_menu%)
           if message_text$ = item_read$(Dlist_doublon_menu%,n%)
              message "Ce Nom est déjà utilisé, recommencez" : delete nm% : nm%=nm%-1 : gosub Redemarre : return
           else
              item_add Dlist_doublon_menu%,message_text$
           end_if
       next n%
    else
       item_add Dlist_doublon_menu%,message_text$
    end_if
    Insert_Code(6) : Connexion()
RETURN
SUB Insert_Code(nbsp%)
  if nbsp%=6
    for n%=1 to count(Dlist_Code%)
        a$=item_read$(Dlist_Code%,n%)
        if left$(a$,1)="§"
           V%=val(mid$(a$,2,len(a$)-1))
           if V%=Parent_Prov%
              item_delete Dlist_Code%,n%
              Majuscule_Auto(message_text$) : caption nm%,a$
              item_insert Dlist_Code%,n%,string$(nbsp%," ")+"SUB_MENU "+str$(nm%)+" : PARENT "+str$(nm%)+","+str$(Parent_Prov%)+" : CAPTION "+str$(nm%)+","+chr$(34)+a$+chr$(34)
              item_insert Dlist_Code%,n%+1,"§"+str$(V%)
              exit_for
           end_if
        end_if
    next n%
  end_if
END_SUB
rem ======================================' Mise en place des dim, label, objets
SUB INIT()
' DIM PROG
  dim n%,m%,maxn%,no%,nm%,NMM%,Parent_Prov%,V%,variable$,a$,b$,pas,okc$,option_affichage$
' LABEL
  label V_CTI,V_CTI1,V_CTI2,V_NMM,V_NMM1,V_NMM2,V_OP_NUM,Recommence,Aj_Menu,Aj_Menu2
  label Aj_Menu1,Redemarre,Aj_SMenu,Aj_SMenu1,Aj_SMenu2,Visu_menu,Retour_prog,rien,GVC
  label sup_lig,Copy,fin
' DIM OBJ
  dim Dlist_tri%,Dlist_Code%,Dlist_Dim%,Dlist_Label%,Dlist_SP%,Dlist_VC%,Dlist_OC%
  dim Dlist_doublon_menu%,Dlist_doublon_label%,memo_code1%,memo_code2%,alpha_CTI%
  dim edit_CTI%,bouton_CTI%,alpha_NMM%,edit_NMM%,bouton_NMM%,bouton_visu%,Ctnr%,option_cl%
  dim option_vr%,bouton_modif%,BT_Aj_Menu%,info%,BT_Aj_SMenu%,BT_Aj_SSMenu%
  dim bouton_GVC%,list_codeG%,Bt_Copy%,Bt_txt%,memo_codeG%
' OBJ
  width 0,945 : height 0,692 : caption 0,"Assistant de fabrication d'un Menu PANORAMIC"
  top 0,(screen_y/2)-(height(0)/2) : left 0,(screen_x/2)-(width(0)/2) :' border_hide 0
  color 0,200,240,255 : on_close 0,fin
  no%=5000
  no%=no%+1 : Dlist_tri%=no% : dlist no%
  no%=no%+1 : Dlist_doublon_menu%=no% : dlist no%
  no%=no%+1 : Dlist_doublon_label%=no% : dlist no%
  no%=no%+1 : Dlist_Code%=no% : list no%
              width no%,300 : height no%,250 : top no%,120 : left no%,5
  no%=no%+1 : Dlist_Dim%=no% : list no%
              width no%,300 : height no%,250 : top no%,120 : left no%,315
  no%=no%+1 : Dlist_Label%=no% : list no%
              width no%,300 : height no%,250 : top no%,380 : left no%,5
  no%=no%+1 : Dlist_SP%=no% : list no%
              width no%,300 : height no%,250 : top no%,380 : left no%,315
  no%=no%+1 : Dlist_VC%=no% : list no%
              width no%,300 : height no%,250 : top no%,120 : left no%,625
  no%=no%+1 : Dlist_OC%=no% : list no%
              width no%,300 : height no%,250 : top no%,380 : left no%,625
  no%=no%+1 : list_codeG%=no% : list no%
              width no%,920 : height no%,508 : top no%,120 : left no%,5
              hide no%
  no%=no%+1 : memo_codeG%=no% : memo no%
              width no%,920 : height no%,508 : top no%,120 : left no%,5
              hide no%
  no%=no%+1 : alpha_CTI%=no% : alpha no% : top no%,10 : left no%,5
     caption no%," N° d'identification de FORM (pour command_target_is) " : font_bold no%
  no%=no%+1 : edit_CTI%=no% : edit no% : width no%,30 : top no%,top(no%-1)-4 : left no%,width(no%-1)+5 : font_bold no%
  no%=no%+1 : bouton_CTI%=no% : button no% : width no%,20 : top no%,top(edit_CTI%)-2 : left no%,left(edit_CTI%)+width(edit_CTI%)+2
     font_bold no% : caption no%,"X" : hint no%,"Valider le N° d'identification du FORM" : inactive no%
  no%=no%+1 : alpha_NMM%=no% : alpha no% : top no%,10 : left no%,left(bouton_CTI%)+width(bouton_CTI%)+20
     caption no%," N° d'identification de MAIN_MENU " : font_bold no% : hide no%
  no%=no%+1 : edit_NMM%=no% : edit no% : width no%,35 : top no%,top(alpha_NMM%)-4 : left no%,left(alpha_NMM%)+width(alpha_NMM%) : font_bold no% : hide no%
  no%=no%+1 : bouton_NMM%=no% : button no% : width no%,20 : top no%,top(edit_NMM%)-2 : left no%,left(edit_NMM%)+width(edit_NMM%)+2
     font_bold no% : caption no%,"X" : hint no%,"Valider le N° d'identification du MAIN_MENU" : inactive no% : hide no%
  no%=no%+1 : Ctnr%=no% : container_option no% : width no%,480 : height no%,30
     top no%,30 : left no%,5 : hide no%
  no%=no%+1 : option_cl%=no% : option no% : parent no%,Ctnr% : width no%,(width(Ctnr%)/2)-30
     font_bold no% : caption no%,"Numérotation des objets classique" : top no%,10 : left no%,10 : hint no%,"Numérotation par nombre"
  no%=no%+1 : option_vr%=no% : option no% : parent no%,Ctnr% : width no%,(width(Ctnr%)/2)-10
     font_bold no% : caption no%,"Numérotation des objets par variables" : top no%,10 : left no%,left(option_cl%)+width(option_cl%)+15
  no%=no%+1 : bouton_modif%=no% : button no% : width no%,120 : top no%,5 : left no%,width(0)-width(no%)-22
     font_bold no% : caption no%,"Quiter sans sauver" : hint no%,"Tout recommencer à zéro" : on_click bouton_modif%,Recommence
  no%=no%+1 : BT_Aj_Menu%=no% : button no% : width no%,110 : top no%,65 : left no%,5
     font_bold no% : caption no%,"Ajouter un Menu" : hint no%,"Ajouter un Menu" : hide no%
  no%=no%+1 : info%=no% : alpha no% : top no%,90 : left no%,5
     font_bold no% : font_size no%,14 : font_color no%,0,0,255 : caption info%,""
  no%=no%+1 : BT_Aj_SMenu%=no% : button no% : width no%,140 : top no%,top(BT_Aj_Menu%) : left no%,left(BT_Aj_Menu%)+width(BT_Aj_Menu%)+10
     font_bold no% : caption no%,"Ajouter un Sous-Menu" : hint no%,"Ajouter un Sous-Menu" : hide no%
  no%=no%+1 : BT_Aj_SSMenu%=no% : button no% : width no%,170 : top no%,top(BT_Aj_SMenu%) : left no%,left(BT_Aj_SMenu%)+width(BT_Aj_SMenu%)+10
     font_bold no% : caption no%,"Ajouter un Sous-sous-Menu" : hint no%,"Ajouter un Sous-sous-Menu" : hide no%
  no%=no%+1 : bouton_visu%=no% : button no% : width no%,115 : top no%,top(Ctnr%)+5 : left no%,left(Ctnr%)+width(Ctnr%)+20
     caption bouton_visu%,"Visualiser le menu" : hint bouton_visu%,"Active le menu pour pouvoir le visualiser"
     font_bold no% : on_click bouton_visu%,Visu_menu : inactive no% : hide no%
  no%=no%+1 : bouton_GVC%=no% : button no% : width no%,180 : top no%,top(Ctnr%)+5 : left no%,width(0)-width(no%)-22
     caption no%,"Générer et visualiser le code" : hint no%,"Générer et visualiser le code sans enregistrement"
     font_bold no% : on_click no%,GVC : hide no%
  no%=no%+1 : Bt_Copy%=no% : button no% : width no%,120 : top no%,top(bouton_GVC%)+30 : left no%,width(0)-width(no%)-22
     caption no%,"Copier le code" : hint no%,"Copier le code dans le presse-papier"
     font_bold no% : on_click no%,Copy : hide no%
END_SUB
rem =====================================================' Visualisation du menu
Visu_menu:
    caption info%,"Visualisation du Menu réel "
    off_click bouton_visu%
    caption bouton_visu%,"Annuler Visualiser" : hint bouton_visu%,"Retour au programme"
    on_click bouton_visu%,Retour_prog
    inactive_boutons() : active_main_menu()
RETURN
Retour_prog:
    caption info%,"Cliquez sur le bouton de votre choix"
    off_click bouton_visu%
    show bouton_visu% : caption bouton_visu%,"Visualiser le menu" : hint bouton_visu%,"Active le menu pour pouvoir le visualiser"
    on_click bouton_visu%,Visu_menu
    Inactive_main_menu() : active_boutons()
RETURN
rien:
RETURN
rem ================================================' Mise en place de MAIN_MENU
SUB START()
    set_focus edit_CTI% : on_change edit_CTI%,V_CTI : on_key_up edit_CTI%,V_CTI1
END_SUB
V_CTI:
    active bouton_CTI% : on_click bouton_CTI%,V_CTI2
RETURN
V_CTI1:
    if key_up_code=13 then gosub V_CTI2
RETURN
V_CTI2:
    if numeric(text$(edit_CTI%))=0
       message "La valeur de COMMAND_TARGET_IS doit être un nombre" : text edit_CTI%,"" : set_focus edit_CTI% : return
    else
       if val(text$(edit_CTI%))<0
          message "La valeur de COMMAND_TARGET_IS ne doit pas être inférieure à zéro" : text edit_CTI%,"" : set_focus edit_CTI% : return
       else
          inactive edit_CTI% : inactive bouton_CTI%
          item_add Dlist_SP%,"' --- Sous-Programme du MAIN_MENU ---"
          item_add Dlist_Label%,"LABEL "
          item_add Dlist_Dim%,"DIM "
          item_add Dlist_VC%,"' --- Constante ---"
          item_add Dlist_Code%,"' --- MAIN_MENU --- "
          item_add Dlist_Code%,"COMMAND_TARGET_IS "+text$(edit_CTI%)
          n%=val(text$(edit_CTI%))
          show alpha_NMM% : show edit_NMM% : show bouton_NMM%
          set_focus edit_NMM% : on_change edit_NMM%,V_NMM
       end_if
    end_if
RETURN
V_NMM:
    active bouton_NMM% : on_click bouton_NMM%,V_NMM2 : on_key_up edit_NMM%,V_NMM1
RETURN
V_NMM1:
    if key_up_code=13 then gosub V_NMM2
RETURN
V_NMM2:
    if numeric(text$(edit_NMM%))=0
       message "La valeur de MAIN_MENU doit être un nombre" : text edit_NMM%,"" : set_focus edit_NMM% : return
    else
       if val(text$(edit_NMM%))<1
          message "La valeur de MAIN_MENU doit être supérieure à zéro" : text edit_NMM%,"" : set_focus edit_NMM% : return
       else
          if val(text$(edit_NMM%))=<n%
             message "La valeur de MAIN_MENU ne doit pas être inférireure ou égale à COMMAND_TARGET_IS" : text edit_NMM%,"" : set_focus edit_NMM% : return
          else
             if val(text$(edit_NMM%))>4000
                message "La valeur de MAIN_MENU ne peut pas être supérieur à 4000" : text edit_NMM%,"" : set_focus edit_NMM% : return
             else
                inactive edit_NMM% : inactive bouton_NMM%
                show Ctnr% : set_focus Ctnr%
                on_click option_cl%, V_OP_NUM : on_click option_vr%, V_OP_NUM
             end_if
          end_if
       end_if
    end_if
RETURN
V_OP_NUM:
     NMM%=val(text$(edit_NMM%)) : Parent_Prov%=NMM% : nm%=NMM%
     item_add Dlist_Code%,"  MAIN_MENU "+str$(NMM%)
     show bouton_GVC% : inactive bouton_GVC% : show bouton_visu% : inactive Ctnr% : MAIN_MENU NMM%
Redemarre:
     if nm%>NMM%
        caption info%,"Cliquez sur le bouton de votre choix" : active BT_Aj_Menu%
     else
        caption info%,"Cliquez sur le bouton Ajouter un menu" : active BT_Aj_Menu%
     end_if
     show BT_Aj_Menu% : active BT_Aj_Menu% : on_click BT_Aj_Menu%,Aj_Menu
     if nm%>NMM% then show BT_Aj_SMenu% : active BT_Aj_SMenu% : on_click BT_Aj_SMenu%,Aj_SMenu
RETURN
Recommence:
   gosub fin
RETURN
SUB inactive_boutons()
    inactive BT_Aj_Menu% : inactive BT_Aj_SMenu%
END_SUB
SUB active_boutons()
    active BT_Aj_Menu% : active BT_Aj_SMenu%
END_SUB
SUB Inactive_main_menu()
    for n%=NMM%+1 to nm% : inactive n% : next n%
END_SUB
SUB active_main_menu()
    for n%=NMM%+1 to nm% : active n% :maxn%=n% : next n%
END_SUB
rem ============================================================================
Sub Ctrl_si_Caractere_Interdit(car1$)
  if okc$="E" and asc(car1$)=32 then message "l'espace est interdit dans un label" : okc$="N" : exit_sub
  okc$=""
  if asc(car1$)>0 and asc(car1$)<32 then message_car_interdit(car1$)
  if asc(car1$)>32 and asc(car1$)<48 then message_car_interdit(car1$)
  if asc(car1$)>57 and asc(car1$)<60 then message_car_interdit(car1$)
  if asc(car1$)>90 and asc(car1$)<95 then message_car_interdit(car1$)
  if asc(car1$)=96 then message_car_interdit(car1$)
  if asc(car1$)>122 then message_car_interdit(car1$)
End_sub
Sub message_car_interdit(car$)
    message "Le caratère [ "+car$+" ] est interdit":okc$="N"
End_sub
' ------------------------
SUB substitue(chaine$,cb$,cc$) :' retourne a$
a$=""
dim_local i%,item$
 for i%=1 to len(chaine$)
     EXPLODE(cc$,chaine$)
 next i%
 for i%=1 to count(Dlist_tri%)
     item$=item_read$(Dlist_tri%,i%)
     a$=a$+item$+cb$
 next i%
 a$=left$(a$,len(a$)-1)
 clear Dlist_tri%
END_SUB
' -----------------------------
SUB EXPLODE(delimiter$,chaine$):' Nardo modifié JC
 clear Dlist_tri%
  WHILE INSTR(chaine$,delimiter$)<>0
     ITEM_ADD Dlist_tri%,LEFT$(chaine$,INSTR(chaine$,delimiter$)-1)
     chaine$=RIGHT$(chaine$,LEN(chaine$)-INSTR(chaine$,delimiter$))
  END_WHILE
 ITEM_ADD Dlist_tri%,chaine$
END_SUB


N'hésitez pas à faire vos critiques et commentaires. A+


PS: le code à été remplacé le 01/10/2015 à 18h37 (un petit bug corrigé)
Revenir en haut Aller en bas
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Assistant de création de menu Panoramic Empty
MessageSujet: Re: Assistant de création de menu Panoramic   Assistant de création de menu Panoramic EmptyJeu 1 Oct 2015 - 19:26

Bonsoir Jean Claude !

Chapeau pour cette structure !
Nous avons maintenant La possibilité de gérer des menus avancés grâce a toi !
C'est sûr que tes 500 lignes faces a mes 30, je peux pas rivaliser ! Suspect

J'ai testé rapidement ton programme.
La première chose qui saute au yeux c'est les possibilités et la visibilité dans ton programme.
Après niveau simplicité, il faudra tester un peu plus ...Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Assistant de création de menu Panoramic Empty
MessageSujet: Re: Assistant de création de menu Panoramic   Assistant de création de menu Panoramic EmptyJeu 1 Oct 2015 - 20:27

Minibug a écrit:
C'est sûr que tes 500 lignes faces a mes 30, je peux pas rivaliser !
Détrompe-toi, le tien à le mérite de gérer des menus avec des sous-niveaux sans limite.

Si tu souhaites l'utiliser pour GPP, il  faudra que tu l'appelle par Execute ou Execute_wait et sauver le code dans un fichier. Ou dans plusieurs fichiers comme décrit ci-dessous.
Tu peux changer les list nommée ci-dessous en Dlist pour récupérer chaque partie du code dans des fichiers.
( Dlist_Code%, Dlist_Dim%, Dlist_Label%, Dlist_SP%, Dlist_VC%, Dlist_OC%)
Comme tu le vois, en réalité se sont des list, mais c'est très facile de les changer en Dlist ou en mémo.

Tel quel, mon programme est utile pour fabriquer un menu Panoramic de manière simple et assistée, mais il doit être adapté pour être intégré à un éditeur.

Au passage, pour les débutants en Panoramic: Je ne vous incite pas à utiliser cet utilitaire tant que vous n'avez pas saisi vous-même un menu Panoramic.
Avoir un code tout prêt ce n'est pas bon pour l'apprentissage. Very Happy

A+


Dernière édition par Jean Claude le Ven 2 Oct 2015 - 7:20, édité 1 fois
Revenir en haut Aller en bas
papydall

papydall


Nombre de messages : 6996
Age : 73
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

Assistant de création de menu Panoramic Empty
MessageSujet: Re: Assistant de création de menu Panoramic   Assistant de création de menu Panoramic EmptyJeu 1 Oct 2015 - 21:05

Hello Jean Claude.
Minibug a écrit:
Chapeau pour cette structure !

Moi, je suis tête-nu, pas de chapeau  Laughing Mais je m’incline.

Spoiler:

Petite remarque :
Spoiler:
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Jean Claude

Jean Claude


Nombre de messages : 5948
Age : 69
Localisation : 83 Var
Date d'inscription : 07/05/2009

Assistant de création de menu Panoramic Empty
MessageSujet: Re: Assistant de création de menu Panoramic   Assistant de création de menu Panoramic EmptyJeu 1 Oct 2015 - 21:24

Bon, pour faire plaisir à tes beaux yeux j'adopte  font_bold no% pour les list(s).
Quoique qu'ils ne servent à rien pour créer son menu, il ne sont là que pour le fun... Very Happy

Je préfère utiliser la version "Small", on est plus concentré sur le menu lui même.

Merci d'avoir jeté un oeil (qui malgré tout voit encore bien  Very Happy  )

A+
Revenir en haut Aller en bas
Contenu sponsorisé





Assistant de création de menu Panoramic Empty
MessageSujet: Re: Assistant de création de menu Panoramic   Assistant de création de menu Panoramic Empty

Revenir en haut Aller en bas
 
Assistant de création de menu Panoramic
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Création de fonctions inexistantes en Panoramic.
» Petit menu des outils créé avec mon IDE en Panoramic
» creer des menu pour panoramic
» Programme création de site web en Panoramic
» Création d'un '.exe' à partir d'un programme Panoramic.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: