peut-on en D5 "désactiver" certains onglets d'un TabControl qui ne doivent pas être accessibles, mais rester visibles ?
comme dans un exemple du livre D7 Studio !
F1 me dit que non... et vous ?
peut-on en D5 "désactiver" certains onglets d'un TabControl qui ne doivent pas être accessibles, mais rester visibles ?
comme dans un exemple du livre D7 Studio !
F1 me dit que non... et vous ?
Delphi 5 Pro - Delphi 11.3 Alexandria Community Edition - CodeTyphon 6.90 sous Windows 10 ; CT 6.40 sous Ubuntu 18.04 (VM)
. Ignorer la FAQ Delphi et les Cours et Tutoriels Delphi nuit gravement à notre code !
Pour un TTabControl, comme pour un TJvTabControl, je ne crois pas ; en effet.
Si tu passes au TPageControl, tu peux certes désactiver un de ses TTabSheet, mais il sera toujours possible de l'afficher.
Par contre, avec un TJvPageControl, lorsque tu désactives un TTabSheet, il est impossible de le sélectionner : c'est je crois ce comportement que que tu recherches.
Ceci dit il est vrai que le TabControl et le PageControl sont différents. Cela peut aussi donc ne pas te convenir.
À tout hasard, si c'est un wizard que tu essayes de faire, je m'empresse de te conseiller l'utilisation des composants Jvcl prévus à cet effet (TJvWizard, ...)![]()
Il est en effet possible de désactiver l'onglet en laissant visible les composants qu'il contient.
Ce code fonctionne sous Delphi 2005 ... pour Delphi 5 il faut tester.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procedure TForm1.Button1Click(Sender: TObject); begin TabSheet1.Enabled := False; end;
salem
cette fonction ne marche pas sous delphi 5![]()
L'événement OnChanging est là pour ça
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 procedure TForm1.Pagecontrol1Changing(Sender: TObject; var AllowChange: Boolean); begin Allowchange:=<condition>; end;
merci a vous
pour ceux que cela interssent
procedure TFAffaire.PcChanging (Sender: TObject;var AllowChange: Boolean);
begin
if ( Pc.ActivePage) = P1 then AllowChange := ((Edit1.visible =false))
else AllowChange := True;
end;
qui se simplifie en
Tu confonds encore la balise QUOTE et CODE (le # dans le menu)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 procedure TFAffaire.PcChanging (Sender: TObject;var AllowChange: Boolean); begin AllowChange := (Pc.ActivePage <> P1) or not Edit1.visible; end;
![]()
Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !![]()
Attention Troll Méchant !
"Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
L'ignorance n'excuse pas la médiocrité !
L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
Il faut avoir le courage de se tromper et d'apprendre de ses erreurs
merci bcp
mais j'arrive pas a activé 2 onglets et laissé le reste désactivé !!
j'ai essayé plusieurs combinaison ,et la je my perd un peut
vous pouvez me guider
voici une solution d3![]()
un pagecontrol avec n pages
seules les 3 premières pages (0,1,2) sont accessibles
les autres ne sont accessibles que si la case (checkbox1) est cochée
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 .... private { Déclarations privées } p : integer; public { Déclarations publiques } end; var Form1: TForm1; implementation {$R *.DFM} procedure TForm1.PageControl1Changing(Sender: TObject; var AllowChange: Boolean); begin // mémorisation page avant de changer p:=PageControl1.ActivePage.TabIndex; end; procedure TForm1.PageControl1Change(Sender: TObject); begin Case pagecontrol1.activepage.pageindex of 0,1,2 : ; // on revient sur la page appelante si la case n'est pas cochée else if not (Checkbox1.checked) then Pagecontrol1.Activepage:=Pagecontrol1.Pages[p]; end; end;c'est quand même plus facile avec les versions récentes
merci a vous cela marche très bien
un petit truc me dérange
quant l'utilisateur clique sur un onglet fermé (onglet que en peut pas ouvrir)
en vois un peut que la page contrôle change l’onglet
pas comme avec AllowChangeon ne vois rien
par curiosité y'aurais pas une solutions avec AllowChange
un peu de recherche dans le forum stfanny31 et tu aurais trouvé la solution ! (datant de 2005) .
Le problème :
L’inconvénient de l'évènement du onchanging est que l'on n'a pas l'index de l'onglet sur lequel on veut aller , il faut donc trouver un moyen de l'obtenir . Par chance , il existe une fonction PageControl1.IndexOfTabAt qui fourni l'index de page en fonction de coordonnées. Associée a la position de la souris , tu as la solution.
Solution :
Plutôt que de mettre la solution toute cuite dans ce post , je préfère rendre a César (pseudo portu) ce qui lui appartient . Apprendre a faire des recherches dans le forum Delphi est certainement mieux que de faire un copier coller, trouver la réponse soit même maintenant que le problème est posé c'est pas mal non plus
![]()
Mr SergioMaster merci
cela fait une semaine que je cherche sur le forum
est j'ai pas trouvez ce que je cherche
j'ai esséyé de trouvé la solution mais
vous pouvé pas me donné plus d'explication ,je sens que je vais![]()
ben , il y a des progrès a faire pour ce qui est des recherches![]()
voici post
(ne pas faire un bête copier/coller quand même)
merci Beaucoup a vous.
je croie que a force de cherché ,on est aveuglé et y'a de grande chance qu'on voie pas ce que on cherche
citation STfanny![]()
Partager