FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Gestionnaire de Projets Panoramic
par Minibug Aujourd'hui à 2:10

» Mah-Jong européen new-look
par jjn4 Hier à 16:35

» Button_picture
par pascal10000 Hier à 11:41

» Pourquoi le compilateur stagne
par Minibug Hier à 11:09

» 4 (en analyse): SYNEDIT_TARGET_IS_OBJECT devient inactif
par Jack Hier à 10:09

» 3 (en analyse): Mauvaise interprétation du string "THEN"
par Jack Hier à 10:03

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par Marc Hier à 10:00

» KGF_dll - nouvelles versions
par pascal10000 Mer 13 Déc 2017 - 17:27

» track_bar circulaire
par Klaus Mar 12 Déc 2017 - 13:54

» API Windows
par Klaus Mar 12 Déc 2017 - 3:21

» Cartes de voeux, menus, etc.
par JL35 Lun 11 Déc 2017 - 17:48

» a l'aide klaus
par Minibug Lun 11 Déc 2017 - 11:42

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Lun 11 Déc 2017 - 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 Sélection sur un grid

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Invité
Invité



MessageSujet: Sélection sur un grid   Dim 15 Mar 2015 - 12: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.
Revenir en haut Aller en bas
Minibug

avatar

Nombre de messages : 2413
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Sélection sur un grid   Dim 15 Mar 2015 - 13: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)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://gpp.panoramic.free.fr
Invité
Invité



MessageSujet: Re: Sélection sur un grid   Dim 15 Mar 2015 - 17: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.
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10259
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélection sur un grid   Dim 15 Mar 2015 - 17: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: Sélection sur un grid   Dim 15 Mar 2015 - 17: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. bounce

C'est le clic sur le grid qui l'envoi a l'événement.
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10259
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélection sur un grid   Dim 15 Mar 2015 - 18: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: Sélection sur un grid   Dim 15 Mar 2015 - 18: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.
Revenir en haut Aller en bas
papydall

avatar

Nombre de messages : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Sélection sur un grid   Dim 15 Mar 2015 - 18: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
 
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Sélection sur un grid   Dim 15 Mar 2015 - 19: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+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Sélection sur un grid   Dim 15 Mar 2015 - 19: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 Very Happy  Razz  Wink . 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+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Sélection sur un grid   Dim 15 Mar 2015 - 21: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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Invité
Invité



MessageSujet: Re: Sélection sur un grid   Dim 15 Mar 2015 - 22: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.
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10259
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélection sur un grid   Dim 15 Mar 2015 - 23: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).
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: Sélection sur un grid   Lun 16 Mar 2015 - 2: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.
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10259
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélection sur un grid   Lun 16 Mar 2015 - 3: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Invité
Invité



MessageSujet: Re: Sélection sur un grid   Lun 16 Mar 2015 - 16: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é.
Revenir en haut Aller en bas
Klaus

avatar

Nombre de messages : 10259
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélection sur un grid   Lun 16 Mar 2015 - 19: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
silverman

avatar

Nombre de messages : 475
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: Sélection sur un grid   Ven 20 Mar 2015 - 16: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?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10259
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Sélection sur un grid   Ven 20 Mar 2015 - 16: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.

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jean Claude

avatar

Nombre de messages : 5086
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Sélection sur un grid   Ven 20 Mar 2015 - 18: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+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5613
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Sélection sur un grid   Ven 20 Mar 2015 - 19: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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Invité
Invité



MessageSujet: Re: Sélection sur un grid   Ven 20 Mar 2015 - 21: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.
Revenir en haut Aller en bas
Contenu sponsorisé




MessageSujet: Re: Sélection sur un grid   

Revenir en haut Aller en bas
 
Sélection sur un grid
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Petit exercice autout du GRID
» IF et GRID
» GRID avec couleur et sélection
» Comment faire une sélection multiple
» sauvegarde des grid

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: