Salut
est ce que en peut afficher le Popupmenu au moment du click sur un button
Merci pour votre aide
Salut
est ce que en peut afficher le Popupmenu au moment du click sur un button
Merci pour votre aide
Salut,
Oui, on peut :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 procedure TfrmMain.bbtn1Click(Sender: TObject); var pCursor: TPoint; begin GetCursorPos(pCursor); pm1.CloseMenu; // s'il est déjà ouvert quelque part pm1.Popup(pCursor.X, pCursor.Y); end;
Merci bien Whiler pour votre aide, tré gentil
problème résolu
Bonjour à toutes et à tous,
@ Whiler, tu sais m'expliquer la commande :
Car sous D6, elle bug.pm1.CloseMenu; // s'il est déjà ouvert quelque part
Merci,
@+,
Cincap
En fait, j'avais ajouté cette ligne dans mon code, au cas où le menu est déjà ouvert, par exemple :
Sur mon bouton, je définis la propriété PopupMenu sur pm1.
Je définis également son événement OnClick ainsi :
Si l'utilisateur faisait un clic droit sur le bouton, le menu s'ouvre à un emplacement... s'il faisait un clic gauche, le menu restait où il était...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 procedure TfrmMain.bbtn1Click(Sender: TObject); var pCursor: TPoint; begin GetCursorPos(pCursor); pm1.Popup(pCursor.X, pCursor.Y); end;
En fait, je parle au passé, parce que je n'arrive pas à reproduire ce comportement donc, la ligne devient superflue... (et comme en plus, elle fait planter ta version... autant ne pas la mettre...)
@ Whiler, il me semblait bien, car on peut détecter l'ouverture/fermeture par les messages.
Un bref exemple :
@+,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 private procedure CM_MenuClosed( var msg: TMessage ); message CM_MENU_CLOSED; procedure CM_EnterMenuLoop(var msg: TMessage); message CM_ENTER_MENU_LOOP; procedure CM_ExitMenuLoop(var msg: TMessage); message CM_EXIT_MENU_LOOP; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { TForm1 } procedure TForm1.CM_EnterMenuLoop(var msg: TMessage); begin Memo1.Lines.Add(Format('PopMenu visible à %s',[DateTimeToStr(Now)])); end; procedure TForm1.CM_ExitMenuLoop(var msg: TMessage); begin Memo1.Lines.Add(Format('PopMenu caché à %s',[DateTimeToStr(Now)])); end; procedure TForm1.CM_MenuClosed(var msg: TMessage); begin Memo1.Lines.Add(Format('PopMenu fermé à %s',[DateTimeToStr(Now)])); end; procedure TForm1.FormCreate(Sender: TObject); begin self.PopupMenu := PopupMenu1; end; end.
Cincap
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager