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 :

Onglet d'un TPageControl


Sujet :

Composants VCL Delphi

  1. #1
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut Onglet d'un TPageControl
    salut ; je veux effectué un control avant de passé d'un onglet a un autre :
    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
    procedure Tfsujtcontact.PageControl1Changing(Sender: TObject;
      var AllowChange: Boolean);
    begin
    if (pagecontrol1.ActivePageIndex=1) and(rbsuivitrt.Checked=true) or (rbmodifsuivit.Checked=true)
        or (eqt.Text<>'') or (eqt.Text<>'0')
      then
      begin
       if messagedlg('Terminer les actions...',mtConfirmation,[mbYes],1,)=mrYes
        then
        begin
        allowchange:=false;
        pagecontrol1.ActivePageIndex:=1;
        end;
      exit;
      end;
    end;
    le code fonctionne et j'ai le message " Terminer les actions...." mais au lieu de resté sur l'onglet voulu , je passe vers l'onglet pagecontrol1.ActivePageIndex:=0;

    avec allowchange:=false; sa bloque ;
    sans allowchange j'ai le message de contrôle mais les conditions ne sont pas vérifiés et je passe a l'onglet suivant

  2. #2
    Expert éminent sénior
    Avatar de Cl@udius
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2006
    Messages
    4 878
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 4 878
    Points : 10 008
    Points
    10 008
    Par défaut
    Salut

    Tout d'abord quelques remarques sur ton code:

    Un MessageDlg de confirmation avec un seul bouton mbYes. Ca ce n'est pas courant ! Tout utilisateur devant cette boite de dialogue va se demander si tu lui poses une question ou non.
    Avec un seul bouton, en général on choisit un bouton OK (avec une icône d'information ou d'avertissement).

    Ensuite, il n'est pas conseillé de modifier la valeur d'ActivePageIndex dans cet évènement, car le changement de page est déjà demandé. Tu dois juste t'occuper de la valeur de AllowChange, pour autoriser ce changement ou non.

    Puis, cette condition:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (eqt.Text<>'') or (eqt.Text<>'0')
    sera toujours vraie.

    Et enfin, le Exit ne sert à rien.

    Donc en supposant que tu souhaites juste informer l'utilisateur que sa saisie est incomplète, ceci doit suffire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    procedure Tfsujtcontact.PageControl1Changing(Sender: TObject;
      var AllowChange: Boolean);
    begin
      if (PageControl1.ActivePageIndex = 1) and (Autres conditions) then
      begin
        AllowChange := False;
        MessageDlg('Veuillez compléter votre saisie.', mtWarning, [mbOK], 0);
      end;
    end;
    @+ Claudius

  3. #3
    Membre éprouvé Avatar de redoran
    Homme Profil pro
    Développeur-Amateur
    Inscrit en
    Juin 2010
    Messages
    1 346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur-Amateur
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 1 346
    Points : 1 031
    Points
    1 031
    Par défaut
    Bonjour Cl@uCl@u ; merci de m'avoir consacré de votre temps pour m'aidé sa m'encourage de faire +++ d'efforts , additivement a vos directives l'erreur : j'ai oublié de mettre toutes les conditions entre parenthésé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ........................
    if ( (pagecontrol1.ActivePageIndex=1) and(rbsuivitrt.Checked=true) or (rbmodifsuivit.Checked=true)
        or (eqt.Text<>'') or (eqt.Text<>'0'))
    .................................................

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 713
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 713
    Points : 13 185
    Points
    13 185
    Par défaut
    Comme dit Claudius (à demi mot), les parenthèses ne sont pas à la bonne place (Priorité des opérations)

    Arrête aussi de mettre ces Checked=TRUE. Le test attend un booléen, Checked en est un ! Qu'écrire de plus

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [TPageControl] Comment afficher un onglet spécifique ?
    Par lassmust dans le forum Composants VCL
    Réponses: 4
    Dernier message: 16/11/2005, 14h00
  2. Cacher les onglets d'un TPageControl
    Par Patrick Seuret dans le forum C++Builder
    Réponses: 5
    Dernier message: 21/10/2005, 16h05
  3. Rendre un onglet inactif sur un TPAGECONTROL
    Par richard038 dans le forum Composants VCL
    Réponses: 6
    Dernier message: 12/09/2005, 09h58
  4. comment rendre invisible l'un des onglets d'un TPAGECONTROL
    Par richard038 dans le forum Composants VCL
    Réponses: 5
    Dernier message: 08/09/2005, 16h46

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