Appel des procedures/appel de form

[Résolu]
Signaler
Messages postés
32
Date d'inscription
mardi 22 mars 2005
Statut
Membre
Dernière intervention
10 octobre 2011
-
Messages postés
32
Date d'inscription
mardi 22 mars 2005
Statut
Membre
Dernière intervention
10 octobre 2011
-
Bonjour;
sachant que c'est ma premiere application avec VFP.

1) J'ai crée un projet "test" pour lequel j'ai rajouter deux form " pwd.scx et transfert.scx" dont "pwd.scx" est composé de deux bouttons. boutton1.click fait appel à transfert.scx par "DO FORM transfert.scx", sachant que test, pwd, transfert sont dans le meme repertoire le message "tranfert.scx est introuvable" m'est affiché lors de l'execution de boutton1.click.

2) dans le meme pojet j'ai rajouter "debut.prg" ( dans le meme repertoire) qui contient une fonction (rev_pwd). comment je peut faire appel a cette fonction a partir de l'une des methodes de "transfert"

Merci.

7 réponses

Messages postés
828
Date d'inscription
mardi 5 octobre 2004
Statut
Membre
Dernière intervention
7 mai 2013
1
Bonjour,

et bienvenue sur ce forum.

Pense à rappeler à chaque fois la version de VFP que tu utilises, pour qu'on puisse t'aider au mieux.

Pour ta 2ème question, regarde du coté de SET PROCEDURE...
Messages postés
381
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2013
2
Regarde aussi du coté de SET PATH dans l'aide en ligne, pour que ton application sache ou trouver tes fichers.

Mike Gagnon
Messages postés
32
Date d'inscription
mardi 22 mars 2005
Statut
Membre
Dernière intervention
10 octobre 2011

bonjour;

avant tout je vous remerci pour votre collaboration.

- je travaille avec VFP9.
- effectivement mon programme ne connaissais pas le chemin des fichiers ou plus tot je l'envoyais sur un autre repertoire où il trouvais ni le begin, ni transfert.

j'ai ecris au debut de mon begin ce qui suit:

ChSys = SYS(16)
ChProgram = SUBSTR(ChSys, AT(":", ChSys) - 1)
CD LEFT(ChProgram, RAT("", ChProgram,2))&&& j'ai remplacer le 2 par 1
SET PATH TO CLASS, FORMS, HELP, IMAGES, INCLUDE, MENUS, PRG, REPORTS

je crois que le '2' le pointais sur un autre repertoire, j'ai donc remplacer ce '2' par '1' pour tester

ChSys = SYS(16)
ChProgram = SUBSTR(ChSys, AT(":", ChSys) - 1)
CD LEFT(ChProgram, RAT("", ChProgram,1))&&& j'ai remplacer le 2 par 1
SET PATH TO CLASS, FORMS, HELP, IMAGES, INCLUDE, MENUS, PRG, REPORTS

et ça marche

- pour la deuxieme question, j'ai rajouter au projet procedures.prg qui contient la fonction rev_pwd et dans le begin j'ai rajouter

SET PROCEDURE TO procedures.prg ADDITIVE

et maitenant quand je fais appel à rev_pwd dans begin.prg ça fonctionne mais je ne sais pas si c'est la meilleur methode.

je vous remerci encor une fois.
Messages postés
32
Date d'inscription
mardi 22 mars 2005
Statut
Membre
Dernière intervention
10 octobre 2011

Bonjour;

je vien de trouver une solution

dans le begin j'avais mis ce code ChSys =

SYS(16)
ChProgram = SUBSTR(ChSys, AT(":", ChSys) - 1)
CD LEFT(ChProgram, RAT("", ChProgram,2))&&& j'ai remplacer le 2 par 1
SET PATH TO CLASS, FORMS, HELP, IMAGES, INCLUDE, MENUS, PRG, REPORTS

maintenant mon programme reconnais le chemin de transfert.scx et rev_pwd

Merci
Messages postés
381
Date d'inscription
vendredi 15 octobre 2004
Statut
Membre
Dernière intervention
24 octobre 2013
2
- pour la deuxieme question, j'ai rajouter au projet procedures.prg qui contient la fonction rev_pwd et dans le begin j'ai rajouter

SET PROCEDURE TO procedures.prg ADDITIVE

C'est une façon de faire. Pas très 'objet orienté' mais plutot une méthode 'procedurale', qui date du dernier sciècle :-)
Normallement pour moi, toutes mes procédures et fonctions, je les mets dans une classe global, et je n'initialise au début du programme, comme celà toutes mes procédures sont disponible en tout temps dans la session.

Mike Gagnon
Messages postés
828
Date d'inscription
mardi 5 octobre 2004
Statut
Membre
Dernière intervention
7 mai 2013
1
Mike a parfaitement raison sur le fond: il serait bien que tu prennes dès le début des habitudes de programmation orienté objet.

Mes procédures ne sont pas non plus dans un fichier de procedures (depuis des années).
Je les répartis en 2 :
celles qui concernent un seul type d'objet sont dans des méthodes créées dans la classe depuis laquelle je dérive cet objet
celles qui doivent être accessibles de partout sont dans un objet basé sur la classe custom, que je dépose sur la classe dont tous mes forms sont dérivés
Messages postés
32
Date d'inscription
mardi 22 mars 2005
Statut
Membre
Dernière intervention
10 octobre 2011

Bonjour Mike et Michel

Je vous remerci pour ce conseil, je me suis habituer à la programmation sequentielle ( movaise habitude) mais ma methode de travaille vas certainement s'ameliorer avec votre aides et vos conseils.

Salutations;