Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Boite de Dialogue Fourre-tout | |
| | Auteur | Message |
---|
Invité Invité
| Sujet: Boite de Dialogue Fourre-tout Sam 9 Jan 2010 - 13:12 | |
| Je ne sais pas si fourre tout s'écris comme ça. Je viens de terminer ma boite que je cherchais à faire. C'est pas une boite pour un programme de présentation, ou pour un logiciel de bureau, mais pour entrer des données variées et divers, mettre des messages, faire des choix, avec une seul ligne de commande, pour ne pas perdre de temps dans la programmation. Tout n'est pas parfait, il y a encore un ou deux petit détail à revoir mais sans importance. Elle ne vous plaira surement pas, elle a l'avantage d'être intégrée dans un programme classique, sans se faire de la bile pour les événements. J'y ai mis un petit programme pour aider à comprendre la façon de s'en servir. - Code:
-
' essai de refaire BOITE D'ALERTE GFA BASIC error_french ' ============================================================================== dim foo ,alt% ,alert_but$(50),boite$(50,25),boite(50,25) dim a%,b%,c% , i%,a$,b$,c$ ,x% ,m$ ,mem% dim hAlert%,alert_s$,vh%,zun%,drAlert%,topAlert% ,AltSort% ,t$,t1$ ,t2$,t3$,t4$,t5$,t6$,t7$,t8$,t9$ dim clik% ,fin% ,clik_mem% ,lig$ ,ti$ ,ct$,pi%,lAlert% ,apel%,hMemAlert%,ct%,dr$ ' ============================================================================== label alerte ,repere , valide ,prendre ,AltBouton, fin , code ,attente ,alertClavier,guide,rac ' ========================================== left 0,0:height 0,800:width 0,800 alt%=58 :a%=1:foo=10 on_click 0,code ' finalement c'est form 0 qui commande le départ, ensuite c'est le programme ' button alt%+a%:top alt%+a%,200:caption alt%+a%,"essai":width alt%+a%,90: on_click alt%+a%,code ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a%=2:memo alt%+a%:top alt%+a%,100:left alt%+a%,0:WIDTH alt%+a%,750:height alt%+a%,500:font_size alt%+a%,14 color alt%+a%,208,255,155:font_bold alt%+a% print_target_is alt%+2 ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ' forme d'attente a%=foo-1 form a% :hide a%:top a%,300:left a%,800:width a%,100:height a%,90:color a%,132,190,33:border_small a% on_click a%, code ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a%=foo-2:button a% parent a%,a%+1:top a%,25:left a%,10:width a%,80:caption a%,"continue" ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a%=foo-3:alpha a%:parent a%,a%+2:top a%,0:left a%,10:font_size a%,12:font_bold a%:caption a%,"attente" ' -------------------------------------------------- ' form pour comprendre le branchement avec un bouton
form foo :left foo,900::top foo,100:hide foo :width foo,100:height foo,170::color foo,236,198,89:border_small foo ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dlist foo+2:' top foo+2,50:width foo+2,100:left foo+2,160:height foo+2,300:' sert de liste pour chaque cde ' titre de l'appel ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - alpha foo+3:parent foo+3,foo:font_color foo+3,0,0,220:font_bold foo+3:font_size foo+3,15 font_name foo+3,"aSwIt Mono 864":left foo+3,40:top foo+3,0:on_click foo+3,repere ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - alpha foo+4:parent foo+4,foo:font_size foo+4,7:hide foo+4:' pour y mettre le N° de la boite d'alerte pour se retrouver ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - memo foo+6:parent foo+6,foo:hide foo+6 :color foo+6,181,247,156 :' message vert ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - edit foo+7 :parent foo+7,foo:top foo+7,0:left foo+7,10:width foo+7,350 height foo+7,30 : color foo+7,255,255,165:font_size foo+7,14:font_bold foo+7:hide foo+7 ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - button foo+8:parent foo+8,foo:left foo+8,370:width foo+8,100:height foo+8,30:caption foo+8,"sortir" hide foo+8 :' on_click foo+8,valide de toute façon il fonctionne pas ici ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dlist foo+9 :' ligne \/: séparateur ' left foo+9,280: top foo+9,0:width foo+9,150:height foo+9,250 ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - alpha foo+11:parent foo+11,foo:left foo+11,370:font_size foo+11,14:font_name foo+11,"Verdana":font_bold foo+11 ' -------------------------------------------- pi%=foo+11 :' soit foo=10 pi%=21 for a%=1 to 36 : b%=a%+pi% picture b%:hide b%:parent b%,foo:on_click b%,prendre:width b%,150:height b%,35 next a% caption 0,"CLIQUEZ SUR LA FORME 0 POUR DEMARRER" ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - message "cliquez sur la forme pour démarrer" ' ============================================================================== ' =====END====END=====END=====END=====END=====END=====END=====END=====END======= END ' FIN DES OBJETS FIN DES OBJETS FIN DES OBJETS ' ============================================================================== alerte: clear foo+2:topAlert%=200:drAlert%=400:apel%=0:fin%=0 :alert_s$="":caption foo+11,"" zun%=val(left$(lig$,1)):ti$="" :' zun%: pour z=zero et un - 0 et 1 if upper$(mid$(lig$,2,1))="V" vh%=-1 else vh%=0 end_if clik%=mid$(lig$,3,2) lig$=right$(lig$,len(lig$)-5) ' -- si positionnement |#300,100| i%=instr(lig$,"#") if i%>0 lig$=right$(lig$,len(lig$)-i%) i%=instr(lig$,",") drAlert%=val(left$(lig$,i%-1)):lig$=right$(lig$, len(lig$)-i%) i%=instr(lig$,"|"):topAlert%=val(left$(lig$,i%-1)) end_if ' -- en fin de ligne : |\....| les points représentent les caractères de séparation entre chaque mot ou nombre à définir if instr(lig$,"|")<len(lig$) then lig$=right$(lig$,len(lig$)-instr(lig$,"|")) :' expl: |\ +-| avec le texte d'un edit qui serait: i%=instr(lig$,"|\") :' "12 23+14-2" donne une liste: 12,23,14,2 if i%>0 alert_s$=right$(lig$,len(lig$)-i%-1):ti$=left$(lig$,i%-1) else alert_s$="":ti$=left$(lig$,len(lig$)-1) end_if ' si dans le titre: "~" est inséré, le reste est sur la ligne suivante i%=instr(ti$,"~"):if i%>0 then ti$=left$(ti$,i%-1)+chr$(10)+chr$(13)+right$(ti$,len(ti$)-i%) ' -- au début de la ligne &12| inclure le numéro de l'appel pour le retrouver parmis tout ceux du programme (important si comme moi, il y en avait plus de 300) if left$(ct$,1)="&" i%= instr(ct$,"|") apel%=val(mid$(ct$,2,i%-2)) ct$=right$(ct$,len(ct$)-i%) end_if rem "&1|fin|" si le reste est ' "FIN|" pas de "picture bouton", mais un bouton de sortie if upper$(ct$)="FIN|"then fin%=1 if left$(ct$,1)="|" then ct$=right$(ct$,len(ct$)-1) repeat i%=instr(ct$,"|") if i%>0 a$= left$(ct$,i%-1) item_add foo+2,a$ : ct$=right$(ct$,len(ct$)-i%) else if ct$<>"" then item_add foo+2,ct$ end_if until i%=0
' représentation des boutons dans FORM foo dont les paramètres viennet d'être définis for a%=1 to 36:for b%=1 to 25:boite$(a%,b%) ="":alert_but$(a%)="":next b%:next a% 2d_target_is 1+pi%:print_target_is 1+pi%:height foo,770 :ct%=0 clear foo+6 clear foo+9 caption foo+3,ti$ :caption foo+4,apel% : hAlert%=50 :lAlert%=10 :hMemAlert%=0
if drAlert%>=0 then left foo,drAlert% :' #xxx,yyy| if topAlert%>=0 then top foo,topAlert% ' texte du MEMO foo+6 sauvegardé à chaque changement if file_exists("controle\appel"+str$(apel%)+".fic")=1 then file_load foo+6,"controle\appel"+str$(apel%)+".fic"
if count(foo+2)>0 show foo for a%=1 to 36: hide a%+pi% : next a% for a%=1 to count(foo+2) : b%=a%+pi% show b% :' b% est un picture qui sert de bouton dont les boutons sont dessinés
width b%,150:height b%,35 : 2d_target_is b% : 2d_pen_color 90,90,24
if clik%<>a% 2d_fill_color 231,231,156 else 2d_fill_color 165,239,156 end_if 2d_rectangle 1,1,149,34 : 2d_pen_color 173,178,24 : 2d_rectangle 3,3,147,32 ' ------------------- if vh%=-1 left b%,lAlert%:top b%,hAlert%:hAlert%=hAlert%+50 else left b%,lAlert%:top b%,50:hMemAlert%=90:lAlert%=lAlert%+160 end_if ' -------------------- 2d_line 1,1,148,1 : print_target_is b% : print_locate 4,7 : font_color b%,255,0,0 : font_bold b% a$=item_read$(foo+2,a%):i%= instr(a$,"~") :' si "~" le caption est sur 2 lignes if i%=0 print a$ else print_locate 6,4:print left$(a$,i%-1) : print_locate 6,18:print right$(a$,len(a$)-i%) end_if ' -- si on est en bas de la forme, on remonte colonne suivante if hAlert%> height(foo)-150 then hMemAlert%=hAlert% : hAlert%=50:lAlert%=lAlert%+160 next a% end_if
' -- if hMemAlert%=0 then hMemAlert%=hAlert%:if hMemAlert%=40 then hMemAlert%=100 height foo,hMemAlert%+80 if vh%=0 then width foo, lAlert% width foo,lAlert%:if lAlert%<495 then width foo,495 left foo+6,10:top foo+6,28 : width foo+6,width(foo)-25:height foo+6,height(foo)-65 top foo+7,hMemAlert% : top foo+8,hMemAlert%-10 ' affichage des séparateurs pour lister un edit if alert_s$<>"" top foo+11,hMemAlert%+20:a$="" for a%=1 to len(alert_s$) if mid$(alert_s$,a%,1)=" " a$=a$+" _" else a$=a$+" "+mid$(alert_s$,a%,1) end_if next a% caption foo+11,a$ end_if
if zun%>0 text foo+7,"":show foo+7:show foo+8:show foo+11 :' +7: edit, +8: bouton sortie , +11: alpha sérarateur else hide foo+8:hide foo+7:hide foo+11 end_if
if fin%=1 then show foo+8:hide pi%+1 :if zun%=1 then top foo+7,hMemAlert%-30:top foo+8,hMemAlert%-30 show foo ' ============================================================================== ' ============ fin de la procedure box ==reprise du clic======================== prendre: clik_mem%=clik% ' &&&&&&&&&&&&&&&&&&& ici le teste du clic &&&&&&&&&&&&&&&&&&&& AltSort%=0 :' & repeat :' & for a%=1 to count(foo+2) : b%=a%+pi%:' & if clicked(b%)=1 then clik%=a%:b%=clik%:exit_for:' & next a% :' & if clicked(foo+3)=1 then AltSort%=1 :' titre & if clicked(foo+8)=1 then AltSort%=2 :' bouton sortie & until b%=clik% or AltSort%>0 :' & ' &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if AltSort%=1 then gosub repere:goto prendre mem%=clik% :' le dernier clik%=clik_mem%
2d_target_is clik%+pi% : 2d_fill_color 231,231,156 : 2d_rectangle 3,3,147,32 print_target_is clik%+pi% : gosub AltBouton gosub alertClavier:clik%=mem% if zun%=1 : ' on a edit, donc on s'occupe du texte en rapport avec le bouton correspondant text foo+7,"" if alert_but$(clik%)<>"" font_color clik%+pi%,0,0,0 else font_color clik%+pi%,255,0,0 end_if
2d_target_is clik%+pi%:2d_fill_color 165,239,156: 2d_rectangle 3,3,147,32 :' vert print_target_is clik%+pi% : gosub AltBouton: text foo+7,"" : a$="" : i%=0 for a%=25 to 1 step -1:if boite$(clik%,a%)<>"" then i%=a%:exit_for next a%
if i%>0 then for a%=1 to i%:a$=a$+boite$(clik%,a%)+left$(Alert_s$,1):next a%:a$=left$(a$,len(a$)-1) text foo+7,a$ ' ************************************************************************ if AltSort%=2 then goto valide ' ************************************************************************ goto prendre else AltSort%=0 goto valide end_if wait 100 RETURN ' ============================================================================== ' ===========saisie clavier===================================================== alertClavier: clear foo+9 if text$(foo+7)<>"" a$="":b$=text$(foo+7):alert_but$(clik%)=b$ for a%=1 to len(b$) c$=mid$(b$,a%,1) if instr(alert_s$,c$)>0 item_add foo+9,a$ a$="" else a$=a$+c$ end_if next a% if a$<>"" then item_add foo+9,a$ font_color clik%+pi%,0,0,0 else font_color clik%+pi%,255,0,0: clear foo+9 end_if gosub AltBouton ' -- if count(foo+9)>0 for a%=1 to count(foo+9) a$=item_read$(foo+9,a%):boite$(clik%,a%)=a$:if numeric(a$)= 1 then boite(clik%,a%)=val(a$) next a% :for a%=a% to 25:boite$(clik%,a%)="":boite(clik%,a%)=0:next a% else for a%=1 to 25:boite$(clik%,a%)="":boite(clik%,a%)=0:next a%:alert_but$(clik%)="" end_if return ' ============================================================================== ' =====================VALIDATION DE LA FORM==================================== valide: print_target_is alt%+2 print "le dernier bouton cliqué est:",clik% print "les edit récupérés:" for a%=1 to 50 if alert_but$(a%)<>"" then print a%,"= ",alert_but$(a%) next a% hide foo : hide foo+7:hide foo+8 file_save foo+6,"controle\appel"+str$(apel%)+".fic" return ' ============================================================================== ' ==========ecrire dans les boutons============================================= AltBouton: a$=item_read$(foo+2,clik%):i%= instr(a$,"~") if i%=0 print_locate 4,7:print a$ else print_locate 6,4:print left$(a$,i%-1) print_locate 6,18:print right$(a$,len(a$)-i%) end_if return ' ============================================================================== ' ==========VOIR LE MÉMO SI CHECK EST VALIDÉ==pour sauvegarde==on_change()====== repere: ct%=-1-ct% if ct%=-1 show foo+6 :show foo+4:hide foo+7:hide foo+8 else hide foo+6 :hide foo+4:if zun%=1 then show foo+7:show foo+8 if fin%=1 then show foo+8 end_if return ' ============================================================================== ' ===========ANCIEN CODAGE ANCIEN CODAGE======================================= ' NOTA toute la programmation au dessus de cette ligne est en quelque sorte de la présentation ' Les lignes suivantes sont pour moi de la programmation active, car on suit un programme établie ' et on ne peut pas faire autre chose que ce qui est prévue à l'avance. ' on ne prend que l'information d'un bouton, il n'y a pas de déclenchement par des clics. ' le clic d'une sourie ne déporte pas le programme à une autre direction. ' les lignes sont suivies une à une, et selon ce qui est prévue. code: off_click 0 :' dorénavent il n'y a que le programme suivant qui commande ! caption 0,"essai de dorme commandée par le programme" alpha 1:left 1,500:font_size 1,14:font_bold 1 caption 1,"lignes de commande pour afficher la boite d'appel" edit 2:left 2,0:top 2,30:width 2, width(0)-5:height 2,30:color 2,255,255,155:font_size 2,14:font_bold 2 edit 3:left 3,0:top 3,60:width 3, width(0)-5:height 3,30:color 3,255,255,155:font_size 3,14:font_bold 3 lig$="0V02|#750,150|Qu'aimez-vous le plus|":ct$="&1|dormir|faire l'amour|travailler dur|être fouetté|"
t$ ="lig$="+"0V02|..." t1$="le 1er chiffre a pour consigne d'afficher ou non un EDIT pour prendre des infos" t2$="V: pour Verticale et H: pour Horizontale, le sens d'affichage des boutons" t3$="02: impose le choix du bouton par défaut. Il y a un séparateur "+chr$(34)+"|"+chr$(34)+" soit: lig$="+chr$(34)+left$(lig$,5) t4$="en option, on peut positionner la forme par ceci: #750,150| ** suivie du titre de la boite soit:"+lig$ t5$="ct$="+chr$(34)+ct$+chr$(34) t6$="&1, donne un numéro à la boite, et devrait être différent pour chaque boite" t7$="il a pour fonction dans un long programme avec plein de boites, de retrouver celle-ci. Dans un autre écran" t8$="on en verra davantage" gosub rac ' -- ----------------------------------------------------------------------------------------------- lig$="1v01|#760,150|Donnez les résultats du loto~séparez les n° au choix par:+-|\ +-" :ct$="&2|fin|"
t1$="lig$="+chr$(34)+left$(lig$,4) t2$="1: impose un edit dans la boite v ou h ici n'a pas d'importance, vu qu'il n'y aura pas de bouton" t3$="01 bouton un, mais il n'y en a pas" t4$="la fin se termine par: |\.. les caractères à la place des petits points sont des caractères de séparation dans EDIT " t5$="pour séparer les nombres, ainsi: 1 2+3-11 12-5 donnera la liste" t6$= "1,2,3,11,12,5 et pourra être récupéré par boite(1,1) boite(1,2) boite(1,3)" t7$="lorsqu'il y a plusieurs boutons: boite(N° du bouton, 1er/2ème/3ème... nombre)" t8$="idem concernant les chaines: boite$(N°,...), il y a aussi alert_but$(N°) ui prend l'EDIT complet sans séparateur." t9$=ct$+": ..|fin|"+chr$(34)+" n'affiche pas les boutons" gosub rac ' ------------------------------------------------------------------------------------------------------- lig$="0H01|#750,200|Etes-vous sûre de vouloir ~effacer le fichier 'Belle maman'|":ct$="&3|Oh plus que OUI OUI!|On la garde en souvenir|ça ferait un épouventail|"
t1$="MAINTENANT DANS TOUTES LES BOITES SI VOUS APPUYEZ SUR LE TITRE," t2$=" un mémo vert apparait et un numéro en haut à gauche, ce N° est celui de la boite: &3" t3$="le mémo donne la possibilité de mettre des remarques concernant le programme à ce moment là" t4$="il est systématiquement enregistré à la fermeture, comme il est également chargé à l'ouverture" t5$="Donc, si cette boite est utilisée par plusieurs programmes, il faut un dossier par boite" t6$="maintenant votre Belle Mère est votre problème!" gosub rac ' ------------------------------------------------------------------------------------------------------ lig$="1v01|#760,100|entrez chaque grille du loto~que vous voulez jouer|\, +-*/" : ct$ ="&4|grille N°1|grille N°2|grille N°3|" t1$="cette boite est intéressante à regarder (non pas pour le loto - je n'y joue pas)" t2$="mais a plusieurs boutons dans lequel on peut y mettre plusieurs listes" t3$="chaque fois que vous changer de boutons, les nombres sont sauvegardés" t4$="lorsqu'un bouton a un EDIT sauvegardé, la couleur de la fonte change" t5$="si vous revenez sur un EDIT, les nombres réapparaissent avec le séparateur par défaut qui est le 1er dans la liste" t6$="ici : une virgule. Si vous effacez les nombres de l'EDIT, la couleur de la fonte, redevient rouge" t7$="le titre de la boite, et le caption d'un bouton peut-être écrit sur 2 lignes avec le caractère: ~ " gosub rac ' ------------------------------------------------------------------------------------------------------ lig$="1V01|#750,200|un escargot met Combien de ~temps pour faire 100m à 10km/h|":ct$="&5|FIN|" t1$="Est-ce que j'en pose des questions moi" :gosub rac ' ------------------------------------------------------------------------------------------------------ lig$="0v01|ce message va s'auto-détruire si ~vous cliquez sur le bouton|":ct$ ="&6|fin|" ti$="essai de différente forme" gosub rac ' ------------------------------------------------------------------------------------------------------ lig$="1V01|#750,00|essai d'une grande liste~à remplir|\, +-*/" ct$="&7|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|" t$="essai d'une forme avec 36 boutons (maxi dans ce programme)" gosub rac ' ------------------------------------------------------------------------------------------------------ ' goto guide guide: lig$="0h02|Arrêt du programme|":ct$="&8| ***ON ARRETE***| ANNULÉ|" t$="enfin on arrête" t1$="ici le clic est récupéré pour faire un choix" t2$="le choix est tout simple, vu qu'on arrive au bout de la présentation" gosub rac:if clik%=1 then goto fin
wait 1000:message "on quitte quand même, fin du programme":wait 200: goto fin return ' ============================================================================== ' ==================raccourcis de commande====================================== rac: print_target_is 2: print "lig$=",chr$(34),lig$,chr$(34) print_target_is 3: print "ct$=",chr$(34),ct$,chr$(34) print_target_is alt%+2 if t$ <>"" then print t$ if t1$<>"" then print t1$ if t2$<>"" then print t2$ if t3$<>"" then print t3$ if t4$<>"" then print t4$ if t5$<>"" then print t5$ if t6$<>"" then print t6$ if t7$<>"" then print t7$ if t8$<>"" then print t8$ if t9$<>"" then print t9$ gosub alerte : gosub attente:clear alt%+2 t$="":t1$="":t2$="":t3$="":t4$="":t5$="":t6$="":t7$="":t8$="":t9$="" return ' ============================================================================== ' ==================fenêtre d'attente=========================================== attente: show foo-1 repeat:until clicked(foo-2)=1 hide foo-1 return ' ============================================================================== ' =================TERMINATE==================================================== fin: terminate J'ai oublié ceci: la commande pour se servir de la boite après avoir défini les lignes de commande, est gosub alertegosub rac (pour raccourcis) c'est pour la présentation.
Dernière édition par cosmos70 le Dim 10 Jan 2010 - 20:16, édité 5 fois |
| | | Invité Invité
| Sujet: Re: Boite de Dialogue Fourre-tout Sam 9 Jan 2010 - 18:03 | |
| Je mets maintenant le programme sans les explications pour la présentation, qui ne devrait plus servir. J'ai juste laissé quelques lignes de commande pour avoir en mémoire la méthode utilisée. - Code:
-
' essai de refaire BOITE D'ALERTE GFA BASIC error_french ' ============================================================================== dim foo ,pi% ,alt% ,alert_but$(50),boite$(50,25),boite(50,25) dim hAlert%,alert_s$,vh%,zun%,drAlert%,topAlert% ,AltSort% dim clik% ,fin% ,mem%, clik_mem% ,lig$ ,ti$ ,ct$,lAlert% ,apel%,hMemAlert%,ct%,dr$ ' dim commun dim a%,b%,c%,i%,a$,b$,c$ ' ============================================================================== label alerte ,repere , valide ,prendre ,AltBouton, code ,attente ,alertClavier ' ----label du programme général----- label fin :' ' ========================================== left 0,0:height 0,800:width 0,800 alt%=58 :a%=1: foo=10 : ' numéro de la forme dans le programme on_click 0,code :' finalement c'est form 0 qui commande le départ, ensuite c'est le programme ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a%=2:memo alt%+a%:top alt%+a%,100:left alt%+a%,0:WIDTH alt%+a%,750:height alt%+a%,500:font_size alt%+a%,14 color alt%+a%,208,255,155:font_bold alt%+a% print_target_is alt%+2 ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a%=foo-1 : ' forme d'attente (je la laisse quand même) form a% :hide a%:top a%,300:left a%,800:width a%,100:height a%,90:color a%,132,190,33:border_small a% ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a%=foo-2:button a% parent a%,a%+1:top a%,25:left a%,10:width a%,80:caption a%,"continue" ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - a%=foo-3:alpha a%:parent a%,a%+2:top a%,0:left a%,10:font_size a%,12:font_bold a%:caption a%,"attente" ' -------------------------------------------------- ' LA FORM A CONSTRUIRE------------------------------ form foo :left foo,900::top foo,100:hide foo :width foo,100:height foo,170::color foo,236,198,89:border_small foo ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dlist foo+2 :' titre des boutons de l'appel ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - alpha foo+3:parent foo+3,foo:font_color foo+3,0,0,220:font_bold foo+3:font_size foo+3,15:' titre de la boite font_name foo+3,"aSwIt Mono 864":left foo+3,40:top foo+3,0:on_click foo+3,repere ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - alpha foo+4:parent foo+4,foo:font_size foo+4,7:hide foo+4:' pour y mettre le N° de la boite d'alerte pour se retrouver ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - memo foo+6:parent foo+6,foo:hide foo+6 :color foo+6,181,247,156 :' message vert ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - edit foo+7 :parent foo+7,foo:top foo+7,0:left foo+7,10:width foo+7,350 height foo+7,30 : color foo+7,255,255,165:font_size foo+7,14:font_bold foo+7:hide foo+7 ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - button foo+8:parent foo+8,foo:left foo+8,370:width foo+8,100:height foo+8,30:caption foo+8,"sortir" hide foo+8 :' on_click foo+8,valide de toute façon il fonctionne pas ici ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - dlist foo+9 ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -affiche les séparateurs- - - - - - - - - alpha foo+11:parent foo+11,foo:left foo+11,370:font_size foo+11,14:font_name foo+11,"Verdana":font_bold foo+11 ' -------------------------------------------- pi%=foo+11 for a%=1 to 36 : b%=a%+pi% picture b%:hide b%:parent b%,foo:on_click b%,prendre:width b%,150:height b%,35 next a% if dir_exists("controle")=0 then dir_make "controle" ' - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - message "cliquez sur la forme pour démarrer" ' ============================================================================== ' =====END====END=====END=====END=====END=====END=====END=====END=====END======= END ' ============================================================================== alerte: clear foo+2:topAlert%=200:drAlert%=400:apel%=0:fin%=0 :alert_s$="":caption foo+11,"" zun%=val(left$(lig$,1)):ti$="" :' zun%: pour z=zero et un - 0 et 1 if upper$(mid$(lig$,2,1))="V" vh%=-1 else vh%=0 end_if clik%=mid$(lig$,3,2) lig$=right$(lig$,len(lig$)-5) ' -- si positionnement |#300,100| i%=instr(lig$,"#") if i%>0 lig$=right$(lig$,len(lig$)-i%) i%=instr(lig$,",") drAlert%=val(left$(lig$,i%-1)):lig$=right$(lig$, len(lig$)-i%) i%=instr(lig$,"|"):topAlert%=val(left$(lig$,i%-1)) end_if ' -- en fin de ligne : |\....| les points représentent les caractères de séparation entre chaque mot ou nombre à définir if instr(lig$,"|")<len(lig$) then lig$=right$(lig$,len(lig$)-instr(lig$,"|")) :' expl: |\ +-| avec le texte d'un edit qui serait: i%=instr(lig$,"|\") :' "12 23+14-2" donne une liste: 12,23,14,2 if i%>0 alert_s$=right$(lig$,len(lig$)-i%-1):ti$=left$(lig$,i%-1) else alert_s$="":ti$=left$(lig$,len(lig$)-1) end_if ' si dans le titre: "~" est inséré, le reste est sur la ligne suivante i%=instr(ti$,"~"):if i%>0 then ti$=left$(ti$,i%-1)+chr$(10)+chr$(13)+right$(ti$,len(ti$)-i%) ' -- au début de la ligne &12| inclure le numéro de l'appel pour le retrouver parmis tout ceux du programme (important si comme moi, il y en avait plus de 300) if left$(ct$,1)="&" i%= instr(ct$,"|") apel%=val(mid$(ct$,2,i%-2)) ct$=right$(ct$,len(ct$)-i%) end_if rem "&1|fin|" si le reste est ' "FIN|" pas de "picture bouton", mais un bouton de sortie if upper$(ct$)="FIN|"then fin%=1 if left$(ct$,1)="|" then ct$=right$(ct$,len(ct$)-1) repeat i%=instr(ct$,"|") if i%>0 a$= left$(ct$,i%-1) item_add foo+2,a$ : ct$=right$(ct$,len(ct$)-i%) else if ct$<>"" then item_add foo+2,ct$ end_if until i%=0
' représentation des boutons dans FORM foo dont les paramètres viennet d'être définis for a%=1 to 36:for b%=1 to 25:boite$(a%,b%) ="":alert_but$(a%)="":next b%:next a% 2d_target_is 1+pi%:print_target_is 1+pi%:height foo,770 :ct%=0
clear foo+6 clear foo+9
caption foo+3,ti$ :caption foo+4,apel% : hAlert%=50 :lAlert%=10 :hMemAlert%=0
if drAlert%>=0 then left foo,drAlert% :' #xxx,yyy| if topAlert%>=0 then top foo,topAlert% ' texte du MEMO foo+6 sauvegardé à chaque changement if file_exists("controle\appel"+str$(apel%)+".fic")=1 then file_load foo+6,"controle\appel"+str$(apel%)+".fic"
if count(foo+2)>0 show foo for a%=1 to 36: hide a%+pi% : next a% for a%=1 to count(foo+2) : b%=a%+pi% show b% :' b% est un picture qui sert de bouton dont les boutons sont dessinés
width b%,150:height b%,35 : 2d_target_is b% : 2d_pen_color 90,90,24
if clik%<>a% 2d_fill_color 231,231,156 else 2d_fill_color 165,239,156 end_if 2d_rectangle 1,1,149,34 : 2d_pen_color 173,178,24 : 2d_rectangle 3,3,147,32 ' ------------------- if vh%=-1 left b%,lAlert%:top b%,hAlert%:hAlert%=hAlert%+50 else left b%,lAlert%:top b%,50:hMemAlert%=90:lAlert%=lAlert%+160 end_if ' -------------------- 2d_line 1,1,148,1 : print_target_is b% : print_locate 4,7 : font_color b%,255,0,0 : font_bold b% a$=item_read$(foo+2,a%):i%= instr(a$,"~") :' si "~" le caption est sur 2 lignes if i%=0 print a$ else print_locate 6,4:print left$(a$,i%-1) : print_locate 6,18:print right$(a$,len(a$)-i%) end_if ' -- si on est en bas de la forme, on remonte colonne suivante if hAlert%> height(foo)-150 then hMemAlert%=hAlert% : hAlert%=50:lAlert%=lAlert%+160 next a% end_if ' -- if hMemAlert%=0 then hMemAlert%=hAlert%:if hMemAlert%=40 then hMemAlert%=100 height foo,hMemAlert%+80 if vh%=0 then width foo, lAlert% width foo,lAlert%:if lAlert%<495 then width foo,495 left foo+6,10:top foo+6,28 : width foo+6,width(foo)-25:height foo+6,height(foo)-65 top foo+7,hMemAlert% : top foo+8,hMemAlert%-10 ' affichage des séparateurs pour lister un edit if alert_s$<>"" top foo+11,hMemAlert%+20:a$="" for a%=1 to len(alert_s$) if mid$(alert_s$,a%,1)=" " a$=a$+" _" else a$=a$+" "+mid$(alert_s$,a%,1) end_if next a% caption foo+11,a$ end_if
if zun%>0 text foo+7,"":show foo+7:show foo+8:show foo+11 else hide foo+8:hide foo+7:hide foo+11 end_if
if fin%=1 then show foo+8:hide pi%+1 :if zun%=1 then top foo+7,hMemAlert%-30:top foo+8,hMemAlert%-30 show foo ' ============================================================================== ' ============ fin de la procedure box ==reprise du clic======================== prendre: clik_mem%=clik% ' &&&&&&&&&&&&&&&&&&& ici le teste du clic &&&&&&&&&&&&&&&&&&&& AltSort%=0 :' & repeat :' & for a%=1 to count(foo+2) : b%=a%+pi%:' & if clicked(b%)=1 then clik%=a%:b%=clik%:exit_for:' & next a% :' & if clicked(foo+3)=1 then AltSort%=1 :' & if clicked(foo+8)=1 then AltSort%=2 :' & until b%=clik% or AltSort%>0 :' & ' &&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&& if AltSort%=1 then gosub repere:goto prendre mem%=clik% :' le dernier clik%=clik_mem%
2d_target_is clik%+pi% : 2d_fill_color 231,231,156 : 2d_rectangle 3,3,147,32 print_target_is clik%+pi% : gosub AltBouton gosub alertClavier:clik%=mem% if zun%=1 : ' on a edit, donc on s'occupe du texte en rapport avec le bouton correspondant text foo+7,"" if alert_but$(clik%)<>"" font_color clik%+pi%,0,0,0 else font_color clik%+pi%,255,0,0 end_if
2d_target_is clik%+pi%:2d_fill_color 165,239,156: 2d_rectangle 3,3,147,32 :' vert print_target_is clik%+pi% : gosub AltBouton: text foo+7,"" : a$="" : i%=0
for a%=25 to 1 step -1:if boite$(clik%,a%)<>"" then i%=a%:exit_for next a%
if i%>0 then for a%=1 to i%:a$=a$+boite$(clik%,a%)+left$(Alert_s$,1):next a%:a$=left$(a$,len(a$)-1) text foo+7,a$ ' ************************************************************************ if AltSort%=2 then goto valide ' ************************************************************************ goto prendre else AltSort%=0 goto valide end_if wait 100 RETURN ' ============================================================================== ' ===========saisie clavier===================================================== alertClavier: clear foo+9 if text$(foo+7)<>"" a$="":b$=text$(foo+7):alert_but$(clik%)=b$ for a%=1 to len(b$) c$=mid$(b$,a%,1) if instr(alert_s$,c$)>0 item_add foo+9,a$ a$="" else a$=a$+c$ end_if next a% if a$<>"" then item_add foo+9,a$ font_color clik%+pi%,0,0,0 else font_color clik%+pi%,255,0,0: clear foo+9 end_if gosub AltBouton ' -- if count(foo+9)>0 for a%=1 to count(foo+9) a$=item_read$(foo+9,a%):boite$(clik%,a%)=a$:if numeric(a$)= 1 then boite(clik%,a%)=val(a$) next a% :for a%=a% to 25:boite$(clik%,a%)="":boite(clik%,a%)=0:next a% else for a%=1 to 25:boite$(clik%,a%)="":boite(clik%,a%)=0:next a%:alert_but$(clik%)="" end_if return ' ============================================================================== ' =====================VALIDATION DE LA FORM==================================== valide: ' =========================================================== ' ' ==récupération de la case par le numéro de clik%=========== ' =>> if clik%=1 then ... ' ==alert_but$(x) a récupéré le texte de l'EDIT de la boite== ' ' ==boite$(x,n°) et boite(x,n°) la liste d'un edit=========== ' ' =========================================================== ' hide foo : hide foo+7:hide foo+8 file_save foo+6,"controle\appel"+str$(apel%)+".fic" return ' ============================================================================== ' ==========ecrire dans les boutons============================================= AltBouton: a$=item_read$(foo+2,clik%):i%= instr(a$,"~") if i%=0 print_locate 4,7:print a$ else print_locate 6,4:print left$(a$,i%-1) print_locate 6,18:print right$(a$,len(a$)-i%) end_if return ' ============================================================================== repere: ct%=-1-ct% if ct%=-1 show foo+6 :show foo+4:hide foo+7:hide foo+8 else hide foo+6 :hide foo+4:if zun%=1 then show foo+7:show foo+8 if fin%=1 then show foo+8 end_if return ' ============================================================================== ' ===========DEBUT DU PROGRAMME================================================= code: off_click 0 :' dorénavent il n'y a que le programme suivant qui commande ! caption 0,"essai de forme commandée par le programme"
lig$="0V02|#750,150|Qu'aimez-vous le plus|":ct$="&1|dormir|faire l'amour|travailler dur|être fouetté|": gosub alerte ' -- ---------------------------------------- lig$="1v01|#760,150|Donnez les résultats du loto~séparez les n° au choix par:+-|\ +-" :ct$="&2|fin|": gosub alerte ' ------------------------------------------- lig$="0H01|#750,200|Etes-vous sûre de vouloir ~effacer le fichier 'Belle maman'|":ct$="&3|Oh plus que OUI OUI!|On la garde en souvenir|ça ferait un épouventail|" : gosub alerte ' ------------------------------------------- lig$="1V01|#750,200|un escargot met Combien de ~temps pour faire 100m à 10km/h|":ct$="&4|FIN|": gosub alerte ' ------------------------------------------- lig$="0v01|ce message va s'auto-détruire si ~vous cliquez sur le bouton|":ct$ ="&5|fin|": gosub alerte ' ------------------------------------------- lig$="1V01|#750,00|essai d'une grande liste~à remplir|\, +-*/" ct$="&6|1|2|3|4|5|6|7|8|9|10|11|12|13|14|15|16|17|18|19|20|21|22|23|24|25|26|27|28|29|30|31|32|33|34|35|36|": gosub alerte ' ------------------------------------------- lig$="0h02|Arrêt du programme|":ct$="&7| ***ON ARRETE***| ANNULÉ|": gosub alerte if clik%=1 then goto fin
wait 1000:message "on quitte quand même, fin du programme":wait 200: goto fin return ' ============================================================================== ' ==================fenêtre d'attente=========================================== attente: show foo-1 repeat:until clicked(foo-2)=1 hide foo-1 return ' ============================================================================== ' =================TERMINATE==================================================== fin: terminate entre le 1er et le 2ème programme l'essai N°4 sur le loto des grilles à remplir n'est plus là, donc sur le même dossier , il y aura un décalage sur la sauvegarde des mémo de référence9a n'a pas d'incidence sur le programme, puisqu'ici c'est une démo, et que tout les modification que vous pourriez faire en essayant le programme, seront automatiquement remis à jour. C'est pour cela que ce programme devra être utilisé sur des dossiers différent, pour ne pas que les mémos qui n'ont peu d'importance, soit recouvert.
Dernière édition par cosmos70 le Dim 10 Jan 2010 - 20:25, édité 4 fois |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Boite de Dialogue Fourre-tout Sam 9 Jan 2010 - 20:32 | |
| Après tentative sur le premier programme, quand on a saisi le N° du loto et le click sur sortir, j'ai une erreur ici: file_save foo+6,"controle\appel"+str$(apel%)+".fic"
A+ | |
| | | Invité Invité
| Sujet: Re: Boite de Dialogue Fourre-tout Sam 9 Jan 2010 - 23:19 | |
| Salut, effectivement, ça fait trois fois que je revois mon programme, pour arriver à ce qu'il fonctionne avec des blocages intermédiaires, et au début, je ne pensais qu'à moi, puisque le but à atteindre était de refaire cette boite. Donc le dossier controle, il a été créé auparavant. Le plus simple est de le créer là où tu sauvegardes le programme, si tu le sauvegardes. C'est ce dossier qui bloque si il n'est pas présent. 2 solutions: si tu sauvegardes le programme, tu créés le dossier Si tu ne le sauvegardes pas, tu mets un rem devant pour faire l'essai. Je vais revoir le programme, en fait c'est tout simple: - Code:
-
if dir_exists("controle")=0 then dir_make "controle"
A mettre avant le rem, comme cela tu es tranquille. Au plaisir de te relire
Dernière édition par cosmos70 le Sam 9 Jan 2010 - 23:29, édité 1 fois |
| | | Invité Invité
| Sujet: Re: Boite de Dialogue Fourre-tout Sam 9 Jan 2010 - 23:24 | |
| Je viens de rééditer les 2 programmes pour insérer la création du dossier, si celui-ci est absent. Mais j'ai pas encore vérifié, ce que je m'empresse de faire. réédité une 2ème l'ensemble C'est pas dir_mark, mais dir_make, et maintenant ça fonctionne Cela dit: Si vous utilisé ce programme, dans d'autre programmes, il faut soit mettre les programmes dans des dossiers séparés, ou alors dans chaque programme, mettre un nom différent de dossier, et modifier le programme avec ce nom, en création, en lecture, et en sauvegarde. |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Boite de Dialogue Fourre-tout Dim 10 Jan 2010 - 18:59 | |
| J'ai essayé les 2 (ce sont pratiquement les mêmes), çà à l'air de fonctionner. Mais il semble que les données ne sont pas enregistrées. J'ai explorer le code, je nage. Comme tu dis: si on l'a pas écrit soi-même c'est difficile.
Je suppose que normalement on devrait retrouver les saisies dans un ou plusieurs fichiers.
A+
Prend ton temps pour répondre, je m'asente jusqu'a mardi | |
| | | Invité Invité
| Sujet: Re: Boite de Dialogue Fourre-tout Dim 10 Jan 2010 - 19:54 | |
| Je suis bien content que tu ais testé. Avant de mettre sur le forum j'ai fait du nettoyage, enlevé des lignes vide etc...., j'ai effacé une ligne sur le 1er programme, et évidemment reporter sur le 2ème, vu que c'est le même mais nettoyé ligne 233 : goto valide n'était plus présent et ligne 225 pour le 2ème. De plus, mais là ce n'est pas important mais les numéros de boite, je ne les ait pas réactualisé lorsque j'ai fait la démo, donc ici, ils ne vont pas en suivant, soit tout recopier, ou alors dans la procédure code: mettre les numéros, comme &1 &2 &3... dans ct$ pour que la chose semble correct. Là ça fonctionne correctement chez moi. Merci pour le teste, je ne l'avais pas remarqué. @+ |
| | | Invité Invité
| Sujet: Re: Boite de Dialogue Fourre-tout Dim 10 Jan 2010 - 20:33 | |
| J'ai rechargé les 2 programmes depuis le web, après les avoir modifiés, afin de les essayer. Apparemment ils fonctionnent tout les deux. Seul bémol, sur le 2ème l'essai 4 du 1er sur le remplissage d'une grille du loto, n'est plus dans le 2ème programme. Comme c'est du teste, et ne change rien au programme, je ne l'ai pas remis. Si des mémos ont étés enregistrés dans le 1er programme, il y aura un décalage sur le second programme évidemment. Si certain sont effectivement intéressé par ce programme, je ferais des modifications pour avoir des noms de dossier différent d'un programme à l'autre. ici le dossier en cause est "contrôle". Mais pour moi seul, je n'en vois pas l'utilité. |
| | | Invité Invité
| Sujet: Re: Boite de Dialogue Fourre-tout Lun 11 Jan 2010 - 0:52 | |
| Je reprends un post parce que je viens de voir quelque chose de pas mal dans mon programme, et je ne le savais pas La petite boite d'attente que j'ai mis a une particularité très intéressante, par rapport à la commande message, elle fait la même chose (il faudrait revoir les dimensions), mais elle ne bloque pas le programme. On peut modifier un mémo, ou autre, il n'est pas nécessaire de cliquer sur le bouton pour avoir la main, et ça c'est bien souvent important. C'est un peu plus compliqué, il faut faire la boite J'ai fais un programme d'essai rapide, maintenant je suis sur autre chose. - Code:
-
label essai,attente,fin width 0,300 : on_click 0,essai ' création de la boite d'attente form 1 :hide 1:top 1,300:left 1,800:width 1,300:height 1,110:color 1,237,232,124:border_small 1 caption 1,"essai de la boite" alpha 2:parent 2,1:top 2,10:left 2,20:width 2,180:font_size 2,10:font_bold 2 button 3:parent 3,1:top 3,50:left 3,60:caption 3,"sortir" ' ----------------------------- memo 4:width 4,280: font_size 4,16:item_add 4,"Cliquez sur la form pour commencer"
end ' ====================================== ' ==================fenêtre d'attente=== essai: clear 4: message "essayez de modifiez le mémo" caption 2,"essai de la boite: je peux aller"+chr$(13)+"écrire dans le mémo" gosub attente:goto fin return
attente: show 1 repeat:until clicked(3)=1 hide 1 return
fin: terminate Il est évident que c'est pour certain cas de figure, un message est plus simple. Sans le vouloir, cette petite boite m'arrange. |
| | | Contenu sponsorisé
| Sujet: Re: Boite de Dialogue Fourre-tout | |
| |
| | | | Boite de Dialogue Fourre-tout | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |