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 :

animé un text +la fonction c_str()


Sujet :

C++Builder

  1. #1
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 44
    Par défaut animé un text +la fonction c_str()
    salut a tout le monde
    je suis en train de faire une application et je veux faire dans cette un text qui est dans un label mais il se bouje de droit vers le gauche
    je fais cette algorithme mais le problem il ne bouje quand je click sur le bouton
    je veux faire boujer avec un seule click et je veux que l'ecriture returne a ca position initiale
    voila mon code il trop petit
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    float k;
    for (k=0;k<3;k++)
    Label1->Left=Label1->Left-1;
    et j'ai une autre qustion pour le fonctionement du cette fonction c_str()
    et merci

    Pense aux balises de code le #

  2. #2
    Membre éclairé Avatar de jehrikhan
    Inscrit en
    Mars 2008
    Messages
    90
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 90
    Par défaut
    Bonjour,

    Si ton texte ne bouge qu'au moment ou tu clique sje suppose que c'est parceque tu l'as mis dans l'evenement OnClick, ou quelque chose du genre.
    Si tu veux un comportement du genre :

    Sur un clic : Le label fait son ptit chemin

    Il faudrait que tu utilises un composant Timer que tu pourras trouver dans l'onglet "Systeme"

    Tu définie la propriété Enabled du Timer à false

    Et tu met le code rapport au déplacement de ton label dans l'evenement OnTimer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {  
      for (int k=0;k<3;k++)
      {
        Label1->Left=Label1->Left-1;
      }
     
    }

    ensuite sur l'evenement onClick de ta form tu met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    void __fastcall TForm1::FormClick(TObject *Sender)
    {
      Timer1->Enabled = true;
    }

    Pour ce qui est de la méthode c_str() elle permet de modifier une chaine de caractere type String, AnsiString ou WideString en chaine de type c_style.
    C'est à dire grosso-modo un tableau de X caractères dont le dernier est le caractère de fin de chaine '\0'.
    Tu dois avoir plus d'information sur les chaines de caractère dans la FAQ


    Edit : ben justement dans la Faq il y a tout plein de choses concernant les chaines de caracteres :
    http://cpp.developpez.com/faq/cpp/?p...GS_type_chaine

  3. #3
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 44
    Par défaut
    oui mon ami pour le timer il fonctionne tres tres bien
    mais je veux que l'ecriture retour a ça position initiale apres avoir atteind la limite du ma forme je supose que le left de ma form est "192"
    et merci bouceau

  4. #4
    Membre averti
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Novembre 2002
    Messages
    16
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Algérie

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2002
    Messages : 16
    Par défaut
    une piste à chaud:
    - tu sauvegarde le Left initial dans un X
    - tu lances ton Timer avec un test en plus dans l'évènement OnTimer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (Label->Left==0) 
      {
         Label->Left=X;
         Timer->Enabled=false;
      }
    et rebelote à volonté...

  5. #5
    Membre averti
    Inscrit en
    Juillet 2008
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Juillet 2008
    Messages : 44
    Par défaut
    Salut mes vous n'avez pas repondre sur le returne et la fonction

  6. #6
    Membre Expert

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

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

    Ce serait quelque chose dans ce style là :

    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
     
    //--------
    __fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
    {
    Label1->Left = ClientWidth - Label1->Width;
    }
    //--------
     
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    //Testé avec Timer1->Interval = 1
    int x = Label1->Left - 7; // << à modifier selon...
    if(x < 0) x = ClientWidth - Label1->Width; // << position de départ
    Label1->Left = x;
    }
    //--------
    Pour la fluidité, il faudra jouer avec la valeur de Timer->Interval et la valeur du pas.

    Un déroulement circulaire du texte (au pixel ou au caractère près) demanderait d'autres moyens, soit avec deux labels (donc AnsiString::SubString ...) soit avec un TCustomControl (pour s'amuser à le faire graphiquement)... soit avec une classe existante (donc aller à la pèche aux composants gratuits etc...) !!!

    A plus !

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/05/2006, 00h19
  2. Réponses: 4
    Dernier message: 28/03/2006, 19h51
  3. [FLASH MX2004] Animation de textes : effet explosion
    Par icetechnik dans le forum Flash
    Réponses: 8
    Dernier message: 18/11/2005, 10h24
  4. affichage dans une boite de texte en fonction d'un choix
    Par bachilbouzouk dans le forum ASP
    Réponses: 3
    Dernier message: 19/04/2005, 14h53
  5. [CR] mise en forme d'un champs texte en fonction des données
    Par niPrM dans le forum SAP Crystal Reports
    Réponses: 6
    Dernier message: 29/06/2004, 11h57

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