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 |
|
|
| Petit exercice autout du GRID | |
| | Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Petit exercice autout du GRID Ven 30 Mar 2012 - 23:49 | |
| J'ai fait un petit programme qui affiche un GRID de 15 lignes et 10 colonnes. En cliquant sur une cellule quelconque, 3 boutons s'affichent par-dessus la cellule: deux boutons pour charger un texte "XXX" et "YYY" dans la cellule, et un bouton pour effacer la cellule. Les boutons se déplacent selon les clics dans les cellules: - Code:
-
label click_grid, charger_x, charger_y, effacer
dim i%, lig%,col%, x%,y%
width 0,800 grid 100 : top 100,10 : left 100,10 grid_column 100,10 : grid_row 100,15 width 100,700 : height 100,400 on_click 100,click_grid for i%=2 to 10 grid_write 100,1,i%,"Colonne "+str$(i%) next i% for i%=2 to 15 grid_write 100,i%,1,"Ligne "+str$(i%) next i%
button 10 : hide 10 : height 10,12 : width 10,32 caption 10,"XXX" : on_click 10,charger_x button 11 : hide 11 : height 11,12 : width 11,32 caption 11,"YYY" : on_click 11,charger_y button 12 : hide 12 : height 12,12 : width 12,64 caption 12,"Effacer" : on_click 12,effacer
end
click_grid: y% = mouse_y_left_down(100) x% = mouse_x_left_down(100) if lig%>0 hide 10 hide 11 hide 12 end_if lig% = grid_y_to_row(100,y%) col% = grid_x_to_column(100,x%) top 10,(lig%-1)*25 + top(100) + 3 left 10,(col%-1)*65 + left(100)+ 3 top 11,(lig%-1)*25 + top(100) + 3 left 11,(col%-1)*65 + left(100)+ 3 + 32 top 12,(lig%-1)*25 + top(100) + 3 + 12 left 12,(col%-1)*65 + left(100)+ 3 show 10 show 11 show 12 return charger_x: grid_write 100,lig%,col%,"XXX" hide 10 hide 11 hide 12 return charger_y: grid_write 100,lig%,col%,"YYY" hide 10 hide 11 hide 12 return effacer: grid_write 100,lig%,col%,"" hide 10 hide 11 hide 12 return
C'est aussi un moyen d'interagir avec un GRID. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Petit exercice autout du GRID Sam 31 Mar 2012 - 0:50 | |
| Ca marche très bien. Bon, pour le moment, je n'en vois pas l'application immédiate, mais c'est un moyen simple en effet d'interagir avec une grid ... Ca me fait penser qu'un jour il faudra que je fasse une bataille navale et là, je pourrais utiliser ce principe | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: re:Petit exercice autout du GRID Sam 31 Mar 2012 - 1:07 | |
| Salut J'ai un message d'erreur au niveau de la ligne 34 " not correct a arithmetic expression" bonne nuit
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Petit exercice autout du GRID Sam 31 Mar 2012 - 1:11 | |
| Tu n'as certainement pas la dernière version instantanée du 13 février 2012: PANORAMIC V 0.9.23i5. C'est elle qui apporte les fonctions permettant de déterminer lignes et colonnes des cases à partir des coordonnées d'un clic souris. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Petit exercice autout du GRID Sam 31 Mar 2012 - 1:20 | |
| Salut Klaus ! J’ai essayé et ça marche. @Sergeauze : tu obtiens un message d’erreur pace que peut-être que tu utilises une version antérieure à la version 0.923i5 du 13 février 2012
| |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Petit exercice autout du GRID Sam 31 Mar 2012 - 1:32 | |
| @Klaus : je n’ai pas vu ta réponse à Sergeauze, mais j’ai eu la même idée que toi. A +
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Petit exercice autout du GRID Sam 31 Mar 2012 - 9:31 | |
| Salut à tous,
çà me plait ce truc, je n'aurai pas eu l'idée de mettre des boutons dans une cellule d'un Grid. Des applications j'en vois des tonnes...
Merci pour l'astuce qui va certainement me servir
A+ | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: re:Petit exercice autout du GRID Sam 31 Mar 2012 - 16:11 | |
| Salut Vous avez surement raison;je n'ai pas la derniere version intermediaire . Elle n'est plus disponible avec le lien fourni par Jack. J'attendrai que la prochaine paraisse. Merci à Klaus pour toute ses innovations dont il nous fait profiter au quotidien . Et à plus tard | |
| | | Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Re: Petit exercice autout du GRID Sam 31 Mar 2012 - 17:14 | |
|
Dernière édition par Jack le Dim 29 Avr 2012 - 22:04, édité 1 fois | |
| | | sergeauze
Nombre de messages : 391 Age : 72 Localisation : Hautes Alpes France Date d'inscription : 09/01/2010
| Sujet: re :Petit exercice autout du GRID Sam 31 Mar 2012 - 18:55 | |
| Merci Jack je me suis heurté à un subtilite de la validation du chargement: On doit copier les mots : "près de chez vous " :ça ne marche pas chez moi mais "pres de chez vous " :fonctionne! Désolé pour ce dérangement
| |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Petit exercice autout du GRID Sam 31 Mar 2012 - 21:53 | |
| J'ai fait évoluer mon exemple. Il y a maintenant des boutons à la place des cellules fixes du GRID, en haut et à gauche. En cliquant sur un de ces boutons, on sélectionne la colonne ou la ligne correspondante, et pour visualiser cette action, la colonne ou la ligne est remplacée par des données inutiles, mais bien visibles. Bien sûr, dans une application réelle, il faudrait remplacer ce remplissage par le traitement prévu pour la sélection d'une colonne ou d'une ligne: - Code:
-
label click_grid, charger_x, charger_y, effacer label select_ligne, select_colonne
dim i%, n%, lig%,col%, x%,y% dim type_selection% : ' 1 = colonne est sélectionnée dim id_selection% : ' 2 = ligne est sélectionnée
width 0,800 grid 100 : top 100,10 : left 100,10 grid_column 100,10 : grid_row 100,15 width 100,700 : height 100,400 on_click 100,click_grid for i%=2 to 10 grid_write 100,1,i%,"Colonne "+str$(i%) n% = 200 + i% button n% top n%, top(100) + 3 : left n%, (i%-1)*65 + left(100)+ 3 caption n%,"Colonne "+str$(i%) : width n%,64 on_click n%,select_colonne next i% for i%=2 to 15 grid_write 100,i%,1,"Ligne "+str$(i%) n% = 300 + i% button n% top n%, (i%-1)*25 + top(100) + 3 : left n%, left(100)+ 3 caption n%,"Ligne "+str$(i%) : width n%,64 on_click n%,select_ligne next i%
button 10 : hide 10 : height 10,12 : width 10,32 caption 10,"XXX" : on_click 10,charger_x button 11 : hide 11 : height 11,12 : width 11,32 caption 11,"YYY" : on_click 11,charger_y button 12 : hide 12 : height 12,12 : width 12,64 caption 12,"Effacer" : on_click 12,effacer
end
click_grid: y% = mouse_y_left_down(100) x% = mouse_x_left_down(100) if lig%>0 hide 10 hide 11 hide 12 end_if lig% = grid_y_to_row(100,y%) col% = grid_x_to_column(100,x%) top 10,(lig%-1)*25 + top(100) + 3 left 10,(col%-1)*65 + left(100)+ 3 top 11,(lig%-1)*25 + top(100) + 3 left 11,(col%-1)*65 + left(100)+ 3 + 32 top 12,(lig%-1)*25 + top(100) + 3 + 12 left 12,(col%-1)*65 + left(100)+ 3 show 10 show 11 show 12 return charger_x: grid_write 100,lig%,col%,"XXX" hide 10 hide 11 hide 12 return charger_y: grid_write 100,lig%,col%,"YYY" hide 10 hide 11 hide 12 return effacer: grid_write 100,lig%,col%,"" hide 10 hide 11 hide 12 return select_ligne: type_selection% = 2 : ' on a sélectionné une ligne id_selection% = number_click - 300 for i%=2 to 10 grid_write 100,id_selection%,i%,"*****" next i% return
select_colonne: type_selection% = 1 : ' on a sélectionné une colonne id_selection% = number_click - 200 for i%=2 to 15 grid_write 100,i%,id_selection%,"#####" next i% return
Cette technique permet d'avoir la fonctionnalité importante qui manque au GRID: la possibilité de sélectionner une ligne ou une colonne entières. Bien entendu, la caption des boutons aura la même valeur que les cellules fixes de la ligne 1 et de la colonne 1. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Petit exercice autout du GRID Sam 31 Mar 2012 - 23:14 | |
| Bien vu encore Une fonction utile... Je sens que tu vas finir par nous faire un petit tableur en Panoramic | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Petit exercice autout du GRID Dim 1 Avr 2012 - 9:40 | |
| Bravo Klaus et surtout merci,
L'objet GRID commence à nous dévoiler tout ses secrets cachés. La sélection de toutes les cellules d'une ligne ou d'une colonne avec possibilité de traiter les srtings "*****" et "#####" c'est très intéressant.
A+ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Petit exercice autout du GRID Dim 1 Avr 2012 - 10:19 | |
| En fait, les $ et # ne servent qu'à montrer comment on peut sélectionner une ligne ou une colonne. Voici une version plus évoluée: la grille est préremplie, et la sélection d'une ligne ou d'une colonne met la sélection en majuscules: - Code:
-
label click_grid, charger_x, charger_y, effacer label annuler_selection label select_ligne, select_colonne
dim i%, n%, lig%,col%, x%,y% dim type_selection% : ' 1 = colonne est sélectionnée : ' 2 = ligne est sélectionnée : ' 3 = cellule est sélectionnée (lig%,col%) dim id_selection% : ' ligne ou colonne sélectionnée
width 0,800 grid 100 : top 100,10 : left 100,10 grid_column 100,10 : grid_row 100,15 width 100,700 : height 100,400 on_click 100,click_grid for i%=2 to 10 grid_write 100,1,i%,"Colonne "+str$(i%) n% = 200 + i% button n% top n%, top(100) + 3 : left n%, (i%-1)*65 + left(100)+ 3 caption n%,"Colonne "+str$(i%) : width n%,64 on_click n%,select_colonne next i% for i%=2 to 15 grid_write 100,i%,1,"Ligne "+str$(i%) n% = 300 + i% button n% top n%, (i%-1)*25 + top(100) + 3 : left n%, left(100)+ 3 caption n%,"Ligne "+str$(i%) : width n%,64 on_click n%,select_ligne next i% for i%=2 to 15 for n%=2 to 10 grid_write 100,i%,n%,"case "+str$(i%)+","+str$(n%) next n% next i%
button 10 : hide 10 : height 10,12 : width 10,32 caption 10,"XXX" : on_click 10,charger_x button 11 : hide 11 : height 11,12 : width 11,32 caption 11,"YYY" : on_click 11,charger_y button 12 : hide 12 : height 12,12 : width 12,64 caption 12,"Effacer" : on_click 12,effacer
end
click_grid: gosub annuler_selection type_selection% = 3 y% = mouse_y_left_down(100) x% = mouse_x_left_down(100) if lig%>0 hide 10 hide 11 hide 12 end_if lig% = grid_y_to_row(100,y%) col% = grid_x_to_column(100,x%) grid_write 100,lig%,col%,upper$(grid_read$(100,lig%,col%)) top 10,(lig%-1)*25 + top(100) + 3 left 10,(col%-1)*65 + left(100)+ 3 top 11,(lig%-1)*25 + top(100) + 3 left 11,(col%-1)*65 + left(100)+ 3 + 32 top 12,(lig%-1)*25 + top(100) + 3 + 12 left 12,(col%-1)*65 + left(100)+ 3 show 10 show 11 show 12 return
charger_x: grid_write 100,lig%,col%,"XXX" hide 10 hide 11 hide 12 return charger_y: grid_write 100,lig%,col%,"YYY" hide 10 hide 11 hide 12 return effacer: grid_write 100,lig%,col%,"" hide 10 hide 11 hide 12 return
select_ligne: gosub annuler_selection type_selection% = 2 : ' on a sélectionné une ligne id_selection% = number_click - 300 for i%=2 to 10 grid_write 100,id_selection%,i%,upper$(grid_read$(100,id_selection%,i%)) next i% return
select_colonne: gosub annuler_selection type_selection% = 1 : ' on a sélectionné une colonne id_selection% = number_click - 200 for i%=2 to 15 grid_write 100,i%,id_selection%,upper$(grid_read$(100,i%,id_selection%)) next i% return
annuler_selection: if type_selection%=1 for i%=2 to 15 grid_write 100,i%,id_selection%,lower$(grid_read$(100,i%,id_selection%)) next i% end_if if type_selection%=2 for i%=2 to 10 grid_write 100,id_selection%,i%,lower$(grid_read$(100,id_selection%,i%)) next i% end_if if type_selection%=3 if lig%>0 hide 10 hide 11 hide 12 grid_write 100,lig%,col%,lower$(grid_read$(100,lig%,col%)) end_if end_if return
Evidemment, l'idéal, serait de pouvoir changer la couleur de fond des cellules, ou éventuellement les attributs graphiques comme italique ou gras, pour signaler la sélection d'une ligne ou d'une colonne. EDIT Le code ci-dessus gère maintenant aussi la sélection d'une cellule, et fait la distinction entre sélection de cellule, ligne ou colonne, et ce également pour l'annulation de la sélection. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Petit exercice autout du GRID Dim 1 Avr 2012 - 13:54 | |
| De mieux en mieux.
C'est vrai que la sélection d'une ligne ou colonne serait plus sympa avec une couleur pour le fond des céllules sélectionnées.
Du coup on en arrive à une nouvelle fonction du genre GRID_COLOR_CELLULE N,R,G,B. Mais çà, c'est une autre histoire....
Rectification GRID_COLOR_CELLULE N,L,C,R,G,B: N=N° du GRID, R= ligne (Row), C=colonne et R G B pour les couleurs
A+ | |
| | | Contenu sponsorisé
| Sujet: Re: Petit exercice autout du GRID | |
| |
| | | | Petit exercice autout du GRID | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |