JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Aide à la programmation Sam 25 Oct 2014 - 17:56 | |
| Peut-être plus gadget qu'autre chose, une aide à la définition des objets dans un programme Panoramic: On clique sur un objet dans la grille supérieure, et sa définition minimum est générée plus bas, avec une variable comme numéro d'objet et les paramètres minimum (position, taille), prêts à être garnis. Chaque objet est défini par une variable, avec génération de la commande DIM correspondante. Deux champs sont garnis: - en haut, la ou les lignes de DIM, pour la définition des noms d'objets - en bas, successivement, les lignes de définition des objets, avec progression de l'index. Quand c'est terminé, il ne reste ensuite qu'à copier et coller successivement ces deux champs dans le programme en préparation dans l'éditeur, puis ajuster les valeurs: - garnir les données [#) avec les bonnes valeurs - ajouter les champs manquants et/ou supprimer les champs inutiles - supprimer (éventuellement) les étiquettes non utilisées, dans la définition de l'objet et dans le DIM correspondant. Je ne sis pas sûr que ce soit très utile, c'est à voir, en tout cas ce n'est pas très long, et ça peut donner des idées: - Code:
-
' Aide à la programmation: définition des objets pour un nouveau programme ' ============================================================================== ' PRINCIPE: cliquer successivement les objets à définir, qui seront générés dans ' la fenêtre du bas, avec attribution de variables 'étiquettes', lesquelles seront ' regroupées dans des lignes de DIM dans la fenêtre du haut. ' Puis 'Copier' successivement ces deux fenêtre pour les 'Coller' dans le ' programme en cours d'élaboration. ' Dans le programme, mettre en forme ces lignes de définitions, en mettant ' notamment les valeurs adéquates dans les zones prévues (caractères '#'), ' dimensions et autres paramètres. ' ============================================================================== LABEL Clk, Copier,Remplace DIM gr%,nr%,nc%,w%,h%,w1%,Obj$(20,10),no%(20),i%,j%,k%,a$,b$,c$,x%,y%,c%,r%,nob DIM lso$(50),prf$(50),vpr%(50),car$(50),dm$,xd%,h3,s1$,s2$,ch$,ch1$,ch2$
DATA "Classiques:","ALPHA","BUTTON","FORM","GRID","MEMO","SPIN","F" DATA "Listes:","COMBO","DLIST","EDIT","LIST","F" DATA "Scènes:","SCENE2D","SCENE3D","F" DATA "Multimédia:","HVIEWER","IMAGE","MOVIE","PICTURE","SOUND","F" DATA "Choix:","OPTION","CHECK","F" DATA "Menus:","MAIN_MENU","SUB_MENU","F" DATA "Barres:","PROGRESS_BAR","SCROLL_BAR","TRACK_BAR","F" DATA "Dialogue:","OPEN_DIALOG","SAVE_DIALOG","F" DATA "Horloge:","TIMER","F" DATA "Conteneurs:","CONTAINER","CONTAINER_OPTION","PANEL","F"
DATA "lsobj": ' liste des objets, classés par numéro DATA "SCENE3D","BUTTON","EDIT","MEMO","COMBO","ALPHA","FORM","LIST","PICTURE" DATA "CHECK","OPTION","MAIN_MENU","SUB_MENU","SOUND","MOVIE","TRACK_BAR" DATA "OPEN_DIALOG","SAVE_DIALOG","SCROLL_BAR","PROGRESS_BAR","SPIN","GRID" DATA "CONTAINER","","","DLIST","SCENE2D","TIMER","PANEL","","","CONTAINER_OPTION" DATA "","","","HVIEWER","","","","","IMAGE","F" ' préfixe des étiquettes d'objets générées DATA "s3d","btn","edi","mem","cmb","alf","frm","lst","pic","chk","opt","mme","sme" DATA "snd","mov","tba","odi","sdi","sba","pba","spn","grd","cnt","","","dls","s2d" DATA "tim","pan","","","cno","","","","hvw","","","","","img" ' caractéristiques minimum implicites: T(top), L(left), W(largeur), H(hauteur), P(parent) DATA "TLWH","TL","TLW","TLWH","TLWH","TL","TLWH","TLWH","TLWH","TL","TLP","","P" DATA "","TLWH","TLW","","","TLW","TLW","TLW","TLWH","TLWH","","","","TLWH","" DATA "TLWH","","","TLWH","","","","TLWH","","","","",""
WIDTH 0,800: HEIGHT 0,SCREEN_Y-50: BORDER_SMALL 0 COLOR 0,180,255,255: FONT_BOLD 0 nr% = 11: nc% = 8 gr% = 1 w% = 114: h% = 15
GRID gr%: TOP gr%,0: LEFT gr%,0 WIDTH gr%,(nc%-1)*w%-16: HEIGHT gr%,(nr%-1)*h%+1+nr%+3 GRID_COLUMN gr%,nc%: GRID_ROW gr%,nr% GRID_COLUMN_WIDTH gr%,w%: GRID_ROW_HEIGHT gr%,h% GRID_ONE_COLUMN_WIDTH gr%,1,1: GRID_ONE_ROW_HEIGHT gr%,1,1 GRID_ONE_COLUMN_WIDTH gr%,2,83 FONT_NAME gr%,"Consolas": FONT_SIZE gr%,10: FONT_BOLD gr%: FONT_COLOR gr%,0,0,128 ON_CLICK gr%,Clk c% = 1 FOR r% = 2 TO nr% READ a$ WHILE a$<>"F" c%=c%+1: Obj$(r%,c%)=a$ i%=w%: IF c%=2 THEN i% = 0 Wcel(gr%,a$,r%,c%,i%) READ a$ END_WHILE no%(r%) = c%: c% = 1 NEXT r% READ a$: WHILE a$<>"lsobj": READ a$: END_WHILE: nob = 0 READ a$: WHILE a$<>"F": nob=nob+1: lso$(nob) = a$: READ a$: END_WHILE FOR i% = 1 TO nob: READ a$: prf$(i%) = a$: NEXT i% FOR i% = 1 TO nob: READ a$: car$(i%) = a$: NEXT i%
LIST 2:top 2,height(1)+5: width 2,width(0)-100:height 2,60 COLOR 2,255,255,164 FONT_NAME 2,"Consolas": FONT_SIZE 2,10
MEMO 3: TOP 3,TOP(2)+HEIGHT(2)+5: WIDTH 3,WIDTH(2) h3 = HEIGHT(0)-HEIGHT(1)-HEIGHT(2)-70: HEIGHT 3,h3 FONT_NAME 3,"Consolas": FONT_SIZE 3,10 COLOR 3,255,255,164 BUTTON 6: TOP 6,TOP(2): LEFT 6,LEFT(2)+WIDTH(2): CAPTION 6,"COPIER": ON_CLICK 6,Copier BUTTON 7: TOP 7,TOP(3): LEFT 7,LEFT(3)+WIDTH(3): CAPTION 7,"COPIER": ON_CLICK 7,Copier ALPHA 10: TOP 10,TOP(3)+h3+4: LEFT 10,50: COLOR 10,255,255,0 CAPTION 10," Dans la sélection, remplacer:" EDIT 11: TOP 11,TOP(10)-4: LEFT 11,LEFT(10)+170: WIDTH 11,80 FONT_NAME 11,"Consolas": FONT_SIZE 11,11 ALPHA 12: TOP 12,TOP(10): LEFT 12,LEFT(11)+WIDTH(11)+5: COLOR 12,255,255,0 CAPTION 12," par:" EDIT 13: TOP 13,TOP(11): LEFT 13,LEFT(12)+30: WIDTH 13,80 FONT_NAME 13,"Consolas": FONT_SIZE 13,11 ALPHA 14: TOP 14,TOP(10): LEFT 14,LEFT(13)+WIDTH(13)+5: COLOR 14,255,255,0 CAPTION 14,"Sélectionner, puis:" BUTTON 15: TOP 15,TOP(13)-1: LEFT 15,LEFT(14)+120: CAPTION 15,"OK" ON_CLICK 15,Remplace dm$ = "": xd% = 1 END ' ============================================================================== Clk: x% = MOUSE_X_LEFT_DOWN(gr%): y% = MOUSE_Y_LEFT_DOWN(gr%) c% = GRID_X_TO_COLUMN(gr%,x%) r% = GRID_Y_TO_ROW(gr%,y%) IF c% < 3 THEN RETURN a$ = Obj$(r%,c%): IF a$ = "" THEN RETURN: ' case vide FOR i% = 1 TO nob IF a$ = lso$(i%) THEN EXIT_FOR NEXT i% c$ = car$(i%) a$ = "i%=i%+1: "+a$+" i%" IF INSTR(c$,"P")>0 THEN a$ = a$ + ": PARENT i%,#p" IF INSTR(c$,"T")>0 THEN a$ = a$ + ": TOP i%,#t" IF INSTR(c$,"L")>0 THEN a$ = a$ + ": LEFT i%,#g" IF INSTR(c$,"W")>0 THEN a$ = a$ + ": WIDTH i%,#w" IF INSTR(c$,"H")>0 THEN a$ = a$ + ": HEIGHT i%,#h" j% = vpr%(i%)+1: vpr%(i%) = j%: b$ = prf$(i%)+STR$(j%) a$ = a$ + ": "+b$+"=i%" ITEM_ADD 3,a$ IF COUNT(2) = 0 ITEM_ADD 2,"DIM i%,"+b$ ELSE dm$ = ITEM_READ$(2,xd%) IF LEN(dm$) >= 78 xd% = xd%+1: ITEM_ADD 2,"DIM "+b$ ELSE dm$ = dm$ + ","+b$ ITEM_DELETE 2,xd%: ITEM_INSERT 2,xd%,dm$ END_IF END_IF RETURN ' ============================================================================== Copier: ' copier une des zones dans le clipboard i% = NUMBER_CLICK IF i% = 6 j% = 2 ELSE j% = 3 END_IF a$ = "" FOR i% = 1 TO COUNT(j%) a$ = a$ + ITEM_READ$(j%,i%)+CHR$(13)+CHR$(10) NEXT i% CLIPBOARD_STRING_COPY a$ RETURN ' ============================================================================== Remplace: s1$ = TEXT$(11): s2$ = TEXT$(13) IF s1$ = "" THEN RETURN a$ = SELECT_READ$(3): ' zone sélectionnée ch$ = "" FOR i% = 1 TO COUNT(3) ch$ = ch$+ITEM_READ$(3,i%): IF i%<COUNT(3) THEN ch$=ch$+CHR$(13)+CHR$(10) NEXT i% k% = INSTR(ch$,a$): ch1$=LEFT$(ch$,k%-1): ch2$=RIGHT_POS$(ch$,k%+LEN(a$)) k% = INSTR(a$,s1$) WHILE k%>0 a$=LEFT$(a$,k%-1)+s2$+RIGHT_POS$(a$,k%+LEN(s1$)) k% = INSTR_POS(a$,s1$,k%+LEN(s2$)) END_WHILE ch$ = ch1$ + a$ + ch2$ CLEAR 3: ITEM_ADD 3,ch$ RETURN ' ============================================================================== SUB Wcel(gr%,a$,r%,c%,wc%) ' Écriture de a$ dans la cellule r%,c% de la grille gr% ' centrage horizontal si wc% <> 0 (= largeur cellule) IF wc% > 0 WHILE TEXT_WIDTH(a$,gr%) < wc%: a$ = " " + a$ + " ": END_WHILE a$ = RTRIM$(MID$(a$,2,100)) END_IF GRID_WRITE gr%,r%,c%,a$ END_SUB ' ============================================================================== Edit 22h petites modifs et erreurs... 23h10 possibilité de faire des remplacements par série
Dernière édition par JL35 le Sam 25 Oct 2014 - 23:09, édité 2 fois | |
|