IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Composants VCL Delphi Discussion :

Comment désactiver certains onglets d'un TTabControl ?


Sujet :

Composants VCL Delphi

  1. #1
    Modérateur
    Avatar de tourlourou
    Homme Profil pro
    Biologiste ; Progr(amateur)
    Inscrit en
    Mars 2005
    Messages
    3 865
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Biologiste ; Progr(amateur)

    Informations forums :
    Inscription : Mars 2005
    Messages : 3 865
    Points : 11 331
    Points
    11 331
    Billets dans le blog
    6
    Par défaut Comment désactiver certains onglets d'un TTabControl ?
    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 !

  2. #2
    DMO
    DMO est déconnecté
    Membre averti
    Avatar de DMO
    Profil pro
    Inscrit en
    Février 2004
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 290
    Points : 343
    Points
    343
    Par défaut
    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, ...)
    « La simplicité est la sophistication suprême » (Léonard de Vinci)

  3. #3
    Membre habitué
    Avatar de xenos
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    400
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 400
    Points : 197
    Points
    197
    Par défaut
    Il est en effet possible de désactiver l'onglet en laissant visible les composants qu'il contient.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      TabSheet1.Enabled := False;
    end;
    Ce code fonctionne sous Delphi 2005 ... pour Delphi 5 il faut tester.

  4. #4
    Membre habitué Avatar de stfanny31
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Points : 163
    Points
    163
    Par défaut
    salem
    cette fonction ne marche pas sous delphi 5
    merci bcp

  5. #5
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 092
    Points : 41 067
    Points
    41 067
    Billets dans le blog
    62
    Par défaut
    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;
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  6. #6
    Membre habitué Avatar de stfanny31
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Points : 163
    Points
    163
    Par défaut
    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;
    merci bcp

  7. #7
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 549
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 549
    Points : 25 119
    Points
    25 119
    Par défaut
    qui se simplifie en

    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;
    Tu confonds encore la balise QUOTE et CODE (le # dans le menu)
    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

  8. #8
    Membre habitué Avatar de stfanny31
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Points : 163
    Points
    163
    Par défaut
    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
    merci bcp

  9. #9
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 092
    Points : 41 067
    Points
    41 067
    Billets dans le blog
    62
    Par défaut
    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
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  10. #10
    Membre habitué Avatar de stfanny31
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Points : 163
    Points
    163
    Par défaut
    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
    merci bcp

  11. #11
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 092
    Points : 41 067
    Points
    41 067
    Billets dans le blog
    62
    Par défaut
    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
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  12. #12
    Membre habitué Avatar de stfanny31
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Points : 163
    Points
    163
    Par défaut
    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
    merci bcp

  13. #13
    Rédacteur/Modérateur

    Avatar de SergioMaster
    Homme Profil pro
    Développeur informatique retraité
    Inscrit en
    Janvier 2007
    Messages
    15 092
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 68
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 15 092
    Points : 41 067
    Points
    41 067
    Billets dans le blog
    62
    Par défaut
    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)
    MVP Embarcadero
    Delphi installés : D3,D7,D2010,XE4,XE7,D10 (Rio, Sidney), D11 (Alexandria), D12 (Athènes)
    SGBD : Firebird 2.5, 3, SQLite
    générateurs États : FastReport, Rave, QuickReport
    OS : Window Vista, Windows 10, Windows 11, Ubuntu, Androïd

  14. #14
    Membre habitué Avatar de stfanny31
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2008
    Messages
    254
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 41
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2008
    Messages : 254
    Points : 163
    Points
    163
    Par défaut
    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
    merci bcp

Discussions similaires

  1. Réponses: 1
    Dernier message: 18/12/2014, 22h53
  2. [AC-2007] Comment désactiver un onglet?
    Par glooping dans le forum IHM
    Réponses: 3
    Dernier message: 30/09/2009, 14h23
  3. Réponses: 3
    Dernier message: 28/11/2008, 10h18
  4. Comment désactiver certains messages d'erreurs
    Par robertetgorgette dans le forum Access
    Réponses: 3
    Dernier message: 07/08/2006, 13h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo