Clercq
Messages postés19Date d'inscriptionsamedi 18 décembre 2004StatutMembreDernière intervention14 juin 2006
-
30 mai 2006 à 11:42
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 2013
-
30 mai 2006 à 14:24
Voici mon probleme, lors de la compilation de mon code j'ai l'erreur suivante :
"Forme d'appel de méthode autorisée seulement pour méthodes de classe"
la fonction appelé n'est pas dans la meme forme que la fonction appellante.
La fonction appelé est faite comme suit (afin d'appeler l'autre fonction) :
uses
[...]progEnr; // declaration de l'autre forme (enfin je sais pas si on appel ça comme ça :p)
type
TForm1 = class(TForm)
[...]
procedure EnrVar1Click(Sender: TObject); //declaration de ma procedure qui va appeler la fonction
procedure TForm1.EnrVar1Click(Sender: TObject);
begin
[...]
listVarEnr := TForm4.PassageDeParam; // appel de la fonction
[...]
end;
Form appelée :
type
TForm4 = class(TForm)
[...]
function PassageDeParam: TStringList; //declaration de ma fonction
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
var
Form4 : TForm4;
heure : string;
minute : string;
seconde : string;
duree : string;
listVarEnr : TStringList;
function TForm4.PassageDeParam: TStringList;
begin
listVarEnr.Add(heure);
listVarEnr.Add(minute);
listVarEnr.Add(seconde);
listVarEnr.Add(duree);
result := listVarEnr;
end;
et voila, si vous avez une idée, et bah merci d'avance de m'en faire part :D
ThWilliam
Messages postés418Date d'inscriptionmardi 3 janvier 2006StatutMembreDernière intervention26 novembre 20134 30 mai 2006 à 14:24
Salut Clercq,
Pas mal d'erreurs dans ton code !
Uses ProgEnr : si tu as renommé l'unité associée à TForm4 (par défaut = unit4) en "progenr", ce n'est pas dans le uses de la partie interface qu'il faut y référer, mais au début de la partie implementation. D'autre part, à la compilation, Delphi te propose de lui-même de référencer une unité associée à une Forme dès qu'il voit un appel à celle-ci.
L'appel à la fonction PassageDeParam doit se faire comme ceci :
ListVarEnr := Form4.PassageDeParam; // et pas Tform4
Mais ici, il y a un autre problème : ListVarEnr = variable générale déclarée dans unité de Form4. Donc tu ne dois pas employer de fonction pour récupérer sa valeur.
procedure TForm4.PassageDeParam;
begin
listVarEnr.Add(heure);
listVarEnr.Add(minute);
listVarEnr.Add(seconde);
listVarEnr.Add(duree);
end;
donc ça donne :
procedure TForm1.EnrVar1Click(Sender: TObject);
begin
[...]
Form4.PassageDeParam; // appel de la procedure
edit1.text: = ListVarEnr[1]; // un simple exemple
end;
Dernière chose : quand tu crées une fonction ou procedure , il faut la déclarer dans la partie private (ou public) de TForm.