kakochime
Messages postés24Date d'inscriptionmardi 14 mai 2002StatutMembreDernière intervention 5 décembre 20081 4 nov. 2002 à 19:58
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
p:TPoint;
BEGIN
if Button=mbright then begin
getcursorpos(p);
TrackPopupMenuEx(GetSystemMenu(Handle,false),TPM_RIGHTBUTTON,p.x,p.y,handle,nil);
end;
END;
kakochime
Messages postés24Date d'inscriptionmardi 14 mai 2002StatutMembreDernière intervention 5 décembre 20081 4 nov. 2002 à 20:48
en ajoutant le parametre TPM_RETURNCMD, on capte l'evenement !
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
p:TPoint;
Action:integer;
BEGIN
if Button=mbright then begin
getcursorpos(p);
Action:=ord(TrackPopupMenuEx(GetSystemMenu(Handle,false),TPM_RIGHTBUTTON+TPM_RETURNCMD,p.x,p.y,handle,nil));
SendMessage(handle,WM_SYSCOMMAND,Action,0);
end;
END;
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 4 nov. 2002 à 20:55
Ca marche super !
J'étais en train de chercher sur le net une réponse et j'ai pû constater que pas mal de monde patinait sur le sujet.
Les aides en ligne fournies par Borland ne connaissent pas cette fonction TrackPopupMenuEx.
Ca mérite de figurer dans les codes sources.
Tu nous postes une petite démo ?
D'avance, merci.
May Delphi be with you
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_Nono40
Messages postés962Date d'inscriptionmercredi 3 avril 2002StatutMembreDernière intervention12 septembre 20062 6 nov. 2002 à 00:29
Bon, il semble qu'un fenêtre avec bsNone n'a pas de menu système. Bon, mais si le projet à une autre fenêtre ? On peut peut-être copier le menu d'une fenêtre sur l'autre :
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
p:TPoint;
Action:integer;
BEGIN
if Button= mbright then begin
getcursorpos(p);
Action:=ord(TrackPopupMenuEx(GetSystemMenu( Form2. Handle,false),TPM_RIGHTBUTTON+TPM_RETURNCMD,p.x,p.y,handle,nil));
SendMessage(handle,WM_SYSCOMMAND,Action,0);
end;
end;
Il suffit donc d'ajouter un fiche ( même si elle ne sert à rien ) pour en extraire le menu et l'afficher sir la fiche principale. Et là ça fonctionne aussi avec bsNone.