[Linux] Un même PopupMenu pour X composants avec des Items différents
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:
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;
// ************************************************** |