Georges
Nombre de messages : 290 Age : 55 Localisation : Martinique Date d'inscription : 29/05/2009
| Sujet: AUTOMENU ou le codage automatique de menus Sam 12 Sep 2009 - 22:04 | |
| Salut à tous Vu la sortie de la dernière version de Panoramic. je l'ai essayé et effectivement les objets systèmes du menu n'ont plus les limitations antérieures. Donc je vous propose un programme que j'appelle AUTOMENU dont le but est d'encoder automatiquement le code en langage Panoramic pour la programmation de menu. Vous pouvez enregistrer votre projet en tant que fichier de travail et ensuite le coder pour l'utiliser pour vos programmes ayant un menu. Vous pourez recupérez votre menu codé automatiquement dans le répertoire ...\Automenu\codestock très certainement sur le disque C: Ce programme est une ébauche en cours d'élaboration seul l'option de modification n'est pas terminer. J'accepte toutes sortes de réflexion et/ou de critiques qu'elles quelles soient. voici le code: - Code:
-
rem *********************************** rem ** ** rem ** CREATION ET ENCODAGE DE MENU ** rem ** Codé par LLS ** rem ** Copyright: Aout 2009 ** rem ** Version: 1.00 ** rem ** ** rem *********************************** ERROR_FRENCH rem définition de variables dim a,NB,i,j,k,test,num,tesmn,cc,inc,inc2,inc3 dim bo$,on$,t1$,t2$,nom$,a$,mess$,titre1$,titre2$,etiket$,ligne$,bandeau$,ajout$,banaj$ rem définition de tableaux dim entmen$(12),nbsub(12),submen$(12,18),men(12) rem déclaration d'étiquette label new,open,open2,cancel,cancel2,save,saveas,quit,modif,visua,code,propos label choix1,contr1,boucle,boucle2,boucle3,sortboucle,sortboucle2,directsave label menu1,menu2,menu3,menu4,menu5,menu6,menu7,menu8,menu9,menu10 label menu11,menu12 label titreform,suprim,suprim2,suprim3,efface,change,change2,echappe,saut label insert,ajout,ajout2,deplace,modifmen rem initialisation de variable test=0 : tesmn=0 : cc=0 : on$="" : inc=0 : ajout$ = "" gosub titreform full_space 0 color 0,50,90,250 rem initialisation du menu main_menu 1 rem création du menu principal sub_menu 2 : caption 2,"Fichier" : parent 2,1 sub_menu 3 : caption 3,"Edition" : parent 3,1 sub_menu 4 : caption 4,"Exécution" : parent 4,1 sub_menu 5 : caption 5,"A propos" : parent 5,1 rem création du sous menu Fichier sub_menu 6 : caption 6,"Nouveau" : parent 6,2 sub_menu 7 : caption 7,"Ouvrir" : parent 7,2 sub_menu 8 : caption 8,"Enregistrer" : parent 8,2 sub_menu 9 : caption 9,"Enregistrer sous" : parent 9,2 sub_menu 10 : caption 10,"Quitter" : parent 10,2 rem création du sous menu Edition sub_menu 11 : caption 11,"Modifier" : parent 11,3 sub_menu 12 : caption 12,"Visualiser" : parent 12,3 rem création du sous menu Exécution sub_menu 13 : caption 13,"Codé le source" : parent 13,4 rem création du sous menu A propos sub_menu 14 : caption 14,"A propos de AutoMENU" : parent 14,5 rem création OS ouvrir list 15 : width 15,1 : hide 15 button 16 : width 16,1 : hide 16 button 17 : width 17,1 : hide 17 combo 18 : width 18,1 : hide 18 alpha 19 : width 19,1 : hide 19 for i=1 to 260 edit i+19 : width i+19,1 : hide i+19 next i for i=1 to 20 alpha i+279 : width i+279,1 : hide i+279 next i for i=300 to 319 combo i : left i,-20 : width i,1 : hide i next i button 320 : left 320,200 : top 320,30 : width 320,120 : height 320,25 : hide 320 alpha 321 : top 321,300 : left 321,300 : height 321,80 alpha 322 : hide 322 edit 323 : hide 323 button 324 : hide 324 : left 324,350 : top 324,30 : width 324,80 : height 324,25 alpha 325 : hide 325 : left 325,55 : top 325,35 : width 325,300 : height 325,20 for i=1 to 12 check i+325 : hide i+325 next i for i=338 to 347 button i : hide i next i for i=1 to 12 option i+347 : hide i+347 next i font_name 321,"comic sans ms" : font_size 321,30 : font_color 321,50,255,100 caption 16,"OUVRIR" caption 17,"ANNULER" caption 19,"Combien de sous-menus voulez-vous créer ?" caption 320,"Valider le menu" caption 321,"Concept.CAD présente AutoMENU ..." caption 324,"Annuler" caption 325,"Choisissez un fichier" caption 338,"Insérer un menu" caption 339,"Ajouter un menu" caption 340,"Supprimer un menu" caption 341,"Changer le nom d'un menu" caption 342,"Déplacer un menu" caption 343,"Modifier un menu déroulant" caption 344,"Sortir" caption 345,"Valider les modifications" caption 346,"Valider votre choix" caption 347,"Echap" rem action sur les options de menu on_click 6,new on_click 7,open on_click 8,save on_click 9,saveas on_click 10,quit on_click 11,modif on_click 12,visua on_click 13,code on_click 14,propos on_click 16,open2 on_click 17,cancel on_click 18,choix1 on_click 324,cancel2 if tesmn=0 then inactive 11 : inactive 12 : inactive 13 end rem ------------- rem ------------- SOUS ¨PROGRAMMES rem ------------- new: test=1 ajout$ = "" : gosub titreform for i=6 to 10 : inactive i : next i : show 324 left 18,250 : top 18,30 : width 18,50 : show 18 left 19,30 : top 19,32 : width 19,220 : height 19,25 : show 19 for i=1 to 12 item_add 18,str$(i) next i return choix1: show 320 : on_click 320,contr1 NB = val(item_index$(18)) hide 19 : inactive 18 for i=1 to NB left i+19,i*100-70 : top i+19,80 : width i+19,80 : height i+19,25 : show i+19 a$ = "Menu " + str$(i) left i+279,i*100-70 : top i+279,60 : caption i+279,a$ : show i+279 left i+299,i*100-50 : top i+299,105 : width i+299,50 : height i+299,25 : show i+299 for j=1 to 18 item_add i+299,str$(j) next j next i on_click 300,menu1 on_click 301,menu2 on_click 302,menu3 on_click 303,menu4 on_click 304,menu5 on_click 305,menu6 on_click 306,menu7 on_click 307,menu8 on_click 308,menu9 on_click 309,menu10 on_click 310,menu11 on_click 311,menu12 return open: for i=6 to 10 : inactive i : next i cc=0 : clear 15 : NB=0 left 15,50 : top 15,50 : width 15,250 : height 15,300 left 16,320 : top 16,80 : width 16,80 : height 16,30 left 17,320 : top 17,120 : width 17,80 : height 17,30 for i=15 to 17 : show i : next i : show 325 if dir_exists("c:\Automenu")=0 then dir_make "c:\Automenu" if dir_exists("c:\Automenu\menustock")=0 then dir_make "c:\Automenu\menustock" dir_change "c:\Automenu\menustock" nom$ = file_find_first$ cc = cc + 1 item_add 15,nom$ nom$ = file_find_next$ cc = cc + 1 item_add 15,nom$ while nom$<>"_" nom$ = file_find_next$ cc = cc + 1 item_add 15,nom$ end_while file_find_close item_delete 15,cc cc = 0 return save: if test=0 then message "< PAS DE MENU ACTUEL >" : return if dir_exists("c:\Automenu")=0 then dir_make "c:\Automenu" if dir_exists("c:\Automenu\menustock")=0 then dir_make "c:\Automenu\menustock" if on$<>"" then goto directsave left 322,100 : top 322,50 : width 322,150 : height 322,40 : show 322 left 323,280 : top 323,52 : width 323,100 : height 323,35 : show 323 caption 322,"Entrez le nom de votre menu : " set_focus 323 boucle: bo$=inkey$ if scancode = 13 then goto sortboucle goto boucle sortboucle: on$ = text$(323) on$ = "c:\Automenu\menustock\" + on$ + ".men" directsave: file_open_write 1,on$ file_writeln 1,"AutoMENU V1.00" file_writeln 1,"V1.00" file_writeln 1,NB for i=1 to NB file_writeln 1,nbsub(i) next i for i=1 to NB file_writeln 1,entmen$(i) next i for i=1 to NB for j=1 to nbsub(i) file_writeln 1,submen$(i,j) next j next i file_close 1 ajout$ = on$ : gosub titreform message "< FICHIER ENREGISTRE >" hide 322 : hide 323 return saveas: if test=0 then message "< PAS DE MENU ACTUEL >" : return if dir_exists("c:\Automenu")=0 then dir_make "c:\Automenu" if dir_exists("c:\Automenu\menustock")=0 then dir_make "c:\Automenu\menustock" left 322,100 : top 322,50 : width 322,150 : height 322,40 : show 322 left 323,280 : top 323,52 : width 323,100 : height 323,35 : show 323 caption 322,"Entrez le nom de votre menu : " set_focus 323 boucle: bo$=inkey$ if scancode = 13 then goto sortboucle goto boucle sortboucle: on$ = text$(323) on$ = "c:\Automenu\menustock\" + on$ + ".men" file_open_write 1,on$ file_writeln 1,"AutoMENU V1.00" file_writeln 1,"V1.00" file_writeln 1,NB for i=1 to NB file_writeln 1,nbsub(i) next i for i=1 to NB file_writeln 1,entmen$(i) next i for i=1 to NB for j=1 to nbsub(i) file_writeln 1,submen$(i,j) next j next i file_close 1 ajout$ = on$ : gosub titreform message "< FICHIER ENREGISTRE >" hide 322 : hide 323 return modif: if test=0 then message "< PAS DE MENU A VISUALISER >" : return for i=6 to 13 : inactive i : next i for i=1 to NB a$ = "Menu " + str$(i) : caption i+279,a$ left i+279,30 : top i+279,i*40 : show i+279 left i+19,80 : top i+19,i*40-3 : width i+19,100 : height i+19,25 : show i+19 text i+19,entmen$(i) next i for i=1 to 7 left i+337,320 : top i+337,i*40 : width i+337,150 : height i+337,25 : show i+337 next i on_click 338,insert on_click 339,ajout on_click 340,suprim on_click 341,change on_click 342,deplace on_click 343,modifmen on_click 344,efface return efface: rem effacement des objets systèmes for i=1 to NB hide i+279 : hide i+19 : hide i+325 : hide i+347 : hide i+299 next i for i=1 to 7 : hide i+337 : next i for i=6 to 13 : active i : next i hide 345 : hide 346 return visua: if test=0 then message "< PAS DE MENU A VISUALISER >" : return for i=1 to NB print_locate i*110-100,40 : print entmen$(i) for j=1 to men(i) print_locate i*110-100,j*25+35 : print submen$(i,j) next j next i message "AFFICHAGE DU MENU TERMINER" cls return code: etiket$="" if test=0 then message "< PAS DE MENU ACTUEL >" : return if dir_exists("c:\Automenu")=0 then dir_make "c:\Automenu" if dir_exists("c:\Automenu\codestock")=0 then dir_make "c:\Automenu\codestock" left 322,100 : top 322,50 : width 322,150 : height 322,40 : show 322 left 323,350 : top 323,52 : width 323,100 : height 323,35 : show 323 caption 322,"Entrez le nom de votre futur programme : " set_focus 323 boucle2: bo$=inkey$ if scancode = 13 then goto sortboucle2 goto boucle2 sortboucle2: on$="" on$ = text$(323) on$ = "c:\Automenu\codestock\" + on$ + ".bas" file_open_write 1,on$ file_writeln 1,"rem ***********************************" file_writeln 1,"rem ** **" file_writeln 1,"rem ** Menu codé avec AUTOMENU V1.00 **" file_writeln 1,"rem ** Par Concept.CAD **" file_writeln 1,"rem ** Sur le Copyright août 2009 **" file_writeln 1,"rem ** **" file_writeln 1,"rem ***********************************" file_writeln 1,"ERROR_FRENCH" file_writeln 1,"rem définition de variables" file_writeln 1,"dim a" file_writeln 1,"dim a$" file_writeln 1," " file_writeln 1,"rem définition de tableaux" file_writeln 1,"dim b(10)" file_writeln 1," " file_writeln 1,"rem déclaration d'étiquettes" rem création des labels des sous menus for i=1 to NB etiket$="" for j=1 to nbsub(i) etiket$=etiket$+submen$(i,j)+"," next j cc=len(etiket$) : cc=cc-1 : etiket$=left$(etiket$,cc) ligne$="label "+etiket$ file_writeln 1,ligne$ next i rem suite du codage file_writeln 1," " file_writeln 1,"rem initialisation des variables" ligne$="a=0 : a$="+chr$(34)+chr$(34) file_writeln 1,ligne$ file_writeln 1," " ligne$="caption 0,"+chr$(34)+"ECRIRE LE NOM DU PROGRAMME"+chr$(34) file_writeln 1,ligne$ file_writeln 1,"full_space 0" file_writeln 1,"color 0,20,200,150" file_writeln 1,"rem initialisation du menu" file_writeln 1,"main_menu 1" file_writeln 1," " file_writeln 1,"rem création du menu principal" inc=1 for i=1 to NB inc=inc+1 ligne$="sub_menu "+str$(inc)+" : caption "+str$(inc)+","+chr$(34)+entmen$(i)+chr$(34)+" : parent "+str$(inc)+",1" file_writeln 1,ligne$ next i inc3=inc file_writeln 1," " for i=1 to NB ligne$="rem création du sous menu "+entmen$(i) file_writeln 1,ligne$ inc2=i+1 for j=1 to nbsub(i) inc=inc+1 ligne$="sub_menu "+str$(inc)+" : caption "+str$(inc)+","+chr$(34)+submen$(i,j)+chr$(34)+" : parent "+str$(inc)+","+str$(inc2) file_writeln 1,ligne$ next j file_writeln 1," " next i file_writeln 1,"rem action sur les options de menu" for i=1 to NB for j=1 to nbsub(i) inc3=inc3+1 ligne$="on_click "+str$(inc3)+","+submen$(i,j) file_writeln 1,ligne$ next j next i file_writeln 1," " file_writeln 1,"end" file_writeln 1," " file_writeln 1,"rem *******************" file_writeln 1,"rem * SOUS PROGRAMMES *" file_writeln 1,"rem *******************" file_writeln 1," " for i=1 to NB for j=1 to nbsub(i) ligne$=submen$(i,j)+":" file_writeln 1,ligne$ file_writeln 1,"message "+chr$(34)+"EN CONSTRUCTION"+chr$(34) file_writeln 1,"return" file_writeln 1," " next j next i file_writeln 1," " file_close 1 message "ENCODAGE TERMINE EN CODE SOURCE .BAS" hide 322 : hide 323 return propos: message "AutoMENU - Release 1.00 - Copyright Aout 2009" return rem _____________________ rem SOUS PROGRAMMES 2 rem _____________________ menu1: inactive 300 men(1) = val(item_index$(300)) for i=1 to men(1) left i+39,30 : top i+39,i*30+110 : width i+39,80 : height i+39,25 : show i+39 next i return menu2: inactive 301 men(2) = val(item_index$(301)) for i=1 to men(2) left i+59,130 : top i+59,i*30+110 : width i+59,80 : height i+59,25 : show i+59 next i return menu3: inactive 302 men(3) = val(item_index$(302)) for i=1 to men(3) left i+79,230 : top i+79,i*30+110 : width i+79,80 : height i+79,25 : show i+79 next i return menu4: inactive 303 men(4) = val(item_index$(303)) for i=1 to men(4) left i+99,330 : top i+99,i*30+110 : width i+99,80 : height i+99,25 : show i+99 next i return menu5: inactive 304 men(5) = val(item_index$(304)) for i=1 to men(5) left i+119,430 : top i+119,i*30+110 : width i+119,80 : height i+119,25 : show i+119 next i return menu6: inactive 305 men(6) = val(item_index$(305)) for i=1 to men(6) left i+139,530 : top i+139,i*30+110 : width i+139,80 : height i+139,25 : show i+139 next i return menu7: inactive 306 men(7) = val(item_index$(306)) for i=1 to men(7) left i+159,630 : top i+159,i*30+110 : width i+159,80 : height i+159,25 : show i+159 next i return menu8: inactive 307 men(8) = val(item_index$(307)) for i=1 to men(8) left i+179,730 : top i+179,i*30+110 : width i+179,80 : height i+179,25 : show i+179 next i return menu9: inactive 308 men(9) = val(item_index$(308)) for i=1 to men(9) left i+199,830 : top i+199,i*30+110 : width i+199,80 : height i+199,25 : show i+199 next i return menu10: inactive 309 men(10) = val(item_index$(309)) for i=1 to men(10) left i+219,930 : top i+219,i*30+110 : width i+219,80 : height i+219,25 : show i+219 next i return menu11: inactive 310 men(11) = val(item_index$(310)) for i=1 to men(11) left i+239,1030 : top i+239,i*30+110 : width i+239,80 : height i+239,25 : show i+239 next i return menu12: inactive 311 men(12) = val(item_index$(311)) for i=1 to men(12) left i+259,1130 : top i+259,i*30+110 : width i+259,80 : height i+259,25 : show i+259 next i return contr1: for i=1 to NB if text$(i+19) = "" then message "toutes les entêtes de menus doivent être remplies" for j=1 to men(i) num = ((i-1)*20)+(j+39) if text$(num) = "" then message "Remplir tous les sous menus" : return next j next i for i=1 to NB entmen$(i) = text$(i+19) hide i+19 : hide i+279 : hide i+299 nbsub(i) = men(i) for j=1 to men(i) num = ((i-1)*20)+(j+39) submen$(i,j) = text$(num) hide num next j next i hide 18 : hide 324 : hide 320 for i=6 to 13 : active i : next i tesmn=1 return open2: if clicked(15)=0 then message "Sélectionner un fichier" : return hide 15 : hide 16 : hide 17 : hide 325 on$ = item_index$(15) : on$ = "c:\Automenu\menustock\" + on$ file_open_read 1,on$ file_readln 1,titre1$ file_readln 1,titre2$ file_readln 1,NB for i=1 to NB file_readln 1,nbsub(i) men(i)=nbsub(i) next i for i=1 to NB file_readln 1,entmen$(i) next i for i=1 to NB for j=1 to nbsub(i) file_readln 1,submen$(i,j) next j next i file_close 1 ajout$ = on$ : gosub titreform mess$ = "Le fichier " + on$ + " est ouvert et prêt pour toutes opérations" message mess$ active 11 : active 12 : active 13 test=1 for i=6 to 10 : active i : next i return cancel: for i=6 to 10 : active i : next i hide 15 : hide 16 : hide 17 : hide 325 return cancel2: for i=6 to 10 : active i : next i : active 18 : test=0 hide 18 : hide 19 : clear 18 for i=1 to NB : hide i+19 : hide i+279 : hide i+299 : next i hide 320 : hide 324 for i=1 to 18 hide i+39 : hide i+59 : hide i+79 : hide i+99 : hide i+119 : hide i+139 hide i+159 : hide i+179 : hide i+199 : hide i+219 : hide i+239 : hide i+259 next i return titreform: bandeau$ = "AutoMENU - Création automatique de menus - VERSION 1.00 " banaj$ = bandeau$ + ajout$ caption 0,banaj$ return insert: message "EN CONSTRUCTION" return ajout: if NB=12 then print_locate 100,400 : print "IMPOSSIBLE DE RAJOUTER UN MENU" : return NB=NB+1 a$="Nouveau menu "+str$(NB) left NB+19,600 : top NB+19,100 : width NB+19,120 : height NB+19,25 : show NB+19 left NB+279,600 : top NB+279,80 : caption NB+279,a$ : show NB+279 set_focus NB+19 boucle3: bo$=inkey$ if scancode = 13 then goto ajout2 goto boucle3 return ajout2: if text$(NB+19)="" then set_focus NB+19 : goto boucle3 entmen$(NB) = text$(NB+19) left NB+299,600 : top NB+299,130 : width NB+299,50 : height NB+299,25 : show NB+299 for j=1 to 18 item_add NB+299,str$(j) next j message "EN CONSTRUCTION" return suprim: for i=1 to NB left i+347,200 : top i+347,i*40 : show i+347 next i left 346,170 : top 346,i*40+20 : width 346,140 : height 346,30 : show 346 left 347,50 : top 347,i*40+20 : width 347,80 : height 347,30 : show 347 on_click 346,suprim2 on_click 347,echappe return echappe: for i=1 to NB : hide i+347 : next i hide 346 : hide 347 return suprim2: for i=1 to NB : hide i+347 : next i hide 346 : hide 347 for i=1 to NB a = checked(i+347) if a=1 then gosub suprim3 next i return suprim3: if i=NB then goto saut entmen$(i)="" for j=1 to nbsub(i) submen$(i,j)="" next j for k=i to NB-1 entmen$(k)=entmen$(k+1) for j=1 to nbsub(k) submen$(k,j)=submen$(k+1,j) next j next k i=NB saut: entmen$(i)="" for j=1 to nbsub(i) submen$(i,j)="" next j hide i+19 : hide i+279 : NB=NB-1 for i=1 to NB text i+19,entmen$(i) next i return change: for i=1 to NB left i+325,200 : top i+325,i*40 :show i+325 next i left 345,170 : top 345,i*40+20 : width 345,140 : height 345,30 : show 345 on_click 345,change2 return change2: for i=1 to NB a = checked(i+325) if a=1 then entmen$(i) = text$(i+19) next i for i=1 to NB : hide i+325 : next i hide 345 return deplace: message "EN CONSTRUCTION" return modifmen: message "EN CONSTRUCTION" return quit: terminate
le programme est un peu long mas il faut ce qu'il faut georges @+ | |
|