Bonjour,

Je cherche à créer un petit executable qui aura pour but d'ouvrir un popupMenu à l'endroit où se trouve la souris. Il contiendra deux Items. Je souhaite avoir simplement (pour démarrer) un showmessage lors d'un clic sur un Item.

Par contre, je ne veux pas utiliser de TForm dans l'appli. Mon problème, c'est que du coup, j'ai un mal de chien à faire réagir l'appli à mes clics de souris. Voici mon code :

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
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
program AjusteWave;
 
{$APPTYPE CONSOLE}
 
uses
  Windows,
  Classes,
  Types,
  Menus,
  Dialogs;
 
type
 
  TMonPopupMenu = class(TPopupMenu)
  private
    { Déclarations privées }
    Item1, Item2: TMenuItem;
    FOnClick : TNotifyEvent;
    procedure Item1Click(Sender: TObject);
  published
    property OnClick: TNotifyEvent read FOnClick write FOnClick;
  end;
 
var
  Position: TPoint;
  ppMnu: TMonPopupMenu;
 
procedure TMonPopupMenu.Item1Click(Sender : TObject);
begin
  ShowMessage('J''ai cliqué sur l''Item1 !');
end;
 
begin
  ppMnu := TMonPopupMenu.Create(nil);
  try
    ppMnu.Item1 := TMenuItem.Create(nil);
    ppMnu.Item2 := TMenuItem.Create(nil);
    try
      ppMnu.Item1.MenuIndex := 1;
      ppMnu.Item2.MenuIndex := 0;
      ppMnu.Item1.Caption := '66 %';
      ppMnu.Item2.Caption := '15 %';
      ppMnu.Items.Add(ppMnu.Item1);
      ppMnu.Items.Add(ppMnu.Item2);
      GetCursorPos(Position);
      ppMnu.Item1.OnClick := ppMnu.Item1Click;
      ppMnu.Popup(Position.X, Position.Y);
    finally
      ppMnu.Item1.Free;
      ppMnu.Item2.Free;
    end;
  finally
    ppMnu.Free;
  end;
end.
Qu'ai-je oublié pour que cela fonctionne ?

Je vous remercie par avance.
Max.