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 :

Récupérer les enfants d'un composant


Sujet :

Composants VCL Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 28
    Points : 25
    Points
    25
    Par défaut Récupérer les enfants d'un composant
    Bonjour,

    Je travaille actuellement sur un projet utilisant un TPageControl avec plusieurs onglets contenant chacun un TWebBrowser.

    Afin de récupérer le TWebBrowser actif j'utilise pour l'instant la fonction suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function TForm1.GetActiveBrowser: TWebBrowser;
    var
      I: integer;
    begin
      for I := 0 to ComponentCount - 1 do
        if (Components[i] is TWebBrowser) and (Components[i].GetParentComponent = PageControl1.ActivePage) then
          Result := Components[i] as TWebBrowser;
    end;
    Cette fonction parcours tous les composants de la form et renvoie le TWebBrowser actif. Elle fonctionne mais est à mon avis par très éfficace ...

    Je voudrais en effet l'améliorer en récupérant directement les enfants de la page active (au lieu de comparer les parents).

    Pour résumer je cherche une fonction du genre : PageControl1.ActivePage.GetChildrenComponent qui me retournerais les enfants de la page active, mais je sais pas si cela existe ...

    Si vous connaissez un autre moyen de faire, merci de me le faire savoir.

  2. #2
    Membre actif
    Homme Profil pro
    Inscrit en
    Juin 2004
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Andorre

    Informations forums :
    Inscription : Juin 2004
    Messages : 219
    Points : 241
    Points
    241
    Par défaut
    Salut

    Tu peux utiliser.....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PageControl1.ActivePage.ComponentCount
    et

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    PageControl1.ActivePage.Components
    A+

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Le problème est que PageControl1.ActivePage.ComponentCount renvoie 0, alors que la page contient bien un TWebBrowser ...

    Voici comment en gros comment j'ajoute les onglets si cela peut aider:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Tab := TTabSheet.Create(self) ;
    Tab.PageControl := PageControl1;
    WebBrowser := TWebBrowser.create(self);
    TWinControl(WebBrowser).Parent := Tab;
    TControl(WebBrowser).Parent := Tab;

  4. #4
    Membre averti
    Profil pro
    xxxxxxxxxxx
    Inscrit en
    Juin 2004
    Messages
    308
    Détails du profil
    Informations personnelles :
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : xxxxxxxxxxx

    Informations forums :
    Inscription : Juin 2004
    Messages : 308
    Points : 407
    Points
    407
    Par défaut
    essaye avec ControlCount et Controls[index]

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2005
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    J'ai trouvé

    En fait lors de la création de mes objets je spécifiais mal les owners, d'où un ComponentCount de 0.

    Voici le morceau de code corrigé pour la création :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Tab := TTabSheet.Create(PageControl1) ;
    Tab.PageControl := PageControl1;
    WebBrowser := TWebBrowser.create(Tab);
    TWinControl(WebBrowser).Parent := Tab;
    TControl(WebBrowser).Parent := Tab;
    Et pour récupérer le TWebBrowser actif:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    function TForm1.GetActiveBrowser: TWebBrowser;
    var
      i: integer;
    begin
      Result := nil;
      for i := 0 to PageControl1.ActivePage.ComponentCount do
        if (PageControl1.ActivePage.Components[i] is TWebBrowser) then
        begin
          Result := (PageControl1.ActivePage.Components[i] as TWebBrowser);
          break;
        end;
    end;
    Merci pour vos réponses qui m'ont permies de m'orienter vers la solution !

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 22/09/2010, 14h29
  2. Réponses: 7
    Dernier message: 26/05/2007, 12h43
  3. Récupérer les bits qui composent un byte
    Par ToTo13 dans le forum Langage
    Réponses: 4
    Dernier message: 25/01/2007, 17h12
  4. [C#-XML] Récupérer les valeurs des noeuds enfants
    Par cyllix dans le forum Windows Forms
    Réponses: 1
    Dernier message: 23/06/2006, 11h54
  5. Récupérer les composants visuels de toute l'application
    Par sessime dans le forum Composants VCL
    Réponses: 4
    Dernier message: 27/02/2006, 09h18

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