Popup menu dynamique

cs_Krome Messages postés 10 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 8 septembre 2005 - 1 juin 2004 à 11:33
cs_Krome Messages postés 10 Date d'inscription mardi 17 juin 2003 Statut Membre Dernière intervention 8 septembre 2005 - 2 juin 2004 à 09:12
Bonjour, j ai un soucis pour creer un menu contextuel..
Voici mon code:

procedure TstringGrid.EventOnMousedown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
Arow:integer;
Acol:integer;
i,j:integer;
menucontext:TpopupMenu;
begin
if button= mbRight then
begin
menucontext:= TpopupMenu.Create(nil);
menucontext.AutoPopup := False;
menucontext.Items.Add(TmenuItem.Create(nil));
menucontext.Items[0].Caption:='Copier la sélection';
menucontext.Popup(X,Y);
end;
end;

ce code cree un menu contextuel buggé c est a dire qu il n affiche pas le menu mais on peut l apercevoir en changant de fenetre sous windows ( l espace du menu contextuel ne se rafraichit pas).

J aimerai savoir ou est mon erreur..
Merci

5 réponses

Loulibier Messages postés 309 Date d'inscription jeudi 6 juin 2002 Statut Membre Dernière intervention 24 septembre 2008 2
1 juin 2004 à 14:06
Salut,

Je viens de tester ton code et je ne voie pas ou est ton problème.
Si tu désires affichés ton popupmenu la ou tu click, il faut que tu lui donne la position absolu de ta souris (Mouse.CursorPos.X et Mouse.CursorPos.Y).

Mais je ne vois pas vraiment ce que tu cherche à faire. Car tu créent un TPopupMenu lorsque tu click tu le bouton droit de la souris, mais ce popupmenu sera détruit une fois la procedure effectué. Donc tu ne pourras affecter aucune action à ton PopupMenu.

Si tu Cherches à créer un PopupMenu Dynamique déclare ton popupmenu dans la zone private de tes sources.
Et surtout n'oublis pas de le libérer car à chaque click droit de ta souris tu créera un nouveau popup.

en espérant avoir répondu à ta question ;)

Olivier.
0