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

C++Builder Discussion :

parcourir les forms et les objets d'une applications


Sujet :

C++Builder

  1. #21
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Par défaut
    Citation Envoyé par say
    alors, première étape..tu t'organises pour trouver la baliser [CODE] parce que c'est chiant à lire là qd même.

    et ton dernier post, il apporte quoi???
    tu veux peut-etre qu'on te donne la solution directe...
    il me semble d'avoir donner une piste..
    C'est quoi le proto de ta fonction?
    j'ai regardé les liens mais je n'ai rien trouvé
    concérnant les balises ,je ne les trouves pas ces balises

  2. #22
    say
    say est déconnecté
    Membre Expert
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Par défaut
    tssss...la balise, quand tu rédiges le message : #

    un exemple de code qui devrait rouler à peu près :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    MyFonctionCaptionsGlyphes(TWinControl * Sender)
    {
     
        for(i=0;i<Sender->ControlCount ;i++)
            { 
     if((AnsiString)Sender->Controls[i]->ClassName() == "TSpeedButton")   
    (dynamic_cast<TSpeedButton*>(Sender->Controls[i]))->Glyph->LoadFromFile("chemin");
    else if((AnsiString)Sender->Controls[i]->ClassName() == "TLabel")    
    (dynamic_cast<TLabel *>(Sender->Controls[i]))->Caption="blabla";
    else if((AnsiString)Sender->Controls[i]->ClassName() == "TPanel")    
       MyFonctionCaptionsGlyphes(Sender->Controls[i]);
      }
    }
    Edited : copier-coller raté..il y avait une boucle en trop

  3. #23
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par défaut
    Salut !

    En premier lieu, j'ai utilisé quelques symboliques :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enum{id_none, id_label, id_panel, id_speedbutton};
    Ensuite j'ai déclaré deux méthodes membres pour TForm1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public:		// Déclarations de l'utilisateur
        void __fastcall Targets(TWinControl *WinControl);
        int __fastcall GetControlId(TControl *Control);
    Je préfère tester si l'objet hérite d'une classe précise pour avoir une vision plus large.
    Ce se serait dommage d'ignorer des objets dérivées de la dite classe...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int __fastcall TForm1::GetControlId(TControl *Control)
    {
    if(Control->InheritsFrom(__classid(TLabel))) return id_label;
    if(Control->InheritsFrom(__classid(TPanel))) return id_panel;
    if(Control->InheritsFrom(__classid(TSpeedButton))) return id_speedbutton;
    //...
    return id_none;
    }
    La méthode suivante est récursive.
    On peut utiliser un switch sur la valeur renvoyée par la méthode GetControlId; on a ainsi une meilleure lisibilité de ce que l'on fait, en lieu et place d'un arbre logique avec ses if et ses else...

    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
    void __fastcall TForm1::Targets(TWinControl *WinControl)
    {
    TControl *Control;
    for(int j = 0; j < WinControl->ControlCount; j++)
        {
        Control = WinControl->Controls[j];
        //traite d'abord les objets dont le Control est parent
        if(Control->InheritsFrom(__classid(TWinControl)))
            {
            Targets((TWinControl*)Control);
            }
        //puis traite le Control 
        switch(GetControlId(Control))
            {
            case id_label : ((TLabel*)Control)->Caption = "Found"; break;
            case id_panel : ((TPanel*)Control)->Caption = "Found"; break;
            case id_speedbutton : ((TSpeedButton*)Control)->Caption = "Found"; break;
            //...
            }
     
        }
    }
    Pour le test, j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm1::BitBtn1Click(TObject *Sender)
    {
    Targets(this); // donc ici la racine n'est autre que Form1
    }
    Ce n'est qu'un exemple !

    A plus !

  4. #24
    Membre expérimenté Avatar de franckcl
    Homme Profil pro
    Developpeur Delphi
    Inscrit en
    Septembre 2004
    Messages
    516
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Developpeur Delphi
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2004
    Messages : 516
    Par défaut
    Citation Envoyé par aadelfa
    j'ai regardé les liens mais je n'ai rien trouvé
    concérnant les balises ,je ne les trouves pas ces balises
    Pour rentrer les balises de code:
    Lorsque tu rédiges un message, tu dois avoir un bouton "#" juste au dessus de la zone de saisie, le dernier bouton à droite.

    Tu dois avoir une barre d'outils avec G I S (123) (...) etc... et le dernier outil est le "#".
    Appuie dessus, cela va insérer une balise de début et une balise de fin dans ton message. Tu as juste à entrer ton code entre ces 2 balises. C'est tout.
    Franck

  5. #25
    say
    say est déconnecté
    Membre Expert
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Par défaut
    chapeau bas...je m'incline..
    j'avais pas pensé au coup des inherits..

    et ben le switch, suis d'accord ..je le fais d'hab mais là c t vite fait (ce qui n'excuse rien, je te l'accorde

  6. #26
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Par défaut
    Citation Envoyé par henderson
    Salut !

    En premier lieu, j'ai utilisé quelques symboliques :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    enum{id_none, id_label, id_panel, id_speedbutton};
    Ensuite j'ai déclaré deux méthodes membres pour TForm1 :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public:		// Déclarations de l'utilisateur
        void __fastcall Targets(TWinControl *WinControl);
        int __fastcall GetControlId(TControl *Control);
    Je préfère tester si l'objet hérite d'une classe précise pour avoir une vision plus large.
    Ce se serait dommage d'ignorer des objets dérivées de la dite classe...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    int __fastcall TForm1::GetControlId(TControl *Control)
    {
    if(Control->InheritsFrom(__classid(TLabel))) return id_label;
    if(Control->InheritsFrom(__classid(TPanel))) return id_panel;
    if(Control->InheritsFrom(__classid(TSpeedButton))) return id_speedbutton;
    //...
    return id_none;
    }
    La méthode suivante est récursive.
    On peut utiliser un switch sur la valeur renvoyée par la méthode GetControlId; on a ainsi une meilleure lisibilité de ce que l'on fait, en lieu et place d'un arbre logique avec ses if et ses else...

    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
    void __fastcall TForm1::Targets(TWinControl *WinControl)
    {
    TControl *Control;
    for(int j = 0; j < WinControl->ControlCount; j++)
        {
        Control = WinControl->Controls[j];
        //traite d'abord les objets dont le Control est parent
        if(Control->InheritsFrom(__classid(TWinControl)))
            {
            Targets((TWinControl*)Control);
            }
        //puis traite le Control 
        switch(GetControlId(Control))
            {
            case id_label : ((TLabel*)Control)->Caption = "Found"; break;
            case id_panel : ((TPanel*)Control)->Caption = "Found"; break;
            case id_speedbutton : ((TSpeedButton*)Control)->Caption = "Found"; break;
            //...
            }
     
        }
    }
    Pour le test, j'ai fait :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm1::BitBtn1Click(TObject *Sender)
    {
    Targets(this); // donc ici la racine n'est autre que Form1
    }
    Ce n'est qu'un exemple !

    A plus !

    salut
    j'ai creé une application ou j'ai mise 2 panels et des controles,mais quand je l'éxécute j'ai une erreur.
    expected a file name
    merci pour votre aide

  7. #27
    say
    say est déconnecté
    Membre Expert
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Par défaut
    allo...y'a quelqu'un????
    suis désolé...mais :
    - sers à rien de citer tout et n'importe quoi..
    - tu ne dis jamais si tu as essayé les solutions qu'on te propose
    - tu ne sembles pas du tout chercher par toi même..

    fais un effort stp

  8. #28
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Par défaut
    Citation Envoyé par say
    allo...y'a quelqu'un????
    suis désolé...mais :
    - sers à rien de citer tout et n'importe quoi..
    - tu ne dis jamais si tu as essayé les solutions qu'on te propose
    - tu ne sembles pas du tout chercher par toi même..

    fais un effort stp

    tes solutions non
    les autres si
    merci quand même
    a dieu

  9. #29
    say
    say est déconnecté
    Membre Expert
    Avatar de say
    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 176
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 176
    Par défaut
    alors..je te signale que c'est surtout que je t'ai pas livré une solution clé main...
    suis vraiment navré...merci à henderson donc.

    mais reconnais que c'etait difficile de savoir où tu en étais.

    bonne continuation

    P.S : pense au tag si ce n'est déjà fait merci

  10. #30
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 412
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par défaut
    Salut !

    expected a file name ???

    Y' a des jours comme ça .... où rien ne va !!!

    Il suffit d'appliquer sur les 2 panels, comme je l'ai montré pour la form.
    En effet, un TPanel dérive de TWinControl donc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Targets(Panel1);
    Targets(Panel2);
    A plus !

  11. #31
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Par défaut
    Citation Envoyé par henderson
    Salut !

    expected a file name ???

    Y' a des jours comme ça .... où rien ne va !!!

    Il suffit d'appliquer sur les 2 panels, comme je l'ai montré pour la form.
    En effet, un TPanel dérive de TWinControl donc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Targets(Panel1);
    Targets(Panel2);
    A plus !

    je vais essayer ça
    merci

  12. #32
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Par défaut
    Citation Envoyé par henderson
    Salut !

    expected a file name ???

    Y' a des jours comme ça .... où rien ne va !!!

    Il suffit d'appliquer sur les 2 panels, comme je l'ai montré pour la form.
    En effet, un TPanel dérive de TWinControl donc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Targets(Panel1);
    Targets(Panel2);
    A plus !
    salut
    j'ai essayé et ça marche,mais quand j'insére des images.bmp,mon programme prend du temps pour appliquer ces images.

    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
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    TControl *Control;
     const char *strSection;
     AnsiString A;
    TIniFile *f;
    AnsiString section;
        strSection="english";
     
    try
    {
       TStringList *lSections = new TStringList();
       f = new TIniFile("monfichier.ini");
       f->ReadSection(strSection, lSections);
     
    for(int j = 0; j < WinControl->ControlCount; j++)
        {
        for(int i=0 ; i < lSections->Count ; ++i)
         {
          section = lSections->Strings[i];
          AnsiString Valeur = f->ReadString(strSection,section,"");//paramètres = Section/Clé/Valeur par défaut
       Control = WinControl->Controls[j];
        //traite d'abord les objets dont le Control est parent
        if(Control->InheritsFrom(__classid(TWinControl)))
            {
            Targets((TWinControl*)Control);
            }
        //puis traite le Control 
        switch(GetControlId(Control))
            {
            case id_label : if (((TLabel*)Control)->Name == section)
                {
                   ((TLabel *)Control)->Caption=Valeur;} break;
     
         //   case id_panel : if (((TLabel*)Control)->Name == section)
           //    {
             //     ((TPanel*)Control)->Caption = "Found"; break;
            case id_speedbutton : if (((TSpeedButton*)Control)->Name == section)
                 {
               ((TSpeedButton*)Control)->Glyph->LoadFromFile(Valeur);} break;
            //...
            }
     
        }
         }
     
       delete lSections;
     
    }
    __finally
    {
       delete f;
    }
    }

    merci pour tout

  13. #33
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    49
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 49
    Par défaut
    Citation Envoyé par henderson
    Salut !

    expected a file name ???

    Y' a des jours comme ça .... où rien ne va !!!

    Il suffit d'appliquer sur les 2 panels, comme je l'ai montré pour la form.
    En effet, un TPanel dérive de TWinControl donc...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Targets(Panel1);
    Targets(Panel2);
    A plus !
    salut et merci beaucoup anderson ainsi que tous
    désolé d'avoir oublié de mettre
    c un peu lent mais ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void __fastcall TForm1::BitBtn1Click(TObject *Sender)
    {
    Targets(Form1);
    }

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 2 PremièrePremière 12

Discussions similaires

  1. Afficher les paramètres d'un objet dans une autre web form
    Par faridbelkcm dans le forum ASP.NET
    Réponses: 0
    Dernier message: 18/09/2012, 17h32
  2. Réponses: 1
    Dernier message: 14/08/2009, 08h50
  3. Parcourir les Form pour les fermer
    Par David dans le forum Delphi
    Réponses: 8
    Dernier message: 04/12/2006, 13h29
  4. Changer les droits sur un objet via une requete
    Par gg72160 dans le forum Sécurité
    Réponses: 1
    Dernier message: 10/06/2006, 21h14

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