PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV (versões anteriores) → [WD7.5] Menu contextuel par clic gauche sur colonne d'une table ?
[WD7.5] Menu contextuel par clic gauche sur colonne d'une table ?
Iniciado por Samuel MONTAGNE, fev., 18 2004 11:57 AM - 11 respostas
Publicado em fevereiro, 18 2004 - 11:57 AM
Bonjour.
J'ai dans une fenêtre, une table mémoire remplie par programmation.
Dans cette table, j'ai une colonne de type image dans lequelle j'affiche une
image d'un petit bouton.
Je souhaiterai, lors d'un clic GAUCHE sur cette colonne, afficher un menu
contextuel.

J'ai tenté d'associer un menu contextuel à la colonne puis à simuler le clic
droit sur cette colonne avec un postmessage, le menu ne s'ouvre pas.
Ensuite, j'ai associé un menucontextuel à la table et simulé un clic droit
SUR LA TABLE dans le code de clic de la colonne image (tjs avec un
postmessage). Là, le menu s'ouvre mais pas au bon endroit (il s'ouvre en
haut à gauche de la table).

Comment faire pour que le menu s'ouvre à la position du clic de la souris ?

Merci d'avance.

Samuel MONTAGNE
Publicado em fevereiro, 18 2004 - 2:02 PM
salut !

On 18-Feb-2004, "Samuel MONTAGNE" <samuel.montagne@free.fr> wrote:

Comment faire pour que le menu s'ouvre à la position du clic de la souris
?


Ben j'ai vu passer des infos sur ce sujet, mais je ne sais plus où ni quand
.... :-(
En tout cas, moi, sous WD 8, j'utilise ouvrepopup() et ouvrepopupposition()
qui sont des fonctions rudement pratiques !
Bon ... je sais ... c'est de la pub .... mais c'est vrai !

--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477
Publicado em fevereiro, 18 2004 - 3:23 PM
Merci de ce début de réponse mais malheureusement, je n'ai pas le budget
pour passer en WD8 pour le moment.
Il va falloir que je fasse avec les moyens du bord.

Quelqu'un à une autre idée ?????

<Marcel.berman@managingbusiness.be> a écrit dans le message de news:
40336547@news.pcsoft.fr...


salut !

On 18-Feb-2004, "Samuel MONTAGNE" <samuel.montagne@free.fr> wrote:

Comment faire pour que le menu s'ouvre à la position du clic de la

souris
?

Ben j'ai vu passer des infos sur ce sujet, mais je ne sais plus où ni

quand
... :-(
En tout cas, moi, sous WD 8, j'utilise ouvrepopup() et

ouvrepopupposition()
qui sont des fonctions rudement pratiques !
Bon ... je sais ... c'est de la pub .... mais c'est vrai !

--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477
Publicado em fevereiro, 18 2004 - 3:31 PM
c'est la fonction TableInfoXY(). Vous trouverez sa syntaxe dans l'aide .




Marcel.berman@managingbusiness.be wrote:


salut !

On 18-Feb-2004, "Samuel MONTAGNE" <samuel.montagne@free.fr> wrote:

Comment faire pour que le menu s'ouvre à la position du clic de la souris
?

Ben j'ai vu passer des infos sur ce sujet, mais je ne sais plus où ni quand
... :-(
En tout cas, moi, sous WD 8, j'utilise ouvrepopup() et ouvrepopupposition()
qui sont des fonctions rudement pratiques !
Bon ... je sais ... c'est de la pub .... mais c'est vrai !

--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477
Publicado em fevereiro, 18 2004 - 4:37 PM
Cette fonction donne le numéro ou nom de la ligne ou colonne cliquée dans
une table.
Elle ne permet pas d'ouvrir un menu contextuel à un endroit donné.

"notarioc" <notarioc@net-up.com> a écrit dans le message de news:
403369b8@news.pcsoft.fr...


c'est la fonction TableInfoXY(). Vous trouverez sa syntaxe dans l'aide .




Marcel.berman@managingbusiness.be wrote:


salut !

On 18-Feb-2004, "Samuel MONTAGNE" <samuel.montagne@free.fr> wrote:

Comment faire pour que le menu s'ouvre à la position du clic de la

souris
?

Ben j'ai vu passer des infos sur ce sujet, mais je ne sais plus où ni

quand
... :-(
En tout cas, moi, sous WD 8, j'utilise ouvrepopup() et

ouvrepopupposition()
qui sont des fonctions rudement pratiques !
Bon ... je sais ... c'est de la pub .... mais c'est vrai !

--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477

Publicado em fevereiro, 18 2004 - 5:26 PM
par défaut , sur une table le coin haut gauche ( ou coin bas gauche si on
est en bas d'un écran )du menu contextuel est situé à l'endroit du clic droit
Publicado em fevereiro, 18 2004 - 5:36 PM
Je suis d'accord mais seulement dans le cas ou l'ouverture du menu
contextuel est effectué par un clic droit.
Dans mon cas, le menucontextuel est ouvert paar un clic gauche.
Essayez ceci :
Dans le code "Bouton gauche enfoncé" d'un champs, copier le code suivant :
Externe "WINCONST.WL" //A placer dans l'initialisation de la fenêtre
SendMessage(Handle(MonChamps),WM_RBUTTONDOWN,0,0)
SendMessage(Handle(MonChamps),WM_RBUTTONUP,0,0)

Celà simule un clic droit lors d'un clic gauche (normalement car dans ma
colonne image de ma table ça ne marche pas mais passons).

Le menu n'est pas ouvert à la position de la souris !!!!!!

Donc, comment faire pour :
1/ ouvrir le menu à la position voulue ?
2/ ouvrir l menu par clic gauche SUR UNE COLONNE IMAGE d'une table mémoire ?

"notarioc" <notarioc@net-up.com> a écrit dans le message de news:
40338598@news.pcsoft.fr...


par défaut , sur une table le coin haut gauche ( ou coin bas gauche si on
est en bas d'un écran )du menu contextuel est situé à l'endroit du clic

droit
>
Publicado em fevereiro, 18 2004 - 6:13 PM
MonChamp..MenuContextuel=MonMenu

SendMessage(Handle(MonChamp),WM_CONTEXTMENU,Handle(MonChamp),-1)


//et dans Bouton Droit Relaché(WM_RBUTTONUP)
MonChamp..MenuContextuel=MenuContextuelDésactivé

"Samuel MONTAGNE" <samuel.montagne@free.fr> wrote:

Je suis d'accord mais seulement dans le cas ou l'ouverture du menu
contextuel est effectué par un clic droit.
Dans mon cas, le menucontextuel est ouvert paar un clic gauche.
Essayez ceci :
Dans le code "Bouton gauche enfoncé" d'un champs, copier le code suivant

:
Externe "WINCONST.WL" //A placer dans l'initialisation de la fenêtre
SendMessage(Handle(MonChamps),WM_RBUTTONDOWN,0,0)
SendMessage(Handle(MonChamps),WM_RBUTTONUP,0,0)

Celà simule un clic droit lors d'un clic gauche (normalement car dans ma
colonne image de ma table ça ne marche pas mais passons).

Le menu n'est pas ouvert à la position de la souris !!!!!!

Donc, comment faire pour :
1/ ouvrir le menu à la position voulue ?
2/ ouvrir l menu par clic gauche SUR UNE COLONNE IMAGE d'une table mémoire

?

"notarioc" <notarioc@net-up.com> a écrit dans le message de news:
40338598@news.pcsoft.fr...


par défaut , sur une table le coin haut gauche ( ou coin bas gauche si

on
est en bas d'un écran )du menu contextuel est situé à l'endroit du clic
droit



Publicado em fevereiro, 18 2004 - 7:56 PM
j'avais oublié quelque chose :
SendMessage(Handle(MonChamp),WM_CONTEXTMENU,Handle(MonChamp),-y +x)
ou y et x sont les positions horizontale et verticale de la souris .






"notarioc" <notarioc@net-up.com> wrote:


MonChamp..MenuContextuel=MonMenu

SendMessage(Handle(MonChamp),WM_CONTEXTMENU,Handle(MonChamp),-1)


//et dans Bouton Droit Relaché(WM_RBUTTONUP)
MonChamp..MenuContextuel=MenuContextuelDésactivé

"Samuel MONTAGNE" <samuel.montagne@free.fr> wrote:

Je suis d'accord mais seulement dans le cas ou l'ouverture du menu
contextuel est effectué par un clic droit.
Dans mon cas, le menucontextuel est ouvert paar un clic gauche.
Essayez ceci :
Dans le code "Bouton gauche enfoncé" d'un champs, copier le code suivant
:

Externe "WINCONST.WL" //A placer dans l'initialisation de la fenêtre
SendMessage(Handle(MonChamps),WM_RBUTTONDOWN,0,0)
SendMessage(Handle(MonChamps),WM_RBUTTONUP,0,0)

Celà simule un clic droit lors d'un clic gauche (normalement car dans ma
colonne image de ma table ça ne marche pas mais passons).

Le menu n'est pas ouvert à la position de la souris !!!!!!

Donc, comment faire pour :
1/ ouvrir le menu à la position voulue ?
2/ ouvrir l menu par clic gauche SUR UNE COLONNE IMAGE d'une table mémoire
?


"notarioc" <notarioc@net-up.com> a écrit dans le message de news:
40338598@news.pcsoft.fr...


par défaut , sur une table le coin haut gauche ( ou coin bas gauche si
on

est en bas d'un écran )du menu contextuel est situé à l'endroit du clic
droit




Publicado em fevereiro, 18 2004 - 8:50 PM
Je ne connaissais pas l'astuce : je vais essayer. Merci pour tout ;)

"notarioc" <notarioc@net-up.com> a écrit dans le message de news:
403390ff@news.pcsoft.fr...


MonChamp..MenuContextuel=MonMenu

SendMessage(Handle(MonChamp),WM_CONTEXTMENU,Handle(MonChamp),-1)


//et dans Bouton Droit Relaché(WM_RBUTTONUP)
MonChamp..MenuContextuel=MenuContextuelDésactivé

"Samuel MONTAGNE" <samuel.montagne@free.fr> wrote:

Je suis d'accord mais seulement dans le cas ou l'ouverture du menu
contextuel est effectué par un clic droit.
Dans mon cas, le menucontextuel est ouvert paar un clic gauche.
Essayez ceci :
Dans le code "Bouton gauche enfoncé" d'un champs, copier le code suivant
:

Externe "WINCONST.WL" //A placer dans l'initialisation de la fenêtre
SendMessage(Handle(MonChamps),WM_RBUTTONDOWN,0,0)
SendMessage(Handle(MonChamps),WM_RBUTTONUP,0,0)

Celà simule un clic droit lors d'un clic gauche (normalement car dans ma
colonne image de ma table ça ne marche pas mais passons).

Le menu n'est pas ouvert à la position de la souris !!!!!!

Donc, comment faire pour :
1/ ouvrir le menu à la position voulue ?
2/ ouvrir l menu par clic gauche SUR UNE COLONNE IMAGE d'une table

mémoire
?

"notarioc" <notarioc@net-up.com> a écrit dans le message de news:
40338598@news.pcsoft.fr...


par défaut , sur une table le coin haut gauche ( ou coin bas gauche si
on

est en bas d'un écran )du menu contextuel est situé à l'endroit du clic
droit




Publicado em fevereiro, 19 2004 - 11:32 AM
voici la syntaxe exacte :

nPos est un entier=CurseurPos(cpEcran)
si TableSelect(MaTable) alors
SendMessage(Handle(MonChamp),WM_CONTEXTMENU,Handle(MonChamp),nPos)
FIN
//attention , le menucontextuel de la table doit être sélectionné dans l'onglet
détail de la fenêtre ( pas de la table )






"Samuel MONTAGNE" <samuel.montagne@free.fr> wrote:

Je ne connaissais pas l'astuce : je vais essayer. Merci pour tout ;)

"notarioc" <notarioc@net-up.com> a écrit dans le message de news:
403390ff@news.pcsoft.fr...


MonChamp..MenuContextuel=MonMenu

SendMessage(Handle(MonChamp),WM_CONTEXTMENU,Handle(MonChamp),-1)


//et dans Bouton Droit Relaché(WM_RBUTTONUP)
MonChamp..MenuContextuel=MenuContextuelDésactivé

"Samuel MONTAGNE" <samuel.montagne@free.fr> wrote:

Je suis d'accord mais seulement dans le cas ou l'ouverture du menu
contextuel est effectué par un clic droit.
Dans mon cas, le menucontextuel est ouvert paar un clic gauche.
Essayez ceci :
Dans le code "Bouton gauche enfoncé" d'un champs, copier le code suivant
:

Externe "WINCONST.WL" //A placer dans l'initialisation de la fenêtre
SendMessage(Handle(MonChamps),WM_RBUTTONDOWN,0,0)
SendMessage(Handle(MonChamps),WM_RBUTTONUP,0,0)

Celà simule un clic droit lors d'un clic gauche (normalement car dans

ma
colonne image de ma table ça ne marche pas mais passons).

Le menu n'est pas ouvert à la position de la souris !!!!!!

Donc, comment faire pour :
1/ ouvrir le menu à la position voulue ?
2/ ouvrir l menu par clic gauche SUR UNE COLONNE IMAGE d'une table
mémoire

?

"notarioc" <notarioc@net-up.com> a écrit dans le message de news:
40338598@news.pcsoft.fr...


par défaut , sur une table le coin haut gauche ( ou coin bas gauche

si
on
est en bas d'un écran )du menu contextuel est situé à l'endroit du

clic
droit





Publicado em fevereiro, 20 2004 - 11:14 AM
Grace à vous, j'ai trouvé une solution qui marche pile poil !
L'avantage de mon code est que tout se fait dans le code de clic de la
colonne (donc ça marche avec n'importe quelle colonne, même celle de type
image !)

Je vous donne le code (si ça peut servir à qqun) :
//A place ds le code de clic de la colonne

//On force la sélection de la ligne cliqué car parfois, ça "merde"
LigNum est un entier =
tableinfoxy(MaTable,tinumLigne,sourisposx(),sourisposy)
tableselectplus(MaTable,LigNum)
//On execute si besoin le traitement associé à la sélection d'une ligne
executetraitement(MaTable,trtSelection)
//On génère l'ouverture du menu
MaTable..Menucontextuel = MonMenu
senmessage(handle(MaTable),WM_CONTEXTMENU,handle(MaTable),curseurPos(CpEcran
)
MaTable..menucontextuel = ""

Merci pour tout

Samuel MONTAGNE

"notarioc" <notarioc@net-up.com> a écrit dans le message de news:
40348509@news.pcsoft.fr...




voici la syntaxe exacte :

nPos est un entier=CurseurPos(cpEcran)
si TableSelect(MaTable) alors
SendMessage(Handle(MonChamp),WM_CONTEXTMENU,Handle(MonChamp),nPos)
FIN
//attention , le menucontextuel de la table doit être sélectionné dans

l'onglet
détail de la fenêtre ( pas de la table )






"Samuel MONTAGNE" <samuel.montagne@free.fr> wrote:

Je ne connaissais pas l'astuce : je vais essayer. Merci pour tout ;)

"notarioc" <notarioc@net-up.com> a écrit dans le message de news:
403390ff@news.pcsoft.fr...


MonChamp..MenuContextuel=MonMenu

SendMessage(Handle(MonChamp),WM_CONTEXTMENU,Handle(MonChamp),-1)


//et dans Bouton Droit Relaché(WM_RBUTTONUP)
MonChamp..MenuContextuel=MenuContextuelDésactivé

"Samuel MONTAGNE" <samuel.montagne@free.fr> wrote:

Je suis d'accord mais seulement dans le cas ou l'ouverture du menu
contextuel est effectué par un clic droit.
Dans mon cas, le menucontextuel est ouvert paar un clic gauche.
Essayez ceci :
Dans le code "Bouton gauche enfoncé" d'un champs, copier le code

suivant
:
Externe "WINCONST.WL" //A placer dans l'initialisation de la fenêtre
SendMessage(Handle(MonChamps),WM_RBUTTONDOWN,0,0)
SendMessage(Handle(MonChamps),WM_RBUTTONUP,0,0)

Celà simule un clic droit lors d'un clic gauche (normalement car dans
ma

colonne image de ma table ça ne marche pas mais passons).

Le menu n'est pas ouvert à la position de la souris !!!!!!

Donc, comment faire pour :
1/ ouvrir le menu à la position voulue ?
2/ ouvrir l menu par clic gauche SUR UNE COLONNE IMAGE d'une table
mémoire

?

"notarioc" <notarioc@net-up.com> a écrit dans le message de news:
40338598@news.pcsoft.fr...


par défaut , sur une table le coin haut gauche ( ou coin bas gauche
si

on
est en bas d'un écran )du menu contextuel est situé à l'endroit du
clic

droit