Bonjour
Dans un form, j'ai 2 DBGrids liées a 1 seul PopupMenu. Est-il possible saboir quel Popup provoque qu'il s'ouvre??
Merci en avance
Version imprimable
Bonjour
Dans un form, j'ai 2 DBGrids liées a 1 seul PopupMenu. Est-il possible saboir quel Popup provoque qu'il s'ouvre??
Merci en avance
Avec un popupmenu simple (pas de sous menu)
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 procedure TForm1.MenuItem1Click(Sender: TObject); begin if Sender is TMenuItem then // est ce que le parent du menuitem est un popupmenu ? if TMenuItem(Sender).GetParentMenu is TPopupMenu then begin // est ce que l'appellant est un Dbgrid ? if TPopupMenu(TMenuItem(Sender).GetParentMenu).PopupComponent is TDbGrid then With TDbGrid(TPopupMenu(TMenuItem(Sender).GetParentMenu).PopupComponent) do begin // ton traitement end; end;
Merci Malatar, ça fonctionne tres bien :)
Le problème est que les TMainMenu du Popup sont TAction, alors, on doit faire comme ça (et pour n'importe quel niveaux d'arborescence) :)
Merci encoreCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 procedure TForm1.aActionExecute(Sender: TObject); var Menu: TMenu; begin if Sender is TAction then if TAction(Sender).ActionComponent is TMenuItem then begin repeat Menu := TMenuItem(TAction(Sender).ActionComponent).GetParentMenu; until (Menu is TPopupMenu) or (Menu = nil); if Menu = nil then Exit; if TPopupMenu(Menu).PopupComponent is TDbGrid then with TDbGrid(TPopupMenu(Menu).PopupComponent) do begin // le traitement end; end; end;
Salut