Salut
est ce que en peut afficher le Popupmenu au moment du click sur un button
Merci pour votre aide
Version imprimable
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:
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.Citation:
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:
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:
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