Appel de fonction sous c++

Fermé
marco - 25 avril 2003 à 13:51
 marco - 2 mai 2003 à 14:47
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.
A voir également:

12 réponses

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
Je te remerci B altazar, ca fonctionne très bien.
Marco.
0
Je t'en pris marco, a ton service ...
0
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
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
Ok, je te remercie. Marco.
0
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
Je te remercie encore une fois, cela va me permettre de bien avancer et "chapeau bas". Marco.
0
J'ai une autre question au passage :
Comment créer une fonction booléene qui renvoit true ou false ?
0
bool fonction(int temp)
{
if( temp > 10 )
{
return( TRUE );
}

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