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

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
marco
 
Je te remerci B altazar, ca fonctionne très bien.
Marco.
0
Baltazar
 
Je t'en pris marco, a ton service ...
0
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
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

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

return( FALSE );
}
0
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
Baltazar
 
pas de ; a la fin
0
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