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 |
|
|
| Sélection sur un grid | |
| | Auteur | Message |
---|
Invité Invité
| Sujet: Sélection sur un grid Dim 15 Mar 2015 - 10:59 | |
| Voila Jack: Sans trop réfléchir, j'ai sélectionné toute une zone d'un grid dans mon programme pour vouloir l'effacer. Je sais ce n'est pas la bonne méthode, mais sur le coup je n'y ai pas pensé. J'ai un sous-programme: - Code:
-
clic_to_grid: x= grid_x_to_column(213,mouse_x_position(213)) y= grid_y_to_row(213,mouse_y_position(213)) Évidemment je me retrouve avec une erreur car cela donne une réponse 0 lors de l'appel du clic sur la ligne de X = ... J'ai regardé si select_read$(...) était prévu pour GRID, mais ce n'est pas le cas, donc je ne peux pas faire ceci: - Code:
-
IF select_read$(N° du grid) <> "" then... Je ne vois pas comment on peut éviter ce genre d'erreur. Dans mon cas, cela n'a aucune importance, il y a une sauvegarde du memo, je relance et je repart, mais celui qui a un bon programme, et qui est stoppé par cette erreur, perd ses données. Je ne suggère rien. A toi de voir la possibilité d'éviter cette erreur. |
| | | Minibug
Nombre de messages : 4570 Age : 58 Localisation : Vienne (86) Date d'inscription : 09/02/2012
| Sujet: Re: Sélection sur un grid Dim 15 Mar 2015 - 11:22 | |
| Bonjour Cosmos70, Peut être je n'ai pas compris ta demande mais pourquoi ne pas utiliser GRID_READ$() - Code:
-
grid 1
grid_write 1,2,3,"Bonjour"
MESSAGE grid_read$(1,2,3)
| |
| | | Invité Invité
| Sujet: Re: Sélection sur un grid Dim 15 Mar 2015 - 15:30 | |
| Merci Minibug, mais c'est pas le problème. J'ai fait un petit programme pour le teste: - Code:
-
error_french label clic_to_grid dim x,y grid 213 : on_click 213,clic_to_grid : full_space 213 END ====================== clic_to_grid: x= grid_x_to_column(213,mouse_x_position(213)) y= grid_y_to_row(213,mouse_y_position(213)) caption 0,str$(x)+" "+str$(y) return Mais avec ce programme je n'arrive pas a reproduire le problème. J'ai donc relancé mon programme, et voici le résultat: La partie concernée est: - Code:
-
clic_to_grid: x= grid_x_to_column(213,mouse_x_position(213)) y= grid_y_to_row(213,mouse_y_position(213)) text 214,grid_read$(213,y,x) : on_change 214,envoi_grid : set_focus 214 if val(grid_read$(213,1,1)) < y then grid_write 213,1,1,y if val(grid_read$(213,1,2)) < x then grid_write 213,1,2,x return Et c'est la ligne: x= grid_x_to_column(213,mouse_x_position(213))Donc sur une sélection d'un grid, même si le petit programme que j'ai mis ne dit rien, on peut avoir un message d'erreur, d'où l'objet de ce poste. J'avais pris le grid pour un memo lors de la sélection ce matin. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sélection sur un grid Dim 15 Mar 2015 - 15:35 | |
| Eh bien, juste avant la ligne 303, ajoute une ligne du type - Code:
-
message "y="+str$(y)+" x="+str$(x)+" "+... etc et regarde les valeurs de tes variables... | |
| | | Invité Invité
| Sujet: Re: Sélection sur un grid Dim 15 Mar 2015 - 15:46 | |
| Bonjour Klaus. X est le numéro de la colonne du grid. Je ne peux l'obtenir quant cliquant sur le grid. Le retour est soit la valeur de X, soit le message d'erreur, et celui-ci ne donne pas la valeur exacte. La valeur de x avant le clic ne sert à rien. C'est le clic sur le grid qui l'envoi a l'événement. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sélection sur un grid Dim 15 Mar 2015 - 16:05 | |
| Tu fais ceci: - Code:
-
clic_to_grid: x= grid_x_to_column(213,mouse_x_position(213)) y= grid_y_to_row(213,mouse_y_position(213)) message "x="+str$(x)+" y="+str$(y) text 214,grid_read$(213,y,x) : on_change 214,envoi_grid : set_focus 214 if val(grid_read$(213,1,1)) < y then grid_write 213,1,1,y if val(grid_read$(213,1,2)) < x then grid_write 213,1,2,x return et tu comprendras pourquoi tu as une anomalie... | |
| | | Invité Invité
| Sujet: Re: Sélection sur un grid Dim 15 Mar 2015 - 16:34 | |
| Je ne peux pas lire le message. Le programme est stoppé à la ligne de x=... la première ligne du sous-programme.
En validant le message d'erreur, le programme se ferme.
Je montre un éventuel problème.
Si tu as encore le programme pour lequel tu m'as répondu, tu peux faire l'essai. Tu le lances et tu cliques sur le combo "feuille", tu choisis :Affectation_variables.txt.
Dans le memo, tu vas à la fin, et tu slectionnes toutes les lignes: [TABLE.....[/TABLE] Puis tu cliques sur le premier mémo en haut à gauche, et tu choisis TABLE. Le grid est normalement rempli sur la fenêtre qui s'est ouverte. Tu fais la sélection de tout le grid, comme si tu pensais avoir un memo, normalement tu a le message d'erreur.
Là j'ai 160km à faire, je dois partir pour Besançon. |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Sélection sur un grid Dim 15 Mar 2015 - 16:40 | |
| C’est peut-être hors sujet, mais j’aimerais faire un petit rappel (que tout le monde connait) Avant d’utiliser la fonction VAL(QuelqueChose$), il est prudent de tester si quelqueChose$ contient effectivement une valeur numérique, sinon on a un message d’erreur. - Code:
-
if numeric(QuelqueChose) > 0 …. Traitements … Else Message QuelqueChose$ + " contient une valeur non numérique " End_if | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Sélection sur un grid Dim 15 Mar 2015 - 17:29 | |
| Bien vu Papydall, - Code:
-
dim x,y label clic_to_grid,envoi_grid grid 213 : on_click 213,clic_to_grid edit 214 : left 214,350
END
clic_to_grid:
x= grid_x_to_column(213,mouse_x_position(213)) y= grid_y_to_row(213,mouse_y_position(213)) text 214,grid_read$(213,y,x) : on_change 214,envoi_grid : set_focus 214
if grid_read$(213,y,x)="" then return ' ou if numeric(grid_read$(213,y,x))="" then return
if val(grid_read$(213,1,1)) < y then grid_write 213,1,1,y if val(grid_read$(213,1,2)) < x then grid_write 213,1,2,x return
envoi_grid: message "envoi_grid" return
A+ | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Sélection sur un grid Dim 15 Mar 2015 - 17:38 | |
| @Cosmos Il y a autre chose qui cloche, pour écrire dans un grid il faut un string. Heu.. je veux dire: dans le code pas le programmeur . Je n'ai pas pu m'en empêcher ! - Code:
-
if val(grid_read$(213,1,1)) < y then grid_write 213,1,1,y if val(grid_read$(213,1,2)) < x then grid_write 213,1,2,x
à remplacer par: - Code:
-
if val(grid_read$(213,1,1)) < y then grid_write 213,1,1,str$(y) if val(grid_read$(213,1,2)) < x then grid_write 213,1,2,str$(x)
A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Sélection sur un grid Dim 15 Mar 2015 - 19:49 | |
| - Jean Claude a écrit:
- Bien vu Papydall,
- Code:
-
dim x,y label clic_to_grid,envoi_grid grid 213 : on_click 213,clic_to_grid edit 214 : left 214,350
END
clic_to_grid:
x= grid_x_to_column(213,mouse_x_position(213)) y= grid_y_to_row(213,mouse_y_position(213)) text 214,grid_read$(213,y,x) : on_change 214,envoi_grid : set_focus 214
if grid_read$(213,y,x)="" then return ' ou if numeric(grid_read$(213,y,x))="" then return
if val(grid_read$(213,1,1)) < y then grid_write 213,1,1,y if val(grid_read$(213,1,2)) < x then grid_write 213,1,2,x return
envoi_grid: message "envoi_grid" return
A+ Ben non Il faut faire - Code:
-
if numeric(grid_read$(213,y,x)) = 0 then return
| |
| | | Invité Invité
| Sujet: Re: Sélection sur un grid Dim 15 Mar 2015 - 20:10 | |
| Je viens de rentrer. Je pourrais presque dire que vous êtes sujet! . Je remets un e partie du code avec cette fois les n° de lignes: - Code:
-
301| clic_to_grid: 302| 303| x= grid_x_to_column(213,mouse_x_position(213)) 304| y= grid_y_to_row(213,mouse_y_position(213)) 305| message "x="+str$(x)+" y="+str$(y L'erreur se fait sur la ligne: x= grid_x_to_column(213,mouse_x_position(213))C'est à dire la ligne 303. Cette ligne sert a trouver le de n° de colonne cliquée et la suivante le n° de ligne, selon la méthode de Jack. En aucun cas je ne lis le contenu d'une cellude de grid. Ors un message d'erreur venant de la ligne 303, ne permet pas de lire les lignes 304 et 305, et suivante, vu qu'en validant le message d'erreur, le programme s'arrète. Donc si je regarde le manuel sur grid_x_column() on doit lire une valeur supérieur a zéro, ce qui n'est pas le cas ici. Dans mon programme en faisant (par erreur je l'accorde une sélection de plusieurs cellules), j'arrive a avoir ce message d'erreur, d'où l'objet de ce poste, car je ne vois pas comment on peut l'éviter. Mon programme c'est pas grave, mais je crois qu'il est nécessaire de pouvoir éviter ce message dans vos programmes selon son importance. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sélection sur un grid Dim 15 Mar 2015 - 21:15 | |
| alors, déplace la ligne 305 en 302, comme suit: - Code:
-
301| clic_to_grid: 302| message "x="+str$(mouse_x_position(213)) 303| x= grid_x_to_column(213,mouse_x_position(213)) 304| y= grid_y_to_row(213,mouse_y_position(213)) 305|
et tu sauras ce que la fonction retourne. A l'évidence, c'est la valeur 0 qui revient. Mais je pense qu'après un clic, tu devrais prendre la fonction MOUSE_X_LEFT_DOWN(213) au lieu de MOUSE_X_POSITION(213). | |
| | | Invité Invité
| Sujet: Re: Sélection sur un grid Lun 16 Mar 2015 - 0:12 | |
| Je viens de m'apercevoir que je me suis trompé de rubrique. J'ai mis ce poste dans "à l'aide", alors que j'aurai du choisir "Présentation et bavardage".
Mon but n'était pas de résoudre mon propre problème, mais de réfléchir sur cette possibilité d'erreur sur un grid. Relire le sujet de présentation. Personnellement je pense qu'une possibilité de sélection sur select_read$() sur un grid pourrait être une possibilité. Il suffirait alors de faire ceci: if select_read$(n du grid) = "" recherche de la colonne et de la ligne end_if
De cette façon si il y a sélection, on ne cherche pas l'endroit cliqué. Mais il doit y avoir d'autres possibilité.
Ce post n'est pas fait pour déboguer mon programme, mais pour montrer un éventuel problème. Certe il n'a pas été compris au départ, mais maintenant je pense que vous avez compris où je voulais en venir.
Pour ma part j'en reste là, j'ai d'ailleurs le retour de accès violation sur mon programme, ce qui n'est pas réjouissant. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sélection sur un grid Lun 16 Mar 2015 - 1:10 | |
| Effectivement, une telle fonction manque. Je viens de poster une nouvelle version de KGF.dll qui contient la nouvelle fonction GetSelectedGridText qui fait exactement cela. Regarde ce petit programme de démo: - Code:
-
label clic dim s$, res%, sep$ grid 1 grid_write 1,2,2,"aaa" grid_write 1,2,3,"bbb" grid_write 1,3,3,"ccc" on_click 1,clic dll_on "KGF.dll"
end
clic: s$ = string$(255," ") sep$ = "\" res% = DLL_call3("GetSelectedGridText",object_internal(1),adr(sep$),adr(s$)) s$ = trim$(s$) message s$ return
Il suffit de sélectionner un rectangle par la souris. En relâchant la souris, on a le texte... | |
| | | Invité Invité
| Sujet: Re: Sélection sur un grid Lun 16 Mar 2015 - 14:08 | |
| Je ferais un essai ces jours-ci. Trop a faire, et il me semble que tu as dis qu'il y avait un problème avec kgf.
J'ai vu que tu avais prévu le cas d'avoir des séparateurs entre les cellules. Je me dis a ce moment là que ce ne serait pas mal d'avoir l'inverse: avoir une chaine du genre: un|deux|trois®1|2|3
Au lieu d'être obligé de passer par un edit, et de choisir cellule par cellule pour modifier, ... J'y pense c'est facile a faire en basic, désolé. C'est d’ailleurs ce que je fais : je lis une partie sélectionnée et je rempli mon grid. Il est vrai que c'est plus compliqué. |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sélection sur un grid Lun 16 Mar 2015 - 17:09 | |
| Une mise à jour de cellules multiples, à partir d'une chaîne contenant le nouveau contenu avec des séparateurs ? Je vais y réfléchir. | |
| | | silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Sélection sur un grid Ven 20 Mar 2015 - 14:18 | |
| Bonjour à tous!
@cosmos70 avec le petit code de test que tu as mis dans ton 2ieme post, j'ai obtenu la même erreur que toi. J'ai déplacé la fenetre de travail puis j'ai essayé de sélectionner plusieurs cellules: de 5,5 à -1,-1 c a d que j'ai relaché le bouton de la souris en dehors de la fenetre de travail. L'erreur se produit quand je relache le bouton de la souris soit en dehors et à gauche, soit en dehors et au dessus de la fenetre. Une solution serait de tester si la souris est dans la fenetre de travail avant de faire une sélection sur le grid, mais je ne sais pas si une commande existe pour faire ça.
NB: je suis nouveau dans la communauté, et je ne suis pas encore familier avec tous les termes, form, grid, etc... fenetre de travail et form, c'est pareil? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Sélection sur un grid Ven 20 Mar 2015 - 14:34 | |
| Bienvenu, Silverman ! Heureux de te compter parmi nous ! - Citation :
- fenetre de travail et form, c'est pareil?
Pour la terminologie de Cosmos70, il te répondra. En principe, une fenêtre Windows, c'est ce qu'on connaît tous. Et en Panoramic, on crée une fenêtre par la commande FORM, et par facilité, on en parle souvent comme d'une FORM. Mais c'est bien une fenêtre dans le sens Windows. Et en Panoramic, une fenêtre est à priori non-modale, c'est-à-dire son ouverture ne bloque pas l'accès aux autres fenêtres ouvertes. | |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Sélection sur un grid Ven 20 Mar 2015 - 16:47 | |
| Bienvenu, Silverman.
J'ajoute à la réponse de Klaus, que certains, dont je fais parti, emploient le masculin pour FORM en pensant à un FORMulaire qui sert à y déposer les objets Panoramic. Mais fenêtre Panoramic est sans doute plus approprié.
A+ | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Sélection sur un grid Ven 20 Mar 2015 - 17:30 | |
| Silverman, bienvenue parmi la communauté Panoramicienne. Personnellement, j’utilise le masculin pour nommer les objets Panoramic. Je dis donc un FORM, un LIST, un IMAGE, etc… dans le sens de : un objet FORM, un objet LIST, un objet IMAGE, etc..
Mais ce n’est qu’un détail et ça n’a aucune importance. Ce qui est important, c’est de se faire comprendre : et on se comprend parfaitement bien entre nous.
Bonne programmation en Panoramic. Au plaisir de te lire ! | |
| | | Invité Invité
| Sujet: Re: Sélection sur un grid Ven 20 Mar 2015 - 19:49 | |
| Bien, sois le bienvenu Silverman.
Donc, je ne suis plus tout seul a voir ce problème. Depuis c'est par intermittance. A la ligne : repeat : wait 100 : until scancode = 0, j'ai ajouté histoire de voir si il y a un changement, c'était un simple teste, j'ai ajouté la ligne: repeat : pause 100 : until scancode = 0.
Je ne sais pas si cela durera, mais l'accès violation ne se manigeste plus.
Pour ce qui est de la fenêtre, les autres ont tout dit. Pour ma part j'emploi fenêtre ou FORM, en relation avec la commande. Si je parle d'une autre fenêtre, j'emploi l'écran, ou je précise: fenêtre du bloc-notes ou autre.
En tout cas bienvenue à toi. |
| | | Contenu sponsorisé
| Sujet: Re: Sélection sur un grid | |
| |
| | | | Sélection sur un grid | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |