Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Programmation par Objet avec des Faux_Forms Ven 11 Déc 2009 - 18:18 | |
| Bonjour à tous, Je vous livre un code qui sert de base à la programmation par objets avec des Faux_Forms. Un conseil mettez le dans l'EDITOR PANORAMIC pour bien visualiser les REM Voici le code et ensuite un petit tuto que vous pouvez copier - Code:
-
' Faux Forms
' dim pour faux form (réservés) dim widthnf(9000),heightnf(9000) dim x,y:x=screen_x:y=screen_y dim nf,topnf,leftnf,no,topno,leftno,widthno,heightno dim n,r,v,b,epc,lbq,hbq dim capnf$,txtnf$,form$,fontname$,alpha$,capno$,combo$,edit$,button$,list$
' vos dim à vous dim a$,b$
' ------------------------------------------------------------------------------ ' label pour faux form et création d'objets (réservés) label form$,alpha$,combo$,edit$,button$,list$ label form_nf,quit
rem ' vos label à vous label init,debut1,debut2,suit1,suit2,label1,label2,label3,label4,clear1,clear2,fin1,fin2
' ============================================================================== ' FORM 0 vous pouvez changer le nom, la couleur, la police nf=0:r=200:v=250:b=255:fontname$="Courier New" full_space 0:color nf,r,v,b::caption nf,"NOM DU PROGRAMME" ' ============================================================================== ' LE MENU main_menu 9000 sub_menu 9001 :caption 9001," Accès " : parent 9001,9000: ' Accès sub_menu 9002 :caption 9002," Les Programmes " : parent 9002,9000:hide 9002
' OPTIONS DU MENU ACCES sub_menu 9101 : caption 9101," ENTRER " : parent 9101,9001:on_click 9101,init sub_menu 9102 : caption 9102," QUITTER " : parent 9102,9001:on_click 9102,quit
' OPTIONS DU MENU PROGRAMME sub_menu 9201 : caption 9201," FORM 100 " : parent 9201,9002:on_click 9201,debut1 sub_menu 9202 : caption 9202," FORM 200 " : parent 9202,9002:on_click 9202,debut2
' ===========================================================================100 ' CREATION DU FAUX FORM 100 nf=100:no=nf:widthnf(nf)=700:heightnf(nf)=700:capnf$=" FORM 100":fontname$="Fixedsys" r=100:v=240:b=255:epc=15:lbq=18:hbq=18:gosub form$:hide nf no=no+1:r=255:v=200:b=200:fontname$="Fixedsys":txtnf$=caption$(nf) heightno=hbq:widthno=widthnf(nf)-(lbq*4):leftno=widthnf(nf)-widthno-(lbq*3):topno=hbq gosub list$:item_add no,txtnf$:font_name no,fontname$ no=no+1:heightno=hbq:widthno=lbq:leftno=(widthnf(nf)-(lbq*2)):topno=hbq:capno$="X":gosub button$ no=no+1:topno=heightnf(nf)-40:leftno=15:widthno=75:heightno=25:fontname$="System":capno$="CLEAR":gosub button$ on_click nf+2,fin1:on_click nf+3,clear1
' Création de vos objets du faux form 100 no=no+1:topno=60:leftno=20:widthno=100:heightno=25:capno$="boutton A":gosub button$:hide no no=no+1:topno=100:leftno=20:widthno=100:heightno=25:capno$="boutton B":gosub button$:hide no
' ===========================================================================200 ' CREATION D'UN FAUX FORM 200 [j'ai copier de 41 à 48 et changer les valeur de widthnf(nf) et heightnf(nf)] nf=200:no=nf:widthnf(nf)=900:heightnf(nf)=500:capnf$=" FORM 200":fontname$="Fixedsys" r=100:v=240:b=255:epc=15:lbq=18:hbq=18:gosub form$:hide nf no=no+1:r=255:v=200:b=200:fontname$="Fixedsys":txtnf$=caption$(nf) heightno=hbq:widthno=widthnf(nf)-(lbq*4):leftno=widthnf(nf)-widthno-(lbq*3):topno=hbq gosub list$:item_add no,txtnf$:font_name no,fontname$ no=no+1:heightno=hbq:widthno=lbq:leftno=(widthnf(nf)-(lbq*2)):topno=hbq:capno$="X":gosub button$ no=no+1:topno=heightnf(nf)-40:leftno=15:widthno=75:heightno=25:fontname$="System":capno$="CLEAR":gosub button$ on_click nf+2,fin2:on_click nf+3,clear2
' Création de vos objets du faux form 200 no=no+1:topno=60:leftno=20:widthno=100:heightno=25:capno$="boutton 1":gosub button$:hide no no=no+1:topno=100:leftno=20:widthno=100:heightno=25:capno$="boutton 2":gosub button$:hide no
' ============================================================================== end ' ==========================================================================INIT init: ' gestion du menu show 9002 return ' ===========================================================================100 ' code correspondant a l'option debut du menu et au form 100 debut1: hide 0:rem ' ici vous pouvez aussi chosir inactive rem ' ne pas oublié de déclarer le N° du Faux Form (nf=Multiple de 100 . MAXI 8900) nf=100:show nf:gosub form_nf rem ' à partir d'ici votre code pour form 100 suit1: show nf+4:on_click nf+4,label1 show nf+5:on_click nf+5,label2 return
label1: a$=" AAAAAAAAAAAAAAAAAAAAAAAA " print_locate 20,200:print a$ return
label2: b$= " BBBBBBBBBBBBBBBBBBBBBBB " print_locate 20,220:print b$ return
rem ' les Labels qui sont indispensables clear1: a$="":b$="" for n=4 to 5:hide nf+n:next n goto debut1 return
fin1: gosub clear1 hide nf:show 0:rem ' ou active return ' fin du code correspondant a l'option debut du menu debut1 et au form 100 ' ===========================================================================200 ' code correspondant a l'option debut du menu debut2 et au form 200 debut2: hide 0:rem ' ici vous pouvez aussi chosir inactive nf=200:show nf:gosub form_nf:rem ' ne pas oublié de déclarer le N° fu Faux Form (Multiple de 100) ' à partir d'ici votre code pour form 200 suit2: show nf+4:on_click nf+4,label3 show nf+5:on_click nf+5,label4
return
label3: a$=" 111111111111111111 " print_locate 20,200:print a$ return
label4: b$= " 222222222222222222 " print_locate 20,220:print b$ return
rem ' ne pas oublier de changer clear1 par clear2 clear2: a$="":b$="" for n=4 to 5:hide nf+n:next n goto debut2 return
rem ' ne pas oublier de changer fin1 par fin2 fin2: gosub clear2 hide nf:show 0:rem ' ou active return rem ' vous pouvez faire une sortie du form sans faire le clear (à faire)
' fin du code correspondant a l'option debut du menu debut2 et au form 200
' ===========================================================================300 'ICI votre nouvean code correspondant a l'option ???? du menu et au form 300 ' avec copier/coller créer le form 300 et les label debut3,suit3,clear3,fin3 ' fin du code
' ============================================================================== ' création des objets (vous pouvez en faire d'autres sur le même principe) button$: button no:top no,topno:left no,leftno:width no,widthno:height no,heightno font_color no,r,v,b:font_name no,fontname$:caption no,capno$ return
list$: list no:top no,topno:left no,leftno:width no,widthno:height no,heightno color no,r,v,b return
edit$: edit no:top no,topno:left no,leftno:width no,widthno:height no,heightno color no,r,v,b return
combo$: combo no:top no,topno:left no,leftno:width no,widthno:height no,heightno color no,r,v,b return
alpha$: alpha no:top no,topno:left no,leftno:width no,widthno:height no,heightno font_color no,r,v,b:font_name no,fontname$:caption no,capno$ return ' ============================================================================== ' Ne rien changer sous cette ligne (sauf font, color, pen_width.. si vous le souhaitez) ' ============================================================================== ' création automatique du faux form form$: topnf=(y-heightnf(nf))/2:leftnf=(x-widthnf(nf))/2:rem ' centrage automatique du faux form form nf:top nf,topnf:left nf,leftnf:width nf,widthnf(nf):height nf,heightnf(nf) color nf,r,v,b:font_name no,fontname$:caption nf,capnf$ command_target_is nf:print_target_is nf return
form_nf: command_target_is nf:print_target_is nf border_hide nf:2d_target_is nf 2d_pen_color 0,0,255:2d_pen_width epc: ' couleur et epaisseur du cadre du form 2d_rectangle 1,1,widthnf(nf),heightnf(nf) heightno=hbq:widthno=widthnf(nf)-(lbq*4):leftno=widthnf(nf)-widthno-(lbq*3):topno=hbq 2d_pen_color 0,50,255:2d_pen_width 4:' couleur et epaisseur du cadre du titre du form 2d_rectangle leftno-2,topno-2,leftno+widthno+3,topno+heightno+4 heightno=hbq:widthno=widthnf(nf)-(lbq*4):leftno=widthnf(nf)-widthno-(lbq*3):topno=hbq 2d_pen_color 255,0,0:2d_pen_width 3:' couleur et epaisseur du cadre du bouton de fermeture du form 2d_rectangle leftno+widthno+(lbq*2)+2,topno-2,leftno+widthno+lbq-2,topno+heightno+2 command_target_is nf:print_target_is nf return
quit: terminate
Le tuto - Code:
-
Faux Form sous PANORAMIC (Jean-Claude)
Pourquoi un faux Form: - pour pouvoir coder avec beaucoup de copier coller - gérer la sortie du faux form - avoir un form pour chaque option de Main_Menu
conditions: - vous devez numéroter les Sub_Menu comme dans le programme - les numéro d'objet de form 0 vont de 1 à 99 - les Faux Form doivent être numéroter de 100 en 100 (200,300,400,..) - vous avez droit à 89 faux form - il reste disponible 96 objets par form - ne pas utiliser les variables réservés
liste des variables du Faux Form, de ses objets et utilisation
taille de l'écran x et y ---------------------------- variables [nf]:
nf = N° du faux form widthnf(nf) = largeur du faux form heightnf(nf)= hauteur du faux form topnf = top du faux form leftnf = left du faux form capnf$ = Caption d faux_form lbq = largeur du boutton de fermeture hbq = hauteur du boutton de fermeture et du titre ------------------------------------ les variables [no]: no = N° de l'ojet du faux form topnp = top de l'ojet du faux form leftno = left de l'ojet du faux form widthno = width de l'ojet du faux form height = height de l'ojet du faux form capno$ = caption de l'ojet (si nécéssaire) ------------------------------ variables communes objets et faux_form r = rouge v = vert b = bleu fontname$ = font_name du faux_form ou de l'objet ---------------------------
pour créer un faux_form copier/coller le précédent et gérer les variables [nf]
pour créer un ojet copier/coller une ligne correspondant au type d'objet souhaité et gérer les variables [no]
Vous disposez d'un nombre important de rem pour les explication dans le code-source
Bonne programmation
A+ | |
|
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Programmation par Objet avec des Faux_Forms Sam 12 Déc 2009 - 9:45 | |
| à JJN4 et Nicolas, et tous
Mon souci part d'une chose simple. Avec FORM tu ne controle pas le boutton de fermeture (en haut à droite) donc l'utilisateur peut sortir du programme par ce biais. Et c'est là, que, dans ce que je construis actuellement, le bas blesse car le programme n'a pas gérer la sortie et du coup certains fichiers n'ont pas été tenus à jour. Et quand l'utilisateur retourne dans le programme çà ne marche plus. Tu vas me dire BORDER_HIDE et un bouton de sortie, c'est vrai, c'est une solution plus simple. Mais le FORM n'est pas beau. L'aute avantage que j'y trouve c'est que quand tu code des morceau qui se ressemble, tu peux utiliser le copier/coller.
S'il y avait une possibilité de controler si l'utilisateur sort par la croix rouge en haut à droite, çà arrangerait tout. A ce jour, je n'en connais pas. Si quelqu'un a une combine, je suis preneur.
A+ | |
|
jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: Ah Sam 12 Déc 2009 - 12:15 | |
| Ah, cette fois, j'ai compris. Effectivement, c'est un problème que j'avais remarqué. Si on donne un programme à un utilisateur novice (vous savez, le genre qui cherche pendant une heure où se trouve la touche A sur le clavier) il peut sortir du form par la croix rouge (l'abruti !) au lieu d'utiliser le bouton réservé à cet usage si bien que, avec le form 0 qu'on avait caché (hide) le programme part en sucette ou alors ça n'enregistre pas le travail effectué et après, on est taxé de programmateur d'opérette ! (un comble !) Alors, c'est vrai que c'est un problème que tes faux form peuvent régler. Ceci dit, si les border_hide ne sont pas jolis, tes faux form ne sont pas très jojos non plus. Mais je ne vois pas d'autre solution. Peut-être que Jack, quand il en sera à réformer les form pourra en profiter pour créer des border sans bouton exit ou alors où on puisse contrôler les 3 boutons en haut à droite. (Mais rien ne presse, bien sûr) chi va piano va sano... | |
|