Appel de fonction sous c++

marco -  
 marco -
Bonjour, voila sous C++ je souhaiterais faire un truc simple du style :

void __fastcall TForm1::StartClick(TObject *Sender)
{
Start(this); <appel de la fonction
}
//--------------------------------------------------------------------------

TForm1::Start(TObject *Sender)
{
ShowMessage("toto");
}

enfin un truc simple, mais bon ca ne marche pas i doit suremement manquer quelquechose.
Il me donne l'erreur :
[C++Erreur] Unit1.cpp(24): Call of nonfunction.
[C++Erreur] Unit1.cpp(29): 'TForm1::Start(System::TObject *)' is not a member of 'TForm1'.

Si vous avez la reponse cela pourra me debloquer, merci.

12 réponses

  1. Baltazar
     
    Salut marco,

    Tel que tu as ecris ton code "start" est une methode de TForm1, apparament si le compilo te donne ce message, c'est que tu n'as pas déclarer "start" dans les methodes de TForm1 (en public par exemple).
    Dans le cas ou tu ne veux pas que "start" soit une methode de TForm1, declares "start" comme ca :

    void start(void)
    {
    ShowMessage("toto");
    }

    Ce qui ne t'empeches pas de l'appeler dans ta methode "startclick", qui elle a du etre declarée comme methode dans TForm1, comme ceci :
    void __fastcall StartClick(TObject *Sender);

    voila, dis moi si ca a resolu ton probleme.
    1
    1. marco
       
      Je te remerci B altazar, ca fonctionne très bien.
      Marco.
      0
  2. Baltazar
     
    Je t'en pris marco, a ton service ...
    0
  3. marco
     
    Ca tombe bien, j'ai une autre question posé sous le nom de Menky, comment recuperer le nom d'un objet surlequel je viens de cliquer. Si tu trouve ca, alors chapeau bas.
    Marco.
    0
  4. Baltazar
     
    Oui marco j'ai deja fait ca mais je ne sais plus comment, je suis au boulot, quand je rentre je te met le source ... patience ...

    A +

    P.S : en gros tu dois utiliser le parametre de ta fonction "OnClick" (* Render je crois). Avec ce parametre tu peux recupérer un pointeur sur ton bouton, apres c'est simple, tu lis la proprieté de l'objet ("caption" pour le texte) mais tu pourras pas recupérer la propriete "name", puisque c'est le pointeur lui-meme. Mais bon, si tu galeres, attends je te dirai ca tout a l'heure, une fois chez moi.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Baltazar
     
    Bon Marco, voila ta solution :

    /* Selection = pour toi OnClick */
    /* TPlateau = pour toi TForm (ta form) */
    void __fastcall TPlateau::Selection(TObject *Sender)
    {
    /* TImage = pour toi TButton */
    TImage *selection;

    /* TImage = pour toi TButton */
    selection = (TImage *) Sender;
    }

    Maintenant tu as un pointeur (selection) sur le bouton ou t'as clické.
    Et dans la propiete Name : Selection->Name t'as le nom de ton bouton !

    Et voila ... a toi de jouer !

    A+
    0
  7. marco
     
    Je te remercie encore une fois, cela va me permettre de bien avancer et "chapeau bas". Marco.
    0
  8. marco
     
    J'ai une autre question au passage :
    Comment créer une fonction booléene qui renvoit true ou false ?
    0
  9. Baltazar
     
    bool fonction(int temp)
    {
    if( temp > 10 )
    {
    return( TRUE );
    }

    return( FALSE );
    }
    0
  10. marco
     
    en fait c ds l'entete que je n'arrive pas a la declarer je fais :
    bool fonction(int X, int Y);

    et il m'affiche un message d'erreur, la syntaxe ne doit pas etre bonne.
    0
  11. marco
     
    même sans le ; cela ne fonctionne pas, lors de l'execution il m'affiche dans une fenetre :

    Erreur dans le module Unit1 : Declaration de methode incorrecte dans la classe TForm1.

    void __fastcall MajN(int X, int Y);
    bool TestN(int X, int Y) <- declaration qui ne va pas.
    void __fastcall MajNE(int X, int Y);

    void __fastcall bool TestN(int X, int Y); ne marche pas
    void bool TestN(int X, int Y); non plus
    0