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 :

probleme comment " indexer" un objet


Sujet :

C++Builder

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    3
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 3
    Par d�faut probleme comment " indexer" un objet
    salut, je souhaite utiliser une vingtaine de TrackBar et j aimerais pourvoir
    entre-autre ranger la valeur de chacun des trackBar dans un tableau d une
    fa�on automatique en faisant comme dans une boucle
    le but recherch� serait l'equivalent de ca :
    for(int i=1;i<=20;I++)
    Tab[i]=TrackBar[i]->Position ; Mais je sais que ca ne marche pas comme une variable
    Comment pouvoir y rem�dier.

    et j aimerais aussi en utilisant 2 timers pour creer un cycle de 100 ms par ex ,a chaque fois que je bouge un des 20 trackbar , qu'un fonction r�cup�re l'index ( de 1 a 20 ) du trackbar concern� afin que ds timer1timer je puisse ecrire
    tab[index]=Trackbar[index]->Position; ainsi ca m evite d ecrire dans chaque
    evenement onchange des trackbar quasiment les memes instructions

    Merci de m aider

  2. #2
    Membre �m�rite
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    573
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 573
    Par d�faut
    j ai eu le meme probleme il y a quelques temps

    c est pas r�solu

    on m avait propos� de creer des objets dynamiquement

    leur ordre de creation correspondant � l index

    voil� , ... , je suivrai de pres ce sujet

  3. #3
    Membre Expert
    Avatar de sat83
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Mars 2004
    Messages
    1 040
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France, Haut Rhin (Alsace)

    Informations professionnelles :
    Activit� : D�veloppeur informatique

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 040
    Par d�faut
    Pour ta boucle sur les TrackBar, tu peux utiliser FindComponent :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
      TTrackBar *tb;
      for(int i=1; i<10;i++)
      {
         tb = (TTrackBar*) FindComponent( "TrackBar" + IntToStr(i) ) ;
         Tab[i] = tb->Position ;
      }
    A toi d'ajouter les tests, protections pour ne pas g�n�rer d'exception si un composant n'est pas trouv�.

    Pour l'autre question, affecte le m�me �v�nement OnChange a tous tes TrackBar puis tu peux faire :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    void __fastcall TForm1::TrackBar1Change(TObject *Sender)
    {
    //récupération du TrackBar ayant généré l'événement  
      TTrackBar *tb = (TTrackBar*) Sender;
      [...]
    }
    Par contre quel est l'int�r�t d'avoir un tableau avec les positions de tes TrackBar?

  4. #4
    Membre Expert

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 417
    Par d�faut
    Salut !

    On suppose que tous les trackbars existent et que l'on a affect� une OnChange � TrackBar1
    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
     
    TTrackBar *TrackBars[4]; // donc une vingtaine chez toi
    //----------
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
    //Passage obligé pour remplir le tableau :
    TrackBars[0] = TrackBar1;
    TrackBars[1] = TrackBar2;
    TrackBars[2] = TrackBar3;
    TrackBars[3] = TrackBar4;
    //... même s'il y en a une vingtaine ... 
    // c'est pas la mer à boire avec du copier coller intelligent et 
    // une suite de modifications qui en seront tout aussi intelligentes
     
    //Code facultatif qui ne dépend que de ce qui aura été initialisé à l'édition
    for(int j = 1; j < 4; j++)
        {
        TrackBars[j]->Tag = j;
        TrackBars[j]->OnChange = TrackBar1->OnChange;
        }
    }
    //----------
    void __fastcall TForm1::TrackBar1Change(TObject *Sender)
    {
    Label1->Caption = ((TTrackBar*)Sender)->Position;
    }
    //----------
    A noter que si on s�lectionne tous les TrackBars, on devrait normalement pouvoir leur affecter une unique OnChange.
    Il n'y a bien que pour le Tag o� il faut proc�der un par un (au fond ... �a va assez vite puisque l'inspecteur d'objets de BCB reste fig� sur la derni�re propri�t� qui a �t� manipul�e, donc de trackbar en trackbar ...) !
    Normalement, on n'a que le tableau � initialiser !

    A plus !

Discussions similaires

  1. R�ponses: 5
    Dernier message: 30/05/2005, 16h58

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