cs_Krome
Messages postés10Date d'inscriptionmardi 17 juin 2003StatutMembreDernière intervention 8 septembre 2005
-
1 juin 2004 à 11:33
cs_Krome
Messages postés10Date d'inscriptionmardi 17 juin 2003StatutMembreDerniè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).
Loulibier
Messages postés309Date d'inscriptionjeudi 6 juin 2002StatutMembreDernière intervention24 septembre 20082 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.
Loulibier
Messages postés309Date d'inscriptionjeudi 6 juin 2002StatutMembreDernière intervention24 septembre 20082 1 juin 2004 à 14:07
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.
cs_Krome
Messages postés10Date d'inscriptionmardi 17 juin 2003StatutMembreDernière intervention 8 septembre 2005 1 juin 2004 à 16:20
Re
Je vien de mettre la creation dans la constructeur d une stringgrid pour afficher le menu contextuel qd on clique sur le bouton droit de la souris
ca marche toujours pas, j ai toujours le bug d affichage:
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).
Lorsque j utilise le composant statique a poser sur la form le programme cree un menu contextuel nickel .
mais lorsque j utilise ce code ca fait le bug:
// fonction apellé dans le construsteur de la stringgrid :
procedure TstringGridPlus.CreationMenuContext(AOwner: TComponent);
begin
menucontext:= TpopupMenu.Create(nil);
menucontext.AutoPopup := False;
menucontext.Items.Add(TmenuItem.Create(nil));
menucontext.Items[0].Caption:='Copier la sélection';
menucontext.Items.Add(TmenuItem.Create(nil));
menucontext.Items[1].Caption:='Copier la sélection';
end;
procedure TstringGridPlus.EventOnMousedown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if button= mbRight then
begin
menucontext.Popup (Mouse.CursorPos.X ,Mouse.CursorPos.Y);
end;
end;
cs_Krome
Messages postés10Date d'inscriptionmardi 17 juin 2003StatutMembreDernière intervention 8 septembre 2005 2 juin 2004 à 09:12
Bonjour,
J ai reglé mon probleme:
constructor TstringGridPlus.Create(AOwner: TComponent);
begin
inherited Create(Aowner);
menucontext:=TpopupMenu.create(self);
end
je comprend pas pourquoi ca marchait pas avant c est ce que je pensais faire ...
J ai beau chercher, le probleme d affichage ne reapparait pas, tant mieux pour moi, mais c dommage de ne pas savoir d ou venai le probleme.
Merci pour tout,
DelphiProg ta source m'a beaucoup aidée Merci Beaucoup.