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

Langage Delphi Discussion :

Comment accéder facilement à une liste de boutons ?


Sujet :

Langage Delphi

  1. #1
    Membre averti
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Points : 439
    Points
    439
    Par défaut Comment accéder facilement à une liste de boutons ?
    J'ai un petit probleme, j'ai une serie de bouton Button1,Button2,Button3,Button4......
    et je veux ecrire dedant de facon aleatoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    For I := 0 to 12 do begin
          jeu := random(9)+1;
                            // et la je souhaite ecrire dans 'Button+le resultat de jeu
    end;
    Par exemple si jeu = 3 je ve ecrire dans le button3 comment puis je faire

    Reponder vite svp je dois rendre le projet bientot
    MERCI d'avance a tout ce qui me reponderont

  2. #2
    Membre actif

    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    479
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2004
    Messages : 479
    Points : 267
    Points
    267
    Par défaut
    ben par exemple comme ca
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    i:=random(..);
    button1.caption:='Button'+inttostr(i);
    Maintenant si tu veux éviter d'écrire la liste des boutons tu peux les mettre dans un TList et balayer le TList en castant les termes du TList par TButton(TList[x]). ou encore metre tous les boutons dans un TPanel et recherche les composants liés au panel qui sont des boutons


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    for i:=0 to panel1.componentcount-1 do
         if Panel1.Components[i] is TButton then
              TButton(Panel1.Components[i]).Caption:=' ';
    Tu peux aussi repérer les boutons en mettant une valeur dans leur propriété Tag et en la testant...

    C'est bien ta question ?

  3. #3
    Membre averti
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Points : 439
    Points
    439
    Par défaut
    désolé j'ai du mal m'exprimer ce que je souhaite c'est ecrire dans le button(rand)

    par exempl si rand = 4

    je ve ecrire : Button4.caption := " "
    et non ecrire Button4 dans le bouton 1

  4. #4
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut
    salut , teste ton resultat et agit en fonction .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    ....
        i:=random(..); 
       if i=1 then Button1.caption:='texte1...'
       else
       if i=2 then Button1.caption:='texte2...'
       else
       if i=3 then Button1.caption:='texte3...'
    ...
    et cela pour chaque bouton.
    bye
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  5. #5
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    Toujours les mêmes questions, peut-être un petit tour dans la FAQ?
    (FindComponent..)

    Un tableau de référence à tes TButton peut faire l'affaire, le sujet a été discuté récemment.

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  6. #6
    Membre averti
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Points : 439
    Points
    439
    Par défaut re
    merci petitcoucou31 mais j'en est 99 donc sa fait chier Merci quand meme

  7. #7
    Membre averti
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Points : 439
    Points
    439
    Par défaut re e-ric
    Peut tu m'expliquer le font de ta penser stp car pas tout comris merci

  8. #8
    Membre confirmé

    Inscrit en
    Novembre 2002
    Messages
    744
    Détails du profil
    Informations forums :
    Inscription : Novembre 2002
    Messages : 744
    Points : 500
    Points
    500
    Par défaut
    Donne nous en clair ce que tu veux faire , et peut etre on arrivera a y repondre , quel est ton projet , ton probleme concret , un peu de code et ou sont tes erreurs ..

    bye
    Bye et bon code...

    Ce n'est pas tant l'aide de nos amis qui nous aide , mais notre confiance dans cette aide .

  9. #9
    DMO
    DMO est déconnecté
    Membre averti
    Avatar de DMO
    Profil pro
    Inscrit en
    Février 2004
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 290
    Points : 343
    Points
    343
    Par défaut
    e-ric te suggère (très justement) l'utilisation de FindComponent, dont tu comprendras l'utilisation grâce à l'aide de Delphi ainsi qu'à la FAQ.

    Pourquoi ?

    Car tu souhaites en fin de compte retrouver un bouton s'appelant 'bouton'+indice. C'est-à-dire que tu veux retrouver un composant en ayant son nom.
    « La simplicité est la sophistication suprême » (Léonard de Vinci)

  10. #10
    Membre expert
    Avatar de e-ric
    Homme Profil pro
    Apprenti chat, bienfaiteur de tritons et autres bestioles
    Inscrit en
    Mars 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Apprenti chat, bienfaiteur de tritons et autres bestioles

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 552
    Points : 3 918
    Points
    3 918
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    var
      Arr : Array[1..99] of TButton;
     
    procedure TForm1.OnFormCreate(Sender: TObject);
    begin
      Arr[1] := Button1;
      Arr[2] := Button2;
    ...
      Arr[99] := Button99;
    // Courage 99 lignes c'est moins que 100 !
    End;
    l'accès est ensuite direct via le tableau ! Capito ???

    e-ric

    M E N S . A G I T A T . M O L E M
    Debian 64bit, Lazarus + FPC -> n'oubliez pas de consulter les FAQ Delphi et Pascal ainsi que les cours et tutoriels Delphi et Pascal

    "La théorie, c'est quand on sait tout, mais que rien ne marche. La pratique, c'est quand tout marche, mais qu'on ne sait pas pourquoi. En informatique, la théorie et la pratique sont réunies: rien ne marche et on ne sait pas pourquoi!".
    Mais Emmanuel Kant disait aussi : "La théorie sans la pratique est inutile, la pratique sans la théorie est aveugle."

  11. #11
    Membre averti
    Avatar de jmjmjm
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2005
    Messages
    760
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2005
    Messages : 760
    Points : 439
    Points
    439
    Par défaut MERCI
    MERCI e-ric super sympa d'avoir repondu aussi rapidement

  12. #12
    Membre confirmé
    Avatar de Manopower
    Inscrit en
    Décembre 2003
    Messages
    516
    Détails du profil
    Informations forums :
    Inscription : Décembre 2003
    Messages : 516
    Points : 453
    Points
    453
    Par défaut
    J'en rajoute une couche, surtout pour ne pas te tapper 99 lignes de code (car il se pourrait qu'on te fasse la remarque : oui mais si j'ai 12000 boutons ?)

    Tu as posé avec tes petites mains les 99 boutons sur ta fiche ? tu n'as pas trouvé ça trop long ? tu ne t'es pas demandé si une tâche aussi répétitive pouvait être automatisée ?

    => Tu as donc une Form VIDE au début, on va tout créer dynamiquement.
    => Déclarer StdCtrls dans les uses

    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
     
    var
      TableauBoutons : Array[1..99] of TButton;
     
    implementation
     
    {$R *.dfm}
     
    procedure TForm1.FormCreate(Sender: TObject);
    var i,Gauche,Haut : Integer;
    begin
     
    //Création des boutons
      For i:= 1 to 99 do
      begin
        TableauBoutons[i] := TButton.create(Self);
        TableauBoutons[i].parent := self;
        TableauBoutons[i].name := 'MonBouton'+inttoStr(i);
        TableauBoutons[i].caption := IntToStr(i);
     
      end;
    //Dans un deuxième temps on place les boutons
    //(même si on peut regrouper c'est plus clair comme ça)
     
      Gauche:=50;
      Haut:= 30;
      TableauBoutons[1].top:=Haut;
      TableauBoutons[1].Left:=Gauche;
     
    For i:= 2 to 99 do //Le bouton 1 sera notre référence placée
    begin
      Haut:=Tableauboutons[i-1].top;
      Gauche:=Tableauboutons[i-1].left+75;
    //On passe à la ligne tous les 11 boutons
     
      If i in [11,21,31,41,51,61,71,81,91] then
      begin
        Haut := Haut+25;
        Gauche := TableauBoutons[1].left;
      end;
      TableauBoutons[i].top:=Haut;
      TableauBoutons[i].left:=Gauche;
     
    end;
    end;

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

Discussions similaires

  1. Comment créer facilement une liste de radiobutton ?
    Par WebPac dans le forum Windows Presentation Foundation
    Réponses: 2
    Dernier message: 01/12/2010, 16h25
  2. Réponses: 2
    Dernier message: 30/06/2006, 16h46
  3. Comment Accéder au une classe d'un meme package
    Par CrazySeb dans le forum Langage
    Réponses: 2
    Dernier message: 28/04/2006, 22h43
  4. [Procédure stockée] Comment travailler sur une liste de ...
    Par WwiloO dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/02/2006, 11h22
  5. Réponses: 5
    Dernier message: 09/08/2005, 17h38

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