Bonjour
J'ai une grille avec un popuMenu affectée, et suivant la valeur de SelectedField j'aimerai activer desactiver le popupmenu.
Comment faire ?
Merci d'avance
Bonjour
J'ai une grille avec un popuMenu affectée, et suivant la valeur de SelectedField j'aimerai activer desactiver le popupmenu.
Comment faire ?
Merci d'avance
Je ferai un truc du style
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 procedure Tfrm_SavPlanningTrv.DBGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin DbGrid1.PopupMenu := nil; if button = mbLeft then begin if La_Condition then // mettre la condition ici begin PopupMenu1.Popup(X,Y); end; end; end;
Modérateur Delphi
Le guide du bon forumeur :
- Les règles du forum tu liras
- La FAQ et les tutoriels tu consulteras
- La fonction Recherche tu utiliseras
- Google tu vénèreras
__________
Rayek World : Youtube Facebook
Ou depuis OnPopup du menu:
Code : Sélectionner tout - Visualiser dans une fenêtre à part if not La_Condition then Abort;
ou sur le MaGrid.OnContextPopup :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 if PasDePopup then Handled := true;
Merci bien pour tous
En faite ce bout de code donne une position fausse
j'ai trouvé ce ci sur le net
ça marche. mais je ne sais pas pourquoi...
Code : Sélectionner tout - Visualiser dans une fenêtre à part popMenu1.Popup(DBGrid1.Left+x+left,DBGrid1.Top+y+top+15);
Parce que X et Y sont relatifs au coin supérieur gauche de la grille, alors que Popup attend des coordonnées écran.
Mais l'exemple que tu as récupéré n'est pas très bon. En suivant ce principe, il faudrait additionner les left/top de toute la hiérarchie de parent.
La solution est de convertir les coordonnées X/Y relatives en coordonnées écran par ClientToScreen:
Une 2ème solution est de simplement utiliser les coordonnées de la souris
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin with TControl(Sender).ClientToScreen(Point(X,Y)) do PopupMenu1.Popup(X, Y); end;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 procedure TForm1.StringGrid1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin with Mouse.CursorPos do PopupMenu1.Popup(X, Y); end;
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager