Forcer affichage menu systeme

fabiin Messages postés 329 Date d'inscription mercredi 4 avril 2001 Statut Membre Dernière intervention 8 décembre 2009 - 4 nov. 2002 à 19:34
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 - 6 nov. 2002 à 00:29
Salut ;)
g une application sans barre de titre
mais je voudrai kan même afficher le menu systeme lors du klik droit :)
comment faire ???

merci par avance :)
@+
Fabs 8-)

8 réponses

kakochime Messages postés 24 Date d'inscription mardi 14 mai 2002 Statut Membre Dernière intervention 5 décembre 2008 1
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;
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
4 nov. 2002 à 20:26
Merci kakochime,

C'est super, mais quand on clique sur les choix du menu popup, aucune action n'est déclenchée...

Comment faire ?
May Delphi be with you
0
kakochime Messages postés 24 Date d'inscription mardi 14 mai 2002 Statut Membre Dernière intervention 5 décembre 2008 1
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;
0
cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
4 nov. 2002 à 20:59
Félicitation à Kakochime pour la méthode...

Mais je pense que la fiche de fabiin avait BorderStyle à bsNone et malheureusement, dans ce cas ça ne fonctionne pas...

Sinon on pouvait aussi afficher le menu en simulant la touche F10 puis Flèche basse.

--- :sleepy) Nono du Moulin :sleepy) ---
0
fabiin Messages postés 329 Date d'inscription mercredi 4 avril 2001 Statut Membre Dernière intervention 8 décembre 2009 6
5 nov. 2002 à 19:23
bien vu nono40 :) , j'allai le dire
donc comment faire ? lol
@+
Fabs 8-)
0
fabiin Messages postés 329 Date d'inscription mercredi 4 avril 2001 Statut Membre Dernière intervention 8 décembre 2009 6
5 nov. 2002 à 19:33
Salut kakomachine
ce code ne fonctionne pas kan BorderStyle := bsnone, et c mon cas :)
As-tu une solution ?
@+
Fabs 8-)
0
cs_Nono40 Messages postés 962 Date d'inscription mercredi 3 avril 2002 Statut Membre Dernière intervention 12 septembre 2006 2
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.

Chapeau à Kakochime pour la méthode de base...

--- :sleepy) Nono du Moulin :sleepy) ---
0
Rejoignez-nous