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 :

pte appli avec c++ builder 5


Sujet :

C++Builder

  1. #1
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 2
    Points
    2
    Par défaut pte appli avec c++ builder 5
    bonjour,
    je voudrai faire une petite application avec c++ buider. j'ai déja terminé la programmation visuelle ( placer les objets sur le form ) et j'ai besoin d'être aidé pour écrire les codes devant lié les objets.
    -dans un GroupBox j'ai placé 16 Button pour former un clavier numerique ayant: 0,1,2,3,4,5,6,7,8,9,*,#,A,B,C,D.appelé Button1.....Button16
    - sur le form j'ai placé espace Edit appellé Edit1,Edit2,Edit3,Edit4; j'ai placer deux Button appelé Validation1 et Entrer1
    - sur le form j'ai placer 10 Buton appelé Led1..........Led10.
    je voudrai que l'application puisse fonctionner comme suit:
    quand une personne se presente je saisi son non dans Edit1, avec la souris je click sur Led1 et led1 apparait dans Edit2, avec la souris je lui atribu un temps à partir de mon clavier virtuel ( de 0 à 999 secondes ) par exemple 150 et 150 apparait dans Edit3. quand edit1,edit2,edit3 sont renseignés je clique sur le button validation1 et le programme affiche un code quelconque de 5 lettre et chiffres (sauf * et # ) du clavier virtuel dans edit4. quand le code est renseigné dans edit4 on click sur entrer1 et la led1 qu'on avait choisi change de couleur ( passe par exemple au rouge ). après que les 150 secondes se soit écoulé, la led1 repasse à sa couleur initiale ( par exemple au vert ).
    ainsi de suite pour les 10autres led. je voudrais controler visuellement le temps de passage attribué à chaque personne qui se présente.

    merci de me venir en aide je suis vraiment bloqué.

  2. #2
    Membre chevronné
    Avatar de poukill
    Profil pro
    Inscrit en
    Février 2006
    Messages
    2 155
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 2 155
    Points : 2 107
    Points
    2 107
    Par défaut
    Tu utilises quel framework / GUI ?
    Tu es précis dans ce que tu veux, c'est un beau cahier des charges. Mais côté programmation on sait pas grand chose!

  3. #3
    Membre habitué Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Points : 181
    Points
    181
    Par défaut
    pour calculer le temps perso j'utilise tout simplement un timer

    tu n'as qu'a mettre sa propriété interval à 1000 pour qu'il soit de 1sec
    /**
    * Author: Tehem
    * Version: 2.0
    */
    Extension Twig pour Symfony 2.1 (Check Defined Constant)
    https://github.com/tehem/TwigConstantExtension

  4. #4
    Membre actif Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    c pas vraimen de la programmation tres poussé
    tu na aucune connaisance en c++?

    sinon met un screenshot de ta vue sa aidera lol
    Tous Probleme a sa solution. Sinon il a le bouton magique : . Et surtous :
    Et ne pas oublier :

  5. #5
    Membre actif Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    Pour les bouton "LED" il faut savoir que avec les bouton standar tu ne peut pas changé leur couleur facilement.
    Soit faut utillisé des ColorButon (téléchargeble sur le site)
    Soit utilise des panel sa ferass le meme effet que un bouton sans l'effet de clique en "3d"

    dans le onclick de chake bouton LED tu met :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    ...Form1::ButtonLed1 Onclick ...
    {
       Edit2->Text = "LED 1";
    }
     
    ...Form1::ButtonLed2 Onclick ...
    {
       Edit2->Text = "LED 2";
    }
     
    etc
    pour le temps il est plus simple que tu utilise un edit pour le saisir sinon a mon avie fo ke tu fase de la concaténation de chaine

    je regarderais de nouvo demain la il est tard lol
    a+
    Tous Probleme a sa solution. Sinon il a le bouton magique : . Et surtous :
    Et ne pas oublier :

  6. #6
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 2
    Points
    2
    Par défaut merci pour suite...
    Merci pour ton aide. j'ai moi mème compris queje devais changer le bouton led par autre chose et je cherchais dans les attribution des objet. en raisonant un peu j'ai constaté que la creation du clavier virtuel ne serra pas facile. est ce qu'onpeut avoir un code qui permet de choisir au hazard quatre boules sur douze avec les boules numeroté de b1 à b12?

  7. #7
    Membre actif Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int iVal
     
     iVal = Random(12);
     //ceci te donnera une valeur aléatoire comprise entre 0 et 11.
    Apres tu peut créer un tableau contenant des pointeur vers les 12 boules.
    Avec la valeur que t'a dans iVal sa te donneras une case du tableau et aini une boule
    Tous Probleme a sa solution. Sinon il a le bouton magique : . Et surtous :
    Et ne pas oublier :

  8. #8
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Sinon concernant le changement de couleur pour tes boutons

    Regarde du coté de TBitBtn tu devrais trouver ce qui t'intéresse

  9. #9
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !

    Tout dépend du développement envisagé.
    On peut employer des tablaux mais on peut aussi objétiser, c'est à dire rajouter deux classes pour rassembler les données sous forme, par exemple, de fiches dans un classeur.

    En ce qui concerne les événementielles, ce sont les OnClick qui vont être sollicitées.

    Je te conseille d'organiser tes caractères de cette manière :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    char Touches[] = "0123456789ABCD*#";
    a) Le pavé numérique
    Le plus simple est d'affecter la même OnClick au boutons du pavé.

    Chez moi, ça donnerait ce code :

    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
     
    void __fastcall TForm1::Button1Click(TObject *Sender)
    {
    //On récupère le bouton sur le quel on vient de cliquer
    TButton *Button = (TButton*)Sender;
    //On aura fixé les Tag des boutons de manière à contenir un index cohérent
    //avec la chaîne Touches qui contient les caractères
    if((Button->Tag >= 0) && (Button->Tag < 10))
        {
        if(Edit3->Text.Length() < 3) // 3 chiffres au maximum
            {
            Edit3->Text = Edit3->Text + (AnsiString)Touches[Button->Tag];
            }
        }
    else
        {
        // autres touches A,B,C,D,*,# ???
        }
    }

    Pour ce qui est de la génération du code (suite à Validation1) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    #include <stdlib.h> //pour random
     
    void __fastcall TForm1::Valider1Click(TObject *Sender)
    {
    for(int j =0; j < 5; j++)
        {
        Edit4->Text = Edit4->Text + (AnsiString)Touches[random(14)];
        }
    }
    Pour le reste, je pense que tu devrais y arriver.
    Je te conseille quand même d'objétiser (deux classes dérivant de TComponent, l'une pour regrouper les informations du client et gérer le timing et l'autre pour gérer l'ensemble des clients, en particulier le timing) !

    Par exemple, chez moi, ça se résume à ceci, pour la OnTimer d'un TTimer (Timer1) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    Classeur->Time();
    }

    J'ai donc une classe jClasseur avec une méthode Time :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    void __fastcall jClasseur::Time()
    {
    for(int j = 0; j < ComponentCount; j++)
        {
        ((jFiche*)Components[j])->Time();
        }
    }
    Et donc également une class jFiche avec une méthode Time :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void __fastcall jFiche::Time()
    {
    if(Compteur != 0)
        {
        Compteur--;
        if(Compteur == 0)
            {
            ((TShape*)Led)->Brush->Color = clRed;
            }
        }
    }
    Donc ces deux classes sont :

    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
     
    class jFiche : public TComponent
    {
    public :
    AnsiString Nom;
    AnsiString Temps;
    AnsiString Code;
    TComponent *Led;
    int Compteur;
        __fastcall jFiche(TComponent *AOwner, TComponent *ALed);
        __fastcall ~jFiche();
        void __fastcall Clear();
        void __fastcall Remplir(TEdit *ANom, TEdit *ATemps, TEdit *ACode);
        void __fastcall Time();
    };

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    class jClasseur : public TComponent
    {
    public :
    int FicheEnCours;
        __fastcall jClasseur(TComponent *AOwner);
        __fastcall ~jClasseur();
        void __fastcall Clear();
        void __fastcall Time();
        void __fastcall Remplir(TEdit *ANom, TEdit *ATemps, TEdit *ACode);
        AnsiString __fastcall LedName();
    };
    Pour info, voici le constructeur de jClasseur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    __fastcall jClasseur::jClasseur(TComponent *AOwner)
        : TComponent(AOwner)
    {
    FicheEnCours = 0;
    for(int j = 0; j < 10; j++)
        {
        new jFiche(this, Form1->FindComponent("Led"+IntToStr(j+1)));
        }
    }
    Mais bon... tu n'es pas obligé de faire comme moi !

    Par contre, ne pas oublier de vider le texte des Edit à chaque nouveau client !

    A plus !

  10. #10
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 2
    Points
    2
    Par défaut appli suite
    merci une fois de plus, j'ai remplacé le Tbutton par le TBitBtn et je voudrais savoir comment lui demander de changer en rouge si on le click.

    pour le randomest ce que si j'écrit:

    int i,y,x,z
    random i dans 12
    random y dans 12
    random x dans 12
    random z dans 12
    comment je peut demander de me donner le resultat finale en une valeur de 4chiffres iyxz.

    est ce que la repetition que je viens de faire est bonne, si oui c'est que j'avance.
    merci pour la suite

  11. #11
    Membre actif Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Points : 216
    Points
    216
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    int iFinal;
     
    iFinal = StrToInt( IntToStr(i) +  IntToStr(y) + IntToStr(x) + IntToStr(z) );
    Tous Probleme a sa solution. Sinon il a le bouton magique : . Et surtous :
    Et ne pas oublier :

  12. #12
    Membre confirmé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    933
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 933
    Points : 466
    Points
    466
    Par défaut
    Déjà, pour tes Bouton, tu peux soit utiliser un TBitBtn comme je te l'ai proposer précédamment ou un TSpeedButton, par contre j'ai un peut de mal à faire la différence entre les deux.

    Ensuite, il faut que tu détermine le nombre de positions différentes pour ton Bouton en renseignant la propriété NumGlyphs

    Ensuite il te faut créer une image que tu vas associer à ton Bouton dans la propriété Glyph.

    Ton image doit être comme celle que je te joint en pièce Jointe.

    Elle doit contenir autant de parties que le Nombre de position que tu as choisit. Pour mon exemple, elle en comporte 4.

    Etats dans l'odre de l'image
    - actif
    - Inactif
    - Bas
    - Haut

    Ensuite pour gérer tes état, tu as la propriété Enabled pour activer ou désactiver ton Bouton.

    et pour marquer que ton bouton est sélectionner, c'est la propriété Down sur laquelle il faut que tu joue.
    Images attachées Images attachées  

  13. #13
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 2
    Points
    2
    Par défaut appli suite
    merci à vous, votre aide me fait avancer. comme je suis un bleu j'ai compris qu'il faut diviser mon apli en plusieurs module pour mieux comprendre. mon premier module est constitué des 10 BitBtn, un Button1 et un Edit1. j'ai déjà tout construit et ça marche bien, chaque click sur un BitBtn affiche l'information sequise dans Edit1.
    maintenant je voudrai de l'aide pour qu'un click sur Button1 effacel'information dans Edit1 et change la couleur du BitBtn donc l'information se trouvais dans Edit1. ainsi de suite...
    merci.

  14. #14
    Membre habitué Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Points : 181
    Points
    181
    Par défaut
    Citation Envoyé par Baxter67 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int iVal
     
     iVal = Random(12);
     //ceci te donnera une valeur aléatoire comprise entre 0 et 11.
    Apres tu peut créer un tableau contenant des pointeur vers les 12 boules.
    Avec la valeur que t'a dans iVal sa te donneras une case du tableau et aini une boule
    perso je te conseille d'utiliser
    avant d'utiliser Random(12) comme ça la fonction sera vraiment aléatoire.
    sinon la fonction sort toujours les meme valeurs "aléatoire"
    /**
    * Author: Tehem
    * Version: 2.0
    */
    Extension Twig pour Symfony 2.1 (Check Defined Constant)
    https://github.com/tehem/TwigConstantExtension

  15. #15
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    80
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 80
    Points : 66
    Points
    66
    Par défaut
    ...une petite question en rapport avec le sujet:
    Quelle est la difference entre un TBitBtn, un TSpeedButton et un TButton??

  16. #16
    Membre habitué Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Points : 181
    Points
    181
    Par défaut
    Citation Envoyé par Arthur59 Voir le message
    ...une petite question en rapport avec le sujet:
    Quelle est la difference entre un TBitBtn, un TSpeedButton et un TButton??
    le TButton est le bouton de base

    par contre le TBitButton peut avoir une image en fond

    ce qui change se sont les propriétés que l'on peut modifier
    /**
    * Author: Tehem
    * Version: 2.0
    */
    Extension Twig pour Symfony 2.1 (Check Defined Constant)
    https://github.com/tehem/TwigConstantExtension

  17. #17
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 2
    Points
    2
    Par défaut suite appli
    bonjour et merci pour votre aide. je voudrais avoir un code qui peut me permettre dès le clic sur entrer, d'effacer les données dans edit1, edit2, edit3, edit4 et ainsi remettre tous les espace propre pour un nouvel enregistrement.
    merci

  18. #18
    Membre chevronné

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

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 374
    Points : 1 759
    Points
    1 759
    Par défaut
    Salut !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Edit1->Text = "";
    Edit2->Text = "";
    Edit3->Text = "";
    Edit4->Text = "";
    A plus !

  19. #19
    Candidat au Club
    Inscrit en
    Juillet 2007
    Messages
    8
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 8
    Points : 2
    Points
    2
    Par défaut suite appli
    merci le moderateur, ça marche trè bien. maintenant quand je click sur plusieurs bouton ( mes dix boutons de 0 à 9 ) je resoit un affichage d'un seul chiffre à la fois . je voudrais que mon Edit3 puisse m'afficher quatre chiffres afin que je puisse écrire des chiffres allant de 0 à 9999.

  20. #20
    Membre habitué Avatar de Mangacker
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    452
    Détails du profil
    Informations personnelles :
    Âge : 32
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 452
    Points : 181
    Points
    181
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Edit1->Text = Edit1->Text + "chiffre";
    /**
    * Author: Tehem
    * Version: 2.0
    */
    Extension Twig pour Symfony 2.1 (Check Defined Constant)
    https://github.com/tehem/TwigConstantExtension

Discussions similaires

  1. Réponses: 1
    Dernier message: 11/06/2014, 11h42
  2. Utiliser DirectX 9 avec C++Builder
    Par Olivier Constans dans le forum DirectX
    Réponses: 2
    Dernier message: 27/06/2005, 11h30
  3. Linker une appli en C++Builder 6, sous Window
    Par toni dans le forum C++Builder
    Réponses: 5
    Dernier message: 02/12/2004, 09h04
  4. [Kylix] [cgi] pb déploiement appli avec connexion MySQL [rés
    Par Nepomiachty Olivier dans le forum EDI
    Réponses: 3
    Dernier message: 06/08/2002, 20h09
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

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