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 :

TVRDemoButton ne met pas de string !


Sujet :

Composants VCL Delphi

  1. #1
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 017
    Points : 308
    Points
    308
    Par défaut TVRDemoButton ne met pas de string !
    Hello, voici mon bout de code.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    procedure TForm2.Button22Click(Sender: TObject);
    begin
          for comptage= 1 to 440 do
                begin
                VRBUT:=TVRDemoButton(form2.Findcomponent('VrDemoButton'+inttostr(comptage)));
                VRBUT.color:='clbtnface';
                end;
    end;
    Je ne pige pas vraiment pourquoi ca ne marche pas ?! Je crois qu'il y a un probleme du fait que je déclare VRBUT : string; dans les var et que VRButton ne serait pas compatible avec les strings, mais je ne sais pas trop comment faire autrement.
    Le but de ce code est que les 440 composant VrDemobutton prennent la couleur clbtnface. Quelqu'un peut il m'aider ?

  2. #2
    Membre du Club

    Inscrit en
    Janvier 2005
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 48
    Points : 61
    Points
    61
    Par défaut
    Si tu fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    VRBUT:=TVRDemoButton(........
    alors VRBUT doit être d'un type compatible avec TVRDemoButton. C'est à dire :
    - Soit de type TVRDemoButton
    - Soit d'un de ses ascendants (ancêtre)

    Je ne vois pas ce que le type String vient faire ici, surtout qu'ensuite tu tentes de définit VRBUT.Color. Où as tu vu que le type String possédait une propriété color ?

    Tu dois déclarer ta variable VRBUT de type TVRDemoButton ou t'en passer en procédant comme suit :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
          for comptage= 1 to 440 do
                With  TVRDemoButton(form2.Findcomponent('VrDemoButton'+inttostr(comptage))) do Color:='clbtnface';
    Je ne suis pas sûr que, dans le cas d'une boucle, la méthode FindComponent soit la plus efficace. Personnellement je lui préfèrerai Controls[Index] de façon à ne pas passer tous les composants en revue à chaque itération.

  3. #3
    Membre averti
    Homme Profil pro
    aux études mais 40 ans
    Inscrit en
    Juin 2004
    Messages
    2 017
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : aux études mais 40 ans

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 017
    Points : 308
    Points
    308
    Par défaut
    Je ne sais pas comment ca marche controls index, peux tu m'en dire un peu plus ?

  4. #4
    Membre du Club

    Inscrit en
    Janvier 2005
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 48
    Points : 61
    Points
    61
    Par défaut
    Chaque composant (TComponent) de Delphi possède une propriété Components[Index] où index est compris entre 0 et ComponentCount-1. Cette propriété permet de connaitre tous les composants possédés par un autre composant. Elle renvoie tous les composants, qu'ils soient des composant visuels ou non.
    Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm1.Button1Click(Sender: TObject);
    Var X: Integer;
    begin
    For x:=0 To Form1.ComponentCount-1 Do
        ShowMessage('Trouvé '+Form1.Components[X].Name+' : index '+IntToStr(X));
    end;
    Ce code associé à un bouton va te lister, un par un, tous les composants présents sur Form1.

    De la même manière, il existe une propriété Controls[Index] avec index de 0 à ControlCount. Cette propriété appartient aux composants de type TControl et ses descendants (TForm, TPanel, etc). Elle permet de lister les "controls" contenus dans un autre control fenêtré. Elle ne renvoie que les controls et pas les autres composants. Par exemple, si je veux connaître tous les controls contenus dans ma fiche Form1 j'écrirai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    procedure TForm1.Button2Click(Sender: TObject);
    Var X: Integer;
    begin
    For x:=0 To ControlCount-1 Do
        ShowMessage('Trouvé '+Controls[X].Name+' : index '+IntToStr(X));
    end;
    Lorsque les éléments recherchés sont de type TControl ou descendant on utilisera la propriété Controls. C'est le cas pour toi qui cherche des TButtons. Par contre si tu avais cherché des composants tels que TQuery, TTable, TTimer, etc tu aurais dû utiliser Components[] puisqu'il ne sont pas dérivés de TControl.
    En regardant l'aide associée à chaque élément de Delphi tu peux voir d'où il vient en cliquant sur "Hiérarchie".

    Pour revenir à ton cas, les boutons de Delphi (BitBtn, Button et SpeedButton) n'ont pas de propriété Color. Voici comment trouver tous les boutons (TButton) de ta fiche et mettre le texte en gras:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    procedure TForm2.Button22Click(Sender: TObject);
    Var X: Integer;
    begin
    For x:=0 To ControlCount-1 Do
        begin
        If Controls[X] Is TButton Then
           With Controls[X] As TButton Do Font.Style:=[fsBold];
        end;
    end;
    L'aide de Delphi explique bien tous ces termes et je te conseille de la regarder.

Discussions similaires

  1. [Menu] Menu ne se met pas correctement en place
    Par white-rabbit dans le forum Java ME
    Réponses: 1
    Dernier message: 27/11/2007, 15h15
  2. Update Récalcitrante !! Ne met pas à jour !
    Par samlepiratepaddy dans le forum Access
    Réponses: 14
    Dernier message: 28/10/2005, 09h31
  3. un update qui ne met pas à jour
    Par dor_boucle dans le forum Requêtes
    Réponses: 3
    Dernier message: 14/10/2005, 09h31
  4. [JList] Composant qui ne se met pas a jour
    Par ouedmouss dans le forum Composants
    Réponses: 6
    Dernier message: 31/08/2005, 17h07
  5. probleme avec requete sql aime pas les strings
    Par lil_jam63 dans le forum Bases de données
    Réponses: 3
    Dernier message: 24/02/2004, 14h45

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