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 sélectionner le tabSheet sur lequel est posé un comp


Sujet :

Composants VCL Delphi

  1. #1
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut Comment sélectionner le tabSheet sur lequel est posé un comp
    Bonjour,

    Comment savoir si un descendant de twincontrol, est posé sur un PageControl et dans ce cas activer le ttabsheet correspondant.

    J'ai une gestion d'erreur qui me permet de connaitre le composant pour lequel il y a une erreur de saisie.

    Le principe est simple, j'empile les messages d'erreur dans un Tlistbox et dans le tableau d'object je stocke la référence au champ de saisie.

    Quand on double-clic sur une ligne du Tlistbox, je fait un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TwinControl(Lecomposant).setfocus;
    Ca marche très bien SAUF avec les Tpagecontrol si l'onglet visible n'est pas celui contenant le champ de saisie.

    donc il me faudrait au préalable activer le bon onglet .. et là je séche.


    Ma procédure de sélection =

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    procedure JumpToError(compo : Tcomponent);
    begin
          if compo<>nil then
          begin
            if compo.InheritsFrom(TWinControl) then
               TWinControl(compo).SetFocus;
          end;
    end;

  2. #2
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 901
    Points : 6 026
    Points
    6 026
    Par défaut
    Je ne me souviens plus la syntaxe exacte (le code est à la maison...), mais il faut commencer par rendre visible le tabSheet proprio du composant.

    Si ce post n'avance pas d'ici ce soir, j'y mettrais ma solution...
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  3. #3
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    Ma solution :

    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
     
    procedure JumpToError(compo : Tcomponent); 
    var compoParent  : Tcomponent;
    begin
          compoParent := compo.GetParentComponent;
          if compoParent<>nil then
          begin
            // on affiche la page
            if compoParent.InheritsFrom(TTabSheet) then
                 TTabSheet(compoParent).Show;
            // on met le focus sur le composant.
            if compo.InheritsFrom(TWinControl) then
                          TWinControl(compo).SetFocus;
          end;
    end;

  4. #4
    Expert éminent
    Avatar de qi130
    Homme Profil pro
    Expert Processus IT
    Inscrit en
    Mars 2003
    Messages
    3 901
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Expert Processus IT
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 3 901
    Points : 6 026
    Points
    6 026
    Par défaut
    et voici le mien
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    PageControl1.ActivePage:=(TComboBox(FindComponent('TPI'+IntToStr(i))).Parent as TTabSheet);
    TComboBox(FindComponent('TPI'+IntToStr(i))).SetFocus;
    "Il n'y a pas de bonnes réponses à une mauvaise question." (M. Godet)
    -----------------------
    Pensez à cloturer votre sujet - Aucune réponse aux sollicitations techniques par MP
    Usus magister est optimus

  5. #5
    Membre habitué
    Inscrit en
    Mars 2003
    Messages
    281
    Détails du profil
    Informations personnelles :
    Âge : 50

    Informations forums :
    Inscription : Mars 2003
    Messages : 281
    Points : 187
    Points
    187
    Par défaut
    C'est pas trop mal

    Mais dans mon cas, tous les contrôles ne sont pas forcément dans un Ttabsheet.

    Bon dev.

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

Discussions similaires

  1. Comment connaitre le "widget" sur lequel on appuie
    Par TsCyrille dans le forum Android
    Réponses: 2
    Dernier message: 24/08/2010, 12h06
  2. Réponses: 1
    Dernier message: 26/01/2010, 14h40
  3. Réponses: 6
    Dernier message: 11/03/2009, 12h43
  4. Réponses: 1
    Dernier message: 23/04/2007, 14h09
  5. Réponses: 3
    Dernier message: 13/03/2006, 20h15

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