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 |
|
|
| fonction grid | |
| | |
Auteur | Message |
---|
gigi75
Nombre de messages : 101 Age : 52 Date d'inscription : 13/04/2013
| Sujet: fonction grid Dim 12 Mai 2013 - 20:40 | |
| Bonsoir à tous,
j'essaye grâce à la fonction Grid de simuler un plan 2D.
Je débute, je sais. Alors voilà, la fonction grid est attirante, certes, mais comment pourrais je colorer une case (pas les cases fixe)? Et comment utiliser la fonction on clik.
Merci à tous
Gilles
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: fonction grid Dim 12 Mai 2013 - 21:10 | |
| 1. On ne peut pas, à ce jour, colorer une case au choix. 2. Un GRID a un évènement ON_CLICK. Tu peux faire ceci: - Code:
-
label clic_dans_grid dim x%,y%,ligne%,colonne%
grid 1 ' ici, paramétrer le grid... on_click 1,clic_dans_grid
clic_dans_grid: x% = mouse_x_left_down(1) y% = mouse_y_left_down(1) colonne% = grid_x_to_column(1,x%) ligne% = grid_y_to_column(1,y%) ' ici, faire ce qu'il faut pour la cellule (ligne%,colonne%) ... return
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 12 Mai 2013 - 22:11 | |
| Tu peux aussi te faire un tableau d' "Edit" pour remplacer le grid... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: fonction grid Dim 12 Mai 2013 - 23:08 | |
| Bonne idée, Ygeronimi - surtout si tu places le tableau des EDIT dans un CONTAINER: insi, on peut le déplacer, le cacher/montrer ou l'activer/désactiver avec une seule commande ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: fonction grid Dim 12 Mai 2013 - 23:12 | |
| Tiens c'est pas bête ça, idée intéressante à creuser ! | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: fonction grid Dim 12 Mai 2013 - 23:41 | |
| Voilà comment ça marche: - Code:
-
' demo_grid_fait_par_des_EDIT.bas
label clic_cellule dim cellule%, ligne%, colonne%
creer_tableau(10,5,4,60) top 10,30 left 10,50
end
clic_cellule: cellule% = number_click - 10 ligne% = int((cellule%+4)/5) colonne% = cellule% -(ligne%-1)*5 message "Cellule="+str$(cellule%)+" Ligne="+str$(ligne%)+" Colonne%="+str$(colonne%) return
sub creer_tableau(obj%,ncol%,nlig%,w%) ' obj% = numéro d'objet de départ ' ncol% = nombre de colonnes ' nlig% = nombre de lignes ' w% = largeur d'une cellule ' ==> création d'un CONTAINER de numéro obj% ' ce container contient ncol%*nlig% objets EDIT dim_local c%, l%, o% container obj% o% = obj% width obj%,ncol%*(w%+5)+20 height obj%,nlig%*(20+5) + 30 for l%=1 to nlig% for c%=1 to ncol% o% = o% + 1 edit o% parent o%,obj% top o%,20+(l%-1)*(20+5) left o%,10+(c%-1)*(w%+5) width o%,w% on_click o%,clic_cellule text o%,str$(o%-obj%) : ' <=== supprimer cette ligne ! next c% next l% end_sub
Dernière édition par Klaus le Lun 13 Mai 2013 - 1:44, édité 1 fois | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 13 Mai 2013 - 0:09 | |
| L' avantage d' un tableau d' "edit" c'est que l'on peut jouer avec la couleur du fond et la couleur du texte. et je dirai même avec le texte lui même, certaines police possèdent des pictogrammes. Ainsi on peut faire progresser un point sur un damier style, la position d'un robot sur un plan de 10 cases X 10 cases... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: fonction grid Lun 13 Mai 2013 - 0:32 | |
| Et voici le même programme avec une coloration aléatoire des cellules: - Code:
-
' demo_grid_fait_par_des_EDIT.bas
label clic_cellule dim cellule%, ligne%, colonne%
creer_tableau(10,5,4,60) top 10,30 left 10,50
end
clic_cellule: cellule% = number_click - 10 ligne% = int((cellule%+4)/5) colonne% = cellule% -(ligne%-1)*5 message "Cellule="+str$(cellule%)+" Ligne="+str$(ligne%)+" Colonne%="+str$(colonne%) return
sub creer_tableau(obj%,ncol%,nlig%,w%) ' obj% = numéro d'objet de départ ' ncol% = nombre de colonnes ' nlig% = nombre de lignes ' w% = largeur d'une cellule ' ==> création d'un CONTAINER de numéro obj% ' ce container contient ncol%*nlig% objets EDIT dim_local c%, l%, o% container obj% o% = obj% width obj%,ncol%*(w%+5)+20 height obj%,nlig%*(20+5) + 30 for l%=1 to nlig% for c%=1 to ncol% o% = o% + 1 edit o% parent o%,obj% top o%,20+(l%-1)*(20+5) left o%,10+(c%-1)*(w%+5) width o%,w% color o%,rnd(255),rnd(255),rnd(255) on_click o%,clic_cellule text o%,str$(o%-obj%) : ' <=== supprimer cette ligne ! next c% next l% end_sub
Dernière édition par Klaus le Lun 13 Mai 2013 - 1:44, édité 1 fois | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: fonction grid Lun 13 Mai 2013 - 0:46 | |
| Salut Klaus Dans tes 2 codes, il y a une erreur de calcul de la ligne et de la colonne. Clique par exemple sur les cellules 5, 14 ou 19 et tu te rendras compte. Pour corriger l'erreur, modifier la ligne 16 comme ceci : (une fois encore, mauvais tour de la variable entière % !) - Code:
-
ligne% = int((cellule%+4)/5) Suggestion : ça serait mieux si les cellules sont carrées ( hauteur = largeur) | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 13 Mai 2013 - 1:45 | |
| Voilà un déplacement dans un grid de edit - Code:
-
Dim e% label Haut,Bas,Gauche,Droite
Create_damier() Boutons() ' entrez la case de départ du point en paramètre (1 à 100) Init_point(1) ActiveButton() end
Sub Create_damier() Dim_Local x%,y%,z%,Tp%,Lig%,Col%,T%,L% Lig%=10 :Col%=10:T%=25:L%=25 for x%=1 to 10 L%=L%+25 Tp%=T%+25 for y%=1 to 10 z%=z%+1 Tp%=Tp%+25 Edit z% :top z%,Tp% :left z%,L% :height z%,20: width z%,20:text z%,"n" font_name z%,"Webdings" color z%,200,250,250:font_color z%,200,250,250 next y% next x% End_Sub
Sub Boutons() alpha 999: top 999,270 : left 999,380 caption 999,"Déplacer le point":font_name 999,"arial" ' bouton haut Button 1000 :top 1000,300 :left 1000,400 :height 1000,21 : width 1000,21 caption 1000,"5":font_name 1000,"Webdings" :font_size 1000,12 on_click 1000,Haut:cursor_point 1000 ' bouton gauche button 1001 :top 1001,325 :left 1001,375 :height 1001,21 : width 1001,21 caption 1001,"3":font_name 1001,"Webdings" :font_size 1001,12 on_click 1001,Gauche :cursor_point 1001 ' bouton droite button 1002 :top 1002,325 :left 1002,425 :height 1002,21 : width 1002,21 caption 1002,"4":font_name 1002,"Webdings" :font_size 1002,12 on_click 1002,Droite :cursor_point 1002 ' bouton bas button 1003 :top 1003,350 :left 1003,400 :height 1003,21 : width 1003,21 caption 1003,"6":font_name 1003,"Webdings" :font_size 1003,12 on_click 1003,Bas :cursor_point 1003 End_Sub
Sub Init_Point(P%) e%=P% Font_color P%,0,0,255 End_Sub
Haut: e%=e%-1 font_color e%+1,200,250,250 font_color e%,0,0,255 caption 0,str$(e%) ActiveButton() return
Bas: e%=e%+1 font_color e%-1,200,250,250 font_color e%,0,0,255 caption 0,str$(e%) ActiveButton() return
Gauche: e%=e%-10 font_color e%+10,200,250,250 font_color e%,0,0,255 caption 0,str$(e%) ActiveButton() return
Droite: e%=e%+10 font_color e%-10,200,250,250 font_color e%,0,0,255 caption 0,str$(e%) ActiveButton() return
Sub ActiveButton() Dim_Local x%,h1%,b1%,g1%,d1% h1%=0:b1%=0:g1%=0:d1%=0 ' haut for x%=1 to 91 step 10 if e%=x% :h1%=1 :exit_for:end_if next x% if h1%=1:inactive 1000:else: active 1000:end_if ' bas for x%=10 to 100 step 10 if e%=x% :b1%=1 :exit_for:end_if next x% if b1%=1:inactive 1003:else: active 1003:end_if ' gauche for x%=1 to 10 if e%=x% :g1%=1 :exit_for:end_if next x% if g1%=1:inactive 1001:else: active 1001:end_if ' droite for x%=91 to 100 if e%=x% :d1%=1 :exit_for:end_if next x% if d1%=1:inactive 1002:else: active 1002:end_if End_Sub Edit : il y avait des paramètres en trop... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 13 Mai 2013 - 3:30 | |
| Ca y est ! je suis en plein délire !!! Papydall m'a contaminé !!! J' ai ajouté un mode déplacement aléatoire : - Code:
-
Dim e%,a%,gl%(100),gc%(100) label Haut,Bas,Gauche,Droite,Alea
Create_damier() Boutons() ' entrez la case de départ du point en paramètre (1 à 100) Init_point(1) ActiveButton() end
Sub Create_damier() Dim_Local x%,y%,z%,Tp%,Lig%,Col%,T%,L% Lig%=10 :Col%=10:T%=25:L%=25 for x%=1 to 10 L%=L%+25 Tp%=T%+25 for y%=1 to 10 z%=z%+1 gc%(z%)=x% :gl%(z%)=y% Tp%=Tp%+25 Edit z% :top z%,Tp% :left z%,L% :height z%,20: width z%,20:text z%,"n" font_name z%,"Webdings" color z%,200,250,250:font_color z%,200,250,250 next y% next x% End_Sub
Sub Boutons() alpha 999: top 999,270 : left 999,380 caption 999,"Déplacer le point":font_name 999,"arial" ' bouton haut Button 1000 :top 1000,300 :left 1000,400 :height 1000,21 : width 1000,21 caption 1000,"5":font_name 1000,"Webdings" :font_size 1000,12 on_click 1000,Haut:cursor_point 1000 hint 1000,"Déplacemant vers le haut" ' bouton gauche button 1001 :top 1001,325 :left 1001,375 :height 1001,21 : width 1001,21 caption 1001,"3":font_name 1001,"Webdings" :font_size 1001,12 on_click 1001,Gauche :cursor_point 1001 hint 1001,"Déplacement vers la gauche" ' bouton droite button 1002 :top 1002,325 :left 1002,425 :height 1002,21 : width 1002,21 caption 1002,"4":font_name 1002,"Webdings" :font_size 1002,12 on_click 1002,Droite :cursor_point 1002 hint 1002,"Déplacement vers la droite" ' bouton bas button 1003 :top 1003,350 :left 1003,400 :height 1003,21 : width 1003,21 caption 1003,"6":font_name 1003,"Webdings" :font_size 1003,12 on_click 1003,Bas :cursor_point 1003 hint 1003,"Déplacement vers le bas" ' bouton aléatoire button 1004 :top 1004,325 :left 1004,400 :height 1004,21 : width 1004,21 caption 1004,"A":font_name 1004,"arial" :font_Bold 1004 on_click 1004,Alea :cursor_point 1004 hint 1004,"Déplacement Aléatoire" End_Sub
Sub Init_Point(P%) e%=P% Font_color P%,0,0,255 End_Sub
Haut: e%=e%-1 font_color e%+1,200,250,250 font_color e%,0,0,255 caption 0,"Case actuelle : "+str$(e%) ActiveButton() return
Bas: e%=e%+1 font_color e%-1,200,250,250 font_color e%,0,0,255 caption 0,"Case actuelle : "+str$(e%) ActiveButton() return
Gauche: e%=e%-10 font_color e%+10,200,250,250 font_color e%,0,0,255 caption 0,"Case actuelle : "+str$(e%) ActiveButton() return
Droite: e%=e%+10 font_color e%-10,200,250,250 font_color e%,0,0,255 caption 0,"Case actuelle : "+str$(e%) ActiveButton() return
Alea: a%=int(rnd(100))+1 Deplacement_Alea(a%) return
Sub ActiveButton() Dim_Local b%,h1%,b1%,g1%,d1% h1%=0:b1%=0:g1%=0:d1%=0 ' haut for b%=1 to 91 step 10 if e%=b% :h1%=1 :exit_for:end_if next b% if h1%=1:inactive 1000:else: active 1000:end_if ' bas for b%=10 to 100 step 10 if e%=b% :b1%=1 :exit_for:end_if next b% if b1%=1:inactive 1003:else: active 1003:end_if ' gauche for b%=1 to 10 if e%=b% :g1%=1 :exit_for:end_if next b% if g1%=1:inactive 1001:else: active 1001:end_if ' droite for b%=91 to 100 if e%=b% :d1%=1 :exit_for:end_if next b% if d1%=1:inactive 1002:else: active 1002:end_if End_Sub
Sub Deplacement_Alea(tir%) Dim_local x%,y%,i% Dim_local x1%,y1% Dim_local z%,w% Dim_local x2%,y2%
' ligne PapydallProtect for i%=1000 to 1004 : inactive i%:next i%
x%=gc%(tir%) y%=gl%(tir%) x1%=gc%(e%) y1%=gl%(e%) caption 0,"case ( "+str$(x1%)+" ; "+str$(y1%)+" ) va en case ( "+str$(x%)+" ; "+str$(y%)+" )" if x%>x1% x2%=x%-x1% for w%=1 to x2% e%=e%+10 font_color e%-10,200,250,250 font_color e%,0,0,255 wait 500 next w% else x2%=x1%-x% for w%=x2% to 1 step -1 e%=e%-10 font_color e%+10,200,250,250 font_color e%,0,0,255 wait 500 next w% end_if
if y%>y1% y2%=y%-y1% for z%=1 to y2% e%=e%+1 font_color e%-1,200,250,250 font_color e%,0,0,255 wait 500 next z% else y2%=y1%-y% for z%=y2% to 1 step -1 e%=e%-1 font_color e%+1,200,250,250 font_color e%,0,0,255 wait 500 next z% end_if ' levée de la protection for i%=1000 to 1004 : active i% :next i% ' verif des boutons cliquables ActiveButton() ' PapydallView caption 0,"Case actuelle : "+str$(e%) End_Sub Edit : Débug de deux variables x% qui se croisaient et faisaient des étincelles même en local... Inactivation du bouton "A" sur clic et activation après traitement ( pour les impulsifs du clic ) Mise en Place d'une ligne PapydallProtect Ajout d'une ligne PapydallView
Dernière édition par ygeronimi le Lun 13 Mai 2013 - 17:39, édité 5 fois (Raison : débug une variable local x% en croisait une autre du même nom) | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: fonction grid Lun 13 Mai 2013 - 3:39 | |
| Hé contaminé ! Ta Sub Deplacement_Alea(tir%) est BOGUEE !!!
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 13 Mai 2013 - 3:50 | |
| Qu' est ce qui cloche ? ca fonctionne au poil chez moi... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: fonction grid Lun 13 Mai 2013 - 3:57 | |
| Clique sur A 2 fois ou plus sans attendre la fin du déplacement et tu verras. Pour déboguer : ajoute ces 2 lignes , dans SUB Deplacement_Alea(tir%), (l’une au début et l’autre à la fin) - Code:
-
inactive 1004 .... active 1004
Pour interdire à un impulsif de cliquer plus vite que son ombre !!! (surtout s'il a une souris ultra sensible comme la mienne) | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 13 Mai 2013 - 4:10 | |
| J' ai changé le nom d'une variable car même local deux x% qui se croisent font des étincelles... je vais voir pour les impulsifs de du clic... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 13 Mai 2013 - 4:17 | |
| Plusieurs corrections ont été apportées dans le code plus haut dans le post (cf les "Edit" ) Cela devrait être fonctionnel maintenant... J' ai retiré quelques lignes qui posaient un problème de récursivité avec les déclarations de variable locales. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: fonction grid Lun 13 Mai 2013 - 7:58 | |
| Intéressant comme approche | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: fonction grid Lun 13 Mai 2013 - 11:10 | |
| Ygeronim a sorti des sentiers battus ! Mais il y a du pain sur la planche. J’ai provoqué 2 erreurs (en cliquant sur A puis sur gauche ou droite ou haut ou bas avant que A ne termine sa balade) 1-/ Number object out of range. Line 1562-/ Object does not exists (not created). Line 93Suggestion de correction : Lorsque tu choisis A (pour aléatoire), INACTIVE les autres boutons jusqu’à la fin du traitement (puis ACTIVE-les), sinon, tu sais, moi je clique sur tout ce qui est cliquable même si je sais pertinemment que ce n’est pas correct !!!! Tu n'as qu'à interdire une chose pareille ! Bon amusement! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: fonction grid Lun 13 Mai 2013 - 11:33 | |
| Pas faux Ygeronimi: Penses à rajouter la procédure: AntiCliqueurFou() ou ProtectPapydall() un truc du genre.
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: fonction grid Lun 13 Mai 2013 - 11:41 | |
| C’est tout à fait ça, Jicehel ! Tu t’exprimes mieux que moi.
| |
| | | mindstorm
Nombre de messages : 685 Age : 55 Localisation : charente Date d'inscription : 13/02/2013
| Sujet: Re: fonction grid Lun 13 Mai 2013 - 12:16 | |
| Attention papydall ne s ennuie plus il clique | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: fonction grid Lun 13 Mai 2013 - 12:51 | |
| Moi j'aime bien quand il s'ennuie. Ca lui donne des idée créatives En plus avec lui, on ne sait pas ce qui va y avoir en sortie: un dessin ? un tuto ? un petit jeu ? un inutilitaire ? une procédure ? un délire sur le forum ? Là par exemple, on se demande ce qu'il nous mijote, non ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 13 Mai 2013 - 13:45 | |
| Ca y est le code a été modifié Mise en place d'une ligne PapydallProtect et suppression des verif "ActiveButton" inutiles. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: fonction grid Lun 13 Mai 2013 - 16:48 | |
| Ça c’est beaucoup mieux ! Hé, doucement, ne cries pas VICTOIRE ! Quand je clique sur A, le CAPTION 0 affiche la case de départ et celle d’arrivée : case quelque chose va en case something : c’est bien, rien à dire ! Mais quand c’est fait, pourquoi ce même message s’entête-t-il à rester affiché? N’est-il pas plus raisonnable (du point de vue Papydallien) que le caption affiche la case en cours (c.à.d la case atteinte) ? je pinaille tu pinailles Il/elle pinaille nous pinaillons vous pinaillez Ils/elles pinaillent
Maintenant cessons de pinailler !!!! Les occasions de le faire n'en manquent pas!
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 13 Mai 2013 - 17:40 | |
| Ajout d'une ligne "PapydallView" ! A l'arrivée sur la case de destination, le caption 0 affiche le numéro de la case active... Le code va changer de nom ! je vais l' appeler " PapydallGrid " ! | |
| | | Contenu sponsorisé
| Sujet: Re: fonction grid | |
| |
| | | | fonction grid | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |