Bonjour,
j'ai un pageControl avec 3 tabSheet.
J'essaie d'en mettre un à enabled:=false mais ça ne marche pas???
Il y a un bug?
Cordialement
Bonjour,
j'ai un pageControl avec 3 tabSheet.
J'essaie d'en mettre un à enabled:=false mais ça ne marche pas???
Il y a un bug?
Cordialement
Que veux-tu faire?
Le désactiver au niveau des actions faites dessus ou le cacher?
Bonjour,
je cherche à désactiver le tabSheet3 pendant une saisie sur le tabSheet1
Cordialement
désactivé, c'est à dire empecher de passer d'un onglet à l'autre, c'est ca ?
Salut
Le fait de mettre la propriété Enabled à False d'un TabSheet n'interdit pas la possibilité de sélectionner cette page. Par contre les contrôles contenus dans cette page sont inaccessibles.Envoyé par codial
Donc si je comprends bien, tes 3 TabSheets sont en permanence visibles et tu souhaites contrôler (autoriser/interdire) la sélection du TabSheet3.
C'est ça ?
[edit] Yep, le Captain se pose la même question ! [/edit]
@+
Enabled interdit juste les actions sur le tabsheet.
Autrement il faut jouer sur les evenement changing (pour avoir le tabsheet de départ) et change pour avoir celui d'arrivée (et donc revenir à celui de départ si celui d'arrivée est désactivé).
Il va y avoir un clignotement mais je ne vois pas d'autre solution.
Bonjour,
Oui pendant la saisie sur le TabSheet1 je voudrais empécher d'activer le TabSheet3 en interdisant le clic sur l'onglet.
Cordialement
Re,
Alors tu peux faire ça. Dans l'évènement OnChanging tu récupère l'onglet sur lequel tu viens de cliquer et tu autorises le changement d'onglet uniquement si la propriété Enabled du TabSheet cible est à True.
@+ Claudius
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 uses CommCtrl; function TForm1.GetTabAt(const X, Y: Integer): TTabSheet; var HitTestInfo: TTCHitTestInfo; ATabIndex: Integer; begin HitTestInfo.pt := Point(X,Y); ATabIndex := SendMessage(PageControl1.Handle, TCM_HITTEST, 0, Longint(@HitTestInfo)); result := PageControl1.Pages[ATabIndex]; end; procedure TForm1.PageControl1Changing(Sender: TObject; var AllowChange: Boolean); var APoint: TPoint; begin GetCursorPos(APoint); APoint := TPageControl(Sender).ScreenToClient(APoint); AllowChange := GetTabAt(APoint.X, APoint.Y).Enabled; end;
Bonjour,
super ça marche![]()
merci à tous et à Cl@udius pour son code.
Cordialement
Partager