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

Delphi Discussion :

Parcourir toutes les TForm d'un projet


Sujet :

Delphi

  1. #1
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Points : 158
    Points
    158
    Par défaut Parcourir toutes les TForm d'un projet
    bonjour, existe-t-il un moyen de parcourir une a une les form d'un projet?
    je m'explique j'ai une form ou l'utilisateur peut choisir la couleur des composants
    plutot que de mettre ds chaque form le code permettant de changer la couleur des composants, je me suis dit(sous la douche) qu'il existait surement un moyen de faire une boucle pr parcourir toutes les forms
    est-ce possible ?merci

  2. #2
    Membre expert
    Avatar de TicTacToe
    Inscrit en
    Septembre 2005
    Messages
    1 940
    Détails du profil
    Informations personnelles :
    Âge : 51

    Informations forums :
    Inscription : Septembre 2005
    Messages : 1 940
    Points : 3 575
    Points
    3 575
    Section Delphi
    La mine d'or: La FAQ, les Sources

    Un développement compliqué paraitra simple pour l'utilisateur, frustrant non ?
    Notre revanche ? l'inverse est aussi vrai ;-)

  3. #3
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour

    quelque chose comme ça devrait marcher
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for i := 0 to Application.ComponentCount -1  do
      If CTemp is TForm Then
        With Components[i] as TForm do Begin
            // tes traitements
        end;
    à plus

  4. #4
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Points : 158
    Points
    158
    Par défaut
    ok je testerai tt ca demain merci

  5. #5
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    338
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 338
    Points : 383
    Points
    383
    Par défaut
    bonjour

    je viens de m'appercevoir d'une bourde dans mon dernier post:
    il faut remplacer CTemp (qui n'est pas défini ici) par Components[i]

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    for i := 0 to Application.ComponentCount -1  do
      If Components[i] is TForm Then
        With Components[i] as TForm do Begin
            // tes traitements
        end;
    à plus

  6. #6
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Points : 158
    Points
    158
    Par défaut
    merci de tes réponses, il me semble que cela devrait fonctionner, seulement maintenant mon problème est que components[j].controls n'est plus pris il ne reconnait pas components[j] comme une forme
    j'ai essayé de le mettre ds une variable de type tcomponent mais il ne l'accepte pas

    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
     
    for j := 0 to Application.ComponentCount -1  do
      If Components[j] is TForm Then
        With Components[j] as TForm do Begin
     
          For i := 0 to components[j].ControlCount-1 do
          begin
            if components[j].Controls[i] is TEdit Then
              (components[j].Controls[i] as tedit).Color:=stringtocolor(querycouleur.fieldbyname('interieur').asstring);
            if components[j].Controls[i] is Tcombobox Then
              (components[j].Controls[i] as tcombobox).Color:=stringtocolor(querycouleur.fieldbyname('interieur').asstring);
            if (components[j].Controls[i] is tdatetimepicker) then
              (components[j].Controls[i] as tdatetimepicker).Color:=stringtocolor(querycouleur.fieldbyname('interieur').asstring);
             if components[j].Controls[i] is Tdbgrid Then
              (components[j].Controls[i] as tdbgrid).Color:=stringtocolor(querycouleur.fieldbyname('interieur').asstring);
       end;
     end;

  7. #7
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Salut,

    Si je ne m'abuse ton erreur est à la dernière ligne ici ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     for j := 0 to Application.ComponentCount -1  do
      If Components[j] is TForm Then
        With Components[j] as TForm do Begin
     
        For i := 0 to components[j].ControlCount-1 do
    begin
    if components[j].Controls[i] is TEdit Then
     (components[j].Controls[i] as tedit).Color:=stringtocolor(querycouleur.fieldbyname('interieur').asstring);
     if components[j].Controls[i] is Tcombobox Then
    D'une certaine façon c'est normal, tu lui dit : avec le composant(jième) fais => pour le composant(jième) de composant(jième) ... il comprends pas ...


    Donc si je ne me trompe pas remplace par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    for j := 0 to Application.ComponentCount -1  do
      If Components[j] is TForm Then
        With Components[j] as TForm do Begin
     
        For i := 0 to ControlCount-1 do
    begin
    if Controls[i] is TEdit Then
     (Controls[i] as tedit).Color:=stringtocolor(querycouleur.fieldbyname('interieur').asstring);
     if Controls[i] is Tcombobox Then ...
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  8. #8
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Je viens de penser il est peut-être également nécessaire de lui préciser de quoi on parle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    for j := 0 to Application.ComponentCount -1  do
      If Application.Components[j] is TForm Then
        With Application.Components[j] as TForm do Begin
     
        For i := 0 to ControlCount-1 do
    begin
    if Controls[i] is TEdit Then
     (Controls[i] as tedit).Color:=stringtocolor(querycouleur.fieldbyname('interieur').asstring);
     if Controls[i] is Tcombobox Then
    ...
    A la prochaine
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  9. #9
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Points : 158
    Points
    158
    Par défaut
    ok impeccable ca marche

  10. #10
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    C'est cool


    Pense au TAG Résolu
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  11. #11
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Points : 158
    Points
    158
    Par défaut
    euh, excusez-moi encore, comment puis-je faire pr connaitre le nombre de composants d'un groupbox ?

  12. #12
    Membre actif
    Homme Profil pro
    Freelance
    Inscrit en
    Décembre 2003
    Messages
    423
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France

    Informations professionnelles :
    Activité : Freelance

    Informations forums :
    Inscription : Décembre 2003
    Messages : 423
    Points : 259
    Points
    259
    Par défaut
    Citation Envoyé par Mihalis
    bonjour, excuse-moi encore, est ce qu'il existe un moyen de connaitre le nombre de composants d'un groupbox, pcq ca marche pr tout sauf pr ce qui est dans les groupbox :s
    Pour les groupBox c'est le même principe que ce que tu fais jusqu'à présent.
    En fait il faudrait que tu rajoutes une condition sur le type du composant analysé et que s'il s'agit d'un GroupBox et bien qu'il fasse les modif que tu veux avec la même programmation que si c'était une Form.

    Le mieux pour ça c'est d'utiliser une fonction récursive.
    J'ai un exemple sous la main j'ai fait ça y'a pas longtemps le voila :
    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
     
    Procedure ChangeColor(Group : TGroupBox);
    var Index, Error, Number : Integer;
        laData : TLabel;
    Begin
      for Index := 0 to Group.ControlCount-1 do
      Begin
       if (Group.Controls[Index] is TGroupBox) then ChangeColor(Group.Controls[Index] as TGroupBox);
       If (Group.Controls[Index] is TLabel) then
          Begin
            laData:=Group.Controls[Index] as TLabel;
            Val(laData.Caption,Number,Error);
            if Error=0 then
               if Number>0 then
                 laData.Font.Color:=clBlue
               else if Number <0 then laData.Font.Color:=clRed
               else laData.Font.Color:=clBlack;
          end;
      end;
     
     
     
    End;
    Bon moi dans mon cas ça se limitait à des TGroupBox mais tu peux très bien modifier la fonction pour qu'elle gère aussi bien un composant de type TGroupBox ou TForm ...


    Voila
    "La théorie, c’est quand on sait tout et que rien ne fonctionne. La pratique, c’est quand tout fonctionne et que personne ne sait pourquoi. Ici, nous avons réuni théorie et pratique : rien ne fonctionne ... et personne ne sait pourquoi !" et malheureusement c'est souvent le cas en Développement...

  13. #13
    Membre habitué
    Inscrit en
    Avril 2003
    Messages
    316
    Détails du profil
    Informations forums :
    Inscription : Avril 2003
    Messages : 316
    Points : 158
    Points
    158
    Par défaut
    ok impeccable j'ai enfin un code qui me plait merci bcp de votre aide

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

Discussions similaires

  1. Mettre à false toutes les tables d'un projet
    Par tomm dans le forum Bases de données
    Réponses: 9
    Dernier message: 28/05/2006, 00h36
  2. Parcourir tout les Id qui commence par "dz_"
    Par FMaz dans le forum Général JavaScript
    Réponses: 28
    Dernier message: 24/03/2006, 21h46
  3. parcourir toutes les colonnes de toutes les tables???
    Par cha_cha dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/01/2006, 12h31
  4. Parcourir tout les repertoires
    Par blue dans le forum C
    Réponses: 4
    Dernier message: 24/10/2003, 23h51
  5. [VB6] [MDI] Parcourir toutes les MDIForms chargées
    Par d.carail dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 04/10/2002, 09h07

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