Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: FORM modifiable Ven 30 Mar 2012 - 17:20 | |
| Une autre version avec sauvegarde des paramètres de chaque fenêtre. - Code:
-
' Form auto ajustable avec l'écran (sur tout les cotés d'une valeur équivalente) ' Barre d'outil pour changer dimensions et couleurs ' Utilisation et création de structure dim, label, GUI, avec commentaire inspirés par Klaus ' Jean Claude 2012
' ATTENTION: Plusieurs Form possibles pour l'utilisation de la barre d'outils ' à condition de numéroté le deuxieme à partir de 100 et ainsi de suite ' vous pouvez créer des forms sans passer par cre_form_avec_barouti.. ' Alors il faudra le traiter normalement
' objets de règlage form1 de 1 à 31 ' dlist 90 pour le traitement du fichier paramètres
' cette version sauve les paramètres de chaque form
' ========================= INITIALISATION DU PROGRAMME ======================== label labels,dims:gosub labels:gosub dims:hide 0 dlist 90:' contient fi$ fi$="ff_param_form_01.ffp":gosub charge_param ' =================================== GUI ====================================== nf=1:' Création Form 1 captionNF$="":gosub cre_form:on_close nf,termine:' hide nf:' FORM 1 ' tout les nouveaux objets créer ne change pas de position ni de dimension,... ' donc commencer à créer vos objets sur un form de taille adapté ' Ensuite vous pouvez désactiver les boutons 3 et 4, si vous souhaitez... ' empêcher l'utilisateur de redimensionner le form
' ATTENTION: command_target_is nf ' caption nf,nbno:' N° du dernier objet créé
container 32:top 32,10:width 32,500:left 32,10:' pour l'exemple
' ******************************************************************************
nf=100:' Création Form 100 a=nf:ls=3:sd$="0":gosub string_num:fi$="ff_param_form_"+a$+".ffp":gosub charge_param: ' fabrication du fichier de paramètre personnalisé au form 100 captionNF$="":gosub cre_form:on_close 100,close100
display END ' =============================== PROGRAMME ==================================== ' attention de changer command target close100: hide 100:nf=1:command_target_is nf:show nf:' set_focus nf return ' ================================================================> DIM et LABEL labels:
' Labels pour Form nf, le dimensionner, le colorer, gérer sa barre d'outil label charge_param,aplic_theme,zom_form+,zom_form-,vfz,cre_form,pos_obj_bar,termine,def_az label assomb,eclair,save_color_nf,rouge+,rouge-,vert+,vert-,bleu+,bleu-,init_color:' labels coloration du thème label string_num,clic_bouton:' pour les routines label close100:' réservé à Form 100 return ' ***** dims:
dim a,b,c,ls,m,n,x,y:' dim numériques généralistes dim a$,b$,c$,fi$,sd$:' dim alphanumériques généralistes dim nf,no,nbno,nbno$,rtf,rgo,rdo,rso,rio,az,fz,fzno,aseo,seo,hz,ebi,vfz,vls,captionNF$:' dim réservées objets et form nf dim aaz,artf:' Dim reservées pour sauvegarde des paramètres du Programme dim sl1$,sl2$,bouton:' Dim pour les routines dim cr,cv,cb ' initialise certaines variables sl1$=chr$(13)+chr$(10):sl2$=sl1$+sl1$ cr=220:cv=220:cb=230 return ' ================= NE RIEN CHANGER SOUS CETTE LIGNE =========================== ' ====================================> Création de FORM (nf) et barre d'outils cre_form: form nf:command_target_is nf:border_small nf color nf,cr,cv,cb:gosub aplic_theme:show nf fzno=10:ebi=-8:' fzno=font_size(no) : ebi=espace/bord inférieur form no=0:no=nf+1:alpha no:' libre (2) no=no+1:' Zoom+ (3) alpha no:on_click no,zom_form+ fz=fzno:gosub vfz:font_size no,fz:fz=fzno+2:height no,fzno font_name no,"Webdings":caption no,chr$(49):hint no," Agrandir la fenêtre " width no,(fzno*len(caption$(no)))+2 no=no+1:' Zoom- (4) alpha no:on_click no,zom_form- fz=fzno:gosub vfz:font_size no,fz:fz=fzno+2:height no,fzno font_name no,"Webdings":caption no,chr$(50):hint no," Rétrécir la fenêtre " width no,(fzno*len(caption$(no)))+2 no=no+1:alpha no:' Alpha texte (5) fzno=8:gosub vfz:fz=fzno:font_size no,fz:fz=fzno+2:height no,fzno font_bold no:font_name no,"Arial":caption no,"ZOOM "+chr$(177) width no,fzno*len(caption$(no))-seo no=no+1:' Amplitude Zoom (6) fzno=14:alpha no:on_click no,def_az fz=fzno:gosub vfz:font_size no,fz:fz=fzno+2:height no,fzno font_name no,"Marlett":caption no,chr$(118):hint no," Reglage du Zoom " width no,(fzno*len(caption$(no)))+2 no=no+1:alpha no:' Alpha | (7) fzno=14:gosub vfz:fz=fzno:font_size no,fz:fz=fzno+2:height no,fzno font_bold no:font_name no,"Arial":caption no,"|" width no,(fzno*len(caption$(no)))-seo fzno=12:no=no+1:' Lumière moins (8) alpha no:on_click no,assomb fz=fzno:gosub vfz:font_size no,fz:fz=fzno+2:height no,fzno font_name no,"Marlett":caption no,chr$(100):hint no," Assombrir " width no,(fzno*len(caption$(no)))+4:color no,150,150,150 fzno=12:no=no+1:' Lumière Plus (9) alpha no:on_click no,eclair fz=fzno:gosub vfz:font_size no,fz:fz=fzno+2:height no,fzno font_name no,"Marlett":caption no,chr$(100):hint no," Eclaircir " width no,(fzno*len(caption$(no)))+4:color no,255,255,255 no=no+1:alpha no:' Alpha | (10) fzno=14:gosub vfz:fz=fzno:font_size no,fz:fz=fzno+2:height no,fzno font_bold no:font_name no,"Arial":caption no,"|" width no,(fzno*len(caption$(no)))-seo fzno=12:no=no+1:' Rouge+ (11) alpha no:on_click no,rouge+ fz=fzno:gosub vfz:font_size no,fz:fz=fzno+2:height no,fzno font_name no,"Marlett":caption no,chr$(100):hint no," Rouge + " width no,(fzno*len(caption$(no)))+4:color no,255,0,0 fzno=12:no=no+1:' Rouge- (12) alpha no:on_click no,rouge- fz=fzno:gosub vfz:font_size no,fz:fz=fzno+2:height no,fzno font_name no,"Marlett":caption no,chr$(100):hint no," Rouge - " width no,(fzno*len(caption$(no)))+4:color no,255,200,200 no=no+1:alpha no:' Alpha | (13) fzno=14:gosub vfz:fz=fzno:font_size no,fz:fz=fzno+2:height no,fzno font_bold no:font_name no,"Arial":caption no,"|" width no,(fzno*len(caption$(no)))-seo fzno=12:no=no+1:' Vert+ (14) alpha no:on_click no,vert+ fz=fzno:gosub vfz:font_size no,fz:fz=fzno+2:height no,fzno font_name no,"Marlett":caption no,chr$(100):hint no," Vert + " width no,(fzno*len(caption$(no)))+4:color no,0,255,0 fzno=12:no=no+1:' Vert- (15) alpha no:on_click no,vert- fz=fzno:gosub vfz:font_size no,fz:fz=fzno+2:height no,fzno font_name no,"Marlett":caption no,chr$(100):hint no," Vert - " width no,(fzno*len(caption$(no)))+4:color no,200,255,200 no=no+1:alpha no:' Alpha | (16) fzno=14:gosub vfz:fz=fzno:font_size no,fz:fz=fzno+2:height no,fzno font_bold no:font_name no,"Arial":caption no,"|" width no,(fzno*len(caption$(no)))-seo fzno=12:no=no+1:' Bleu+ (17) alpha no:on_click no,bleu+ fz=fzno:gosub vfz:font_size no,fz:fz=fzno+2:height no,fzno font_name no,"Marlett":caption no,chr$(100):hint no," Bleu + " width no,(fzno*len(caption$(no)))+4:color no,0,0,255 fzno=12:no=no+1:' Bleu- (18) alpha no:on_click no,bleu- fz=fzno:gosub vfz:font_size no,fz:fz=fzno+2:height no,fzno font_name no,"Marlett":caption no,chr$(100):hint no," Bleu - " width no,(fzno*len(caption$(no)))+4:color no,150,200,255 no=no+1:alpha no:' Alpha | (19) fzno=14:gosub vfz:fz=fzno:font_size no,fz:fz=fzno+2:height no,fzno font_bold no:font_name no,"Arial":caption no,"|" width no,(fzno*len(caption$(no)))-seo fzno=12:no=no+1:' Réinit color (20) alpha no:on_click no,init_color fz=fzno:gosub vfz:font_size no,fz:fz=fzno+2:height no,fzno font_name no,"Webdings":caption no,chr$(163):hint no," Réinitialiser les couleurs par défaut " width no,(fzno*len(caption$(no)))+4:color no,210,210,220 no=no+1:alpha no:' Alpha | (21) fzno=14:gosub vfz:fz=fzno:font_size no,fz:fz=fzno+2:height no,fzno font_bold no:font_name no,"Arial":caption no,"|" width no,(fzno*len(caption$(no)))-seo no=no+1:container no:' (22) ajouter couleur(0,0,0) avec prochaine version
' seo=aseo:Espace entre objets géré si actif .....' séparation entre objets seo=5: ' soit cette ligne, soit celle du dessus nbno$=str$(nf)+str$(no) show nf:nbno=val(nbno$) gosub pos_obj_bar return ' =================================> Positionne objets barre d'outils inférieure pos_obj_bar: no=0:hide nf:no=nf+1 no=no+1:' zoom+ top no,height(nf)-(fz+ebi+vfz):left no,width(nf)-(width(no)*2)-seo:' premier objet no=no+1:' zoom- top no,height(nf)-(fz+ebi+vfz):left no,left(no-1)-(width(no)+seo) no=no+1:' alpha texte top no,height(nf)-(fz+ebi+vfz)+3:left no,left(no-1)-(width(no)+seo) no=no+1:' Amplitude Zoom top no,height(nf)-(fz+ebi+vfz+2):left no,left(no-1)-(width(no)+seo) no=no+1:' alpha | top no,height(nf)-(fz+ebi+vfz+5):left no,left(no-1)-(width(no)+seo) no=no+1:' Lumière moins top no,height(nf)-(fz+ebi+vfz-1):left no,left(no-1)-(width(no)+seo+6) no=no+1:' Lumière plus top no,height(nf)-(fz+ebi+vfz-1):left no,left(no-1)-(width(no)+seo+6) no=no+1:' alpha | top no,height(nf)-(fz+ebi+vfz+5):left no,left(no-1)-(width(no)+seo) no=no+1:' Rouge+ top no,height(nf)-(fz+ebi+vfz-1):left no,left(no-1)-(width(no)+seo+6) no=no+1:' Rouge- top no,height(nf)-(fz+ebi+vfz-1):left no,left(no-1)-(width(no)+seo+6) no=no+1:' alpha | top no,height(nf)-(fz+ebi+vfz+5):left no,left(no-1)-(width(no)+seo) no=no+1:' Vert+ top no,height(nf)-(fz+ebi+vfz-1):left no,left(no-1)-(width(no)+seo+6) no=no+1:' Vert- top no,height(nf)-(fz+ebi+vfz-1):left no,left(no-1)-(width(no)+seo+6) no=no+1:' alpha | top no,height(nf)-(fz+ebi+vfz+5):left no,left(no-1)-(width(no)+seo) no=no+1:' Bleu + top no,height(nf)-(fz+ebi+vfz-1):left no,left(no-1)-(width(no)+seo+6) no=no+1:' Bleu - top no,height(nf)-(fz+ebi+vfz-1):left no,left(no-1)-(width(no)+seo+6) no=no+1:' alpha | top no,height(nf)-(fz+ebi+vfz+5):left no,left(no-1)-(width(no)+seo) no=no+1:' init_color top no,height(nf)-(fz+ebi+vfz+2):left no,left(no-1)-(width(no)+seo+6) no=no+1:' alpha | top no,height(nf)-(fz+ebi+vfz+5):left no,left(no-1)-(width(no)+seo) no=no+1:' container servant de barre height no,8:width no,width(nf)-16:left no,4:top no,height(nf)-65 if height(nf)<240 then inactive 13 if height(nf)+az>screen_y then inactive 12 nbno$=str$(nf)+str$(no) show nf:nbno=val(nbno$) return ' *** vfz: ' Varation de fz suivant taille police if fzno=8 then vfz=fzno*4.50 if fzno=9 then vfz=fzno*4.25 if fzno=10 then vfz=fzno*4 if fzno=11 then vfz=fzno*3.75 if fzno=12 then vfz=fzno*3.50 if fzno=13 then vfz=fzno*3.25 if fzno=14 then vfz=fzno*3 return ' ========================================> Sous-progs barre d'outils inférieure init_color: gosub clic_bouton cr=210:cv=215:cb=225 color nf,cr,cv,cb:display:gosub save_color_nf rouge+: gosub clic_bouton:cr=cr+5 if cr>255 then cr=255 color nf,cr,cv,cb:display:gosub save_color_nf return rouge-: gosub clic_bouton:cr=cr-5 if cr<0 then cr=0 color nf,cr,cv,cb:display:gosub save_color_nf return vert+: gosub clic_bouton:cv=cv+5 if cv>255 then cv=255 color nf,cr,cv,cb:display:gosub save_color_nf return vert-: gosub clic_bouton:cv=cv-5 if cv<0 then cv=0 color nf,cr,cv,cb:display:gosub save_color_nf return bleu+: gosub clic_bouton:cb=cb+5 if cb>255 then cb=255 color nf,cr,cv,cb:display:gosub save_color_nf return bleu-: gosub clic_bouton:cb=cb-5 if cb<0 then cb=0 color nf,cr,cv,cb:display:gosub save_color_nf return eclair: gosub clic_bouton cr=cr+5:cv=cv+5:cb=cb+5 if cr>255 then cr=255 if cv>255 then cv=255 if cb>255 then cb=255 color nf,cr,cv,cb:display:gosub save_color_nf return assomb: gosub clic_bouton cr=cr-5:cv=cv-5:cb=cb-5 if cr<0 then cr=0 if cv<0 then cv=0 if cb<0 then cb=0 color nf,cr,cv,cb:display:gosub save_color_nf return save_color_nf: clear 90:file_load 90, "ff_param_form_01.ffp" item_delete 90,3:item_insert 90,3,cr:item_delete 90,4:item_insert 90,4,cv:item_delete 90,5:item_insert 90,5,cb file_save 90,fi$:clear 90 return def_az: gosub clic_bouton:a=az:ls=3:sd$="0":gosub string_num clear 90:file_load 90,fi$:a$=item_read$(90,2) m=message_input(" Réglage vitesse du ZOOM "," Indiquez le nombre de pixels (EX: 50 pixels par clic)"+sl2$+" Minimum:1 Maximum:50",a$) a$=message_text$:if numeric(a$)=0 then message "Valeur numérique uniquement":goto def_az if val(a$)<1 then message "Valeur minimum autorisée: 1":goto def_az if val(a$)>50 then message "Valeur maximum autorisée: 50":goto def_az if m=0 then return az=val(a$) ' seo=seo-int(az/10):aseo=seo:Espace entre objets géré si actif ..... item_delete 90,2:item_insert 90,2,a$ ' item_delete 90,6:item_insert 90,9,aseo:Espace entre objets géré si actif ..... file_save 90,fi$:clear 90 return zom_form-: gosub clic_bouton:hide nf if nf=1 then active 3 if nf=100 then active 103 rgo=rgo+az:rdo=rdo+az:rso=rso+az:rio=rio+az width nf,screen_x-(rgo+rdo):left nf,rgo:height nf,screen_y-(rso+rio):top nf,rso aaz=az:artf=rgo*2 ' seo=seo-int(az/10):aseo=seo:Espace entre objets géré si actif ..... clear 90:file_load 90,fi$ item_delete 90,1:item_insert 90,1,artf:item_delete 90,2:item_insert 90,2,aaz ' item_delete 90,6:item_insert 90,6,aseo:Espace entre objets géré si actif ..... file_save 90,fi$:clear 90 if nf=1 if height(nf)<240 then inactive 4 end_if if nf=1 if height(nf)<240 then inactive 104 end_if show nf:gosub pos_obj_bar:return zom_form+: gosub clic_bouton if nf=1 then active 4 if nf=100 then active 104 rgo=rgo-az:rdo=rdo-az:rso=rso-az:rio=rio-az width nf,screen_x-(rgo+rdo):left nf,rgo:height nf,screen_y-(rso+rio):top nf,rso aaz=az:artf=rgo*2 ' seo=seo+int(az/10):aseo=seo: Espace entre objets géré si actif ..... clear 90:file_load 90, fi$ item_delete 90,1:item_insert 90,1,artf:item_delete 90,2:item_insert 90,2,aaz ' item_delete 90,6:item_insert 90,6,aseo:Espace entre objets géré si actif ..... file_save 90,fi$:clear 90 hide nf:show nf if nf=1 if height(nf)+az>screen_y then inactive 3 end_if if nf=100 if height(nf)+az>screen_y then inactive 103 end_if gosub pos_obj_bar return aplic_theme: rgo=int(rtf/2):rdo=int(rtf/2):rso=int(rtf/2):rio=int(rtf/2) width nf,screen_x-(rgo+rdo):left nf,rgo:height nf,screen_y-(rso+rio):top nf,rso if captionNF$="" then captionNF$="FORM: "+str$(nf):caption nf,captionNF$ if captionNF$<>"" then caption nf,captionNF$ return ' ====================================================================> ROUTINES ' Routine de transformation d'un réel en String (avec choix des cractères devant ex:0) string_num: b=0:c=0:a$=str$(a) if a<0 then message "Impossible d'utiliser la routine 'string_num' avec un chiffre négatif ":goto termine if a<10 then a$=string$(ls-1,sd$)+str$(a):return for n=2 to ls-1 if b=0 b=9 else b=b*11 end_if if c=0 c=100 else c=c*10 end_if if a>b and a<c then a$=string$(ls-n,sd$)+str$(a):exit_for next n return ' Routine d'animation d'un bouton clic_bouton: bouton=number_click if active(bouton)=0 or show(bouton)=0 or clicked(bouton)=0 then return x=top(bouton):y=left(bouton) top bouton,x+1:left bouton,y+1 wait 100 top bouton,x:left bouton,y return ' chargement des paramètres charge_param: if file_exists(fi$)=0 file_open_write 1,fi$ file_writeln 1,"400":file_writeln 1,"50":file_writeln 1,"210":file_writeln 1,"215":file_writeln 1,"225" ' file_writeln 1,"25":Espace entre objets géré si actif ..... file_close 1 end_if clear 90:file_load 90,fi$:' chargement des paramètres du thème a$=item_read$(90,1):rtf=val(a$):a$=item_read$(90,2):az=val(a$):' retraits (G,D,H,B) des forms et amplitude du zoom a$=item_read$(90,3):cr=val(a$):a$=item_read$(90,4):cv=val(a$):a$=item_read$(90,5):cb=val(a$):' Couleurs (R,V,B) du thème ' a$=item_read$(90,6):aseo=val(a$):Espace entre objets géré si actif ..... clear 90 return ' ***** termine: terminate
| |
|