Bonjour,
Pour simplifier, à l'exécution du programme je crée un scrollBox puis sur celui-là une série de Panels (avec le nom de fichier)
J'ai un même Popup pour l'ensemble de ces composants.
Au déclenchement du popup le nombre d'items visibles doit être en fonction des caractéristiques du Panel.caption (ex. fichier TXT, PDF...) ou de la zone neutre du ScrollBox.
Après plusieurs recherches sur internet j'ai une solution qui semble (voir ci-dessous) bien fonctionner sous Windows.
Je cherche donc l'équivalent pour Linux Ubuntu (je débute dans cet environnement).
D'avance merci.

*) Solution Windows

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
private   
        Control_Bloc:TWinControl;  // Pour récupérer le composant sous la souris
         // Pour Popup utilise la position de la souris pour récupérer le Composant Bloc pointé
        // utilisé pour neutraliser un item avant l'affichage du popup  
 
// **************************************************
procedure TForm1.PopupMenu_Onglet_WindowsPopup(Sender: TObject);
// Popup Windows
Var Panel_Compo : Tcomponent;
  begin
     {$IFDEF Windows}
      Recupere_Control_Bloc_Solution_Souris(Sender,Panel_Compo);
     {$ENDIF}
  end;
// ************************************************** 
procedure TForm1.Recupere_Control_Bloc_Solution_Souris(Sender: TObject;Var Panel_Compo : Tcomponent);
// Récupère Control_Bloc : Tcomponent
Var
  ACursorPos: TPoint;
  AHandle: HWND;
begin
   {$IFDEF Windows}
  // ----------- Solution fonctionne en Windows ------------------
 // Récupérer les coordonnées du coin supérieur du popup :
  if GetCursorPos(ACursorPos) then  // Récupérer les coordonnées
    begin
     AHandle := WindowFromPoint(ACursorPos); // Chercher un Handle
     if AHandle <> 0 then
       begin
       Control_Bloc:=FindControl(AHandle ); // Chercher le composant sous la souris
          if Control_Bloc<>nil then
          begin  // Composant trouvé : neutraliser Item
              If Copy(Control_Bloc.Name,1,9)<>'ScrollBox' Then MenuItem_Modifier_Nom_Fichier1.Enabled:=True
             Else MenuItem_Modifier_Nom_Fichier1.Enabled:=False;
             .........................................................
          End;
     end;
end;
   {$ENDIF}
  end;
// **************************************************