VFox 7 Forms et read events

rao64 Messages postés 11 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 17 mars 2011 - 19 janv. 2009 à 15:04
rao64 Messages postés 11 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 17 mars 2011 - 20 janv. 2009 à 18:42
Bonjour,

j'ai utilisé Dbase puis fox à l'époque du procédural en mode texte (années 80) et je suis un peu largué dans l'environnement objet de VFP7.

J'essaie de commencer par du très simple. Un prog qui est le "main" de mon projet et qui appelle un form avec read events avant et clear events après (comme lu dans les divers post à ce sujet)

le form a été créé "à la main" sans assistant (mais pas le projet c'est peut etre la source de mon problème)
lorsque j'execute do form ça fonctionne ormalement
lorsque je lance cela depuis le PRG rien à l'cran et je dois canceler le prg.
Etonnant non ?

Merci par avance à ceux qui prendrons le temps de me lire et éventuellement de me répondre.
Peut-on trouver des tutoriaux ou une doc didactique sur l'utilisation des form sans embarquer du code hérité que l'on ne peut pas toujours controler ?

A bientot de vous lire
Fabien

3 réponses

rao64 Messages postés 11 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 17 mars 2011
20 janv. 2009 à 12:19
Bonjour,

J'ai réussi à débloquer cette situation en lisant http://www.foxprofr.com/forum/sujet-GENERATION-EXECUTABLE_861029.aspx
que je n'avais pas trouvé avant.
Maintenant cela fonctionne mais j'ai d'autre problèmes ailleurs.

1/ comment changer proprement la propriété "readonly" des controles de mon form.
je pensais à une variable dont la valeur agirait sur cette propriété mais cela ne semble pas possible
j'ai aussi essayé de modifier thisform.control.readonly = .f.  en activate event du form puis en le mettant à .t. lorsque l'on clic sur le bouton modif , mais cela me renvoit de vilain message d'erreur

2/ mon projet a hérité qlq part d'un set défaut qui me plante dès que je génère un EXE. J'ai beau placer un DEFAULT dans le config.fpw il est overridé.(je place un WAIT WINDOW SYS(5) + SYS(2003)) pour vérifier sur quelle base démarre mon traitement

 J'ai cherché dans les proppriété du projet qui "pointent" bien dans le bon répertoire. J'ai aussi vérifié les propritétés de la base que néni.
Comment ce paramètre peut-il bouger  sans que le programmeur le sache ?

Merci à ceux qui prendront le temps de lire voire de répondre
Fabien
0
michelatoutfox Messages postés 828 Date d'inscription mardi 5 octobre 2004 Statut Membre Dernière intervention 7 mai 2013 1
20 janv. 2009 à 17:02
Bonjour,

pourquoi veux-tu changer la propriété readonly des controles de ton form? si tu veux modifier cette propriété dans du code, tu peux:
1) utiliser la méthode SETALL au niveau du container des controles (donc le form si tes controles sont directement dans le form, ou bien le container si tu les a mis dans un container, ou bien la page de pageframe...)
ou bien
2) parcourir la collection des controles du form avec une boucle FOR EACH loControl in this.controls / NEXT et tu agit sur loControl
3) parcourir le tableau des controles avec une boucle FOR i=1 to this.controlCount / ENDFOR et tu agis sur this.Controls(i)

en ce qui concerne ton SET DEFAULT et ton SET PATH, il faut comprendre que ton exe va récupérer les valeurs par défaut définies dans VFP. Il te faut déclarer tes settings explicitement dans ton code pour que ton exe les retrouve.
les settings sont (pour quasiment tous) valables uniquement pour la session de donnée courante. Donc si ton form a une session de données privée, il te faut répéter ces settings pour chaque form:
le mieux est de le faire au niveau de la classe dont vont dériver ces forms (comme ça tu ne codes ces setting qu'une seule fois). tu vas coder dans le beforeopentables du dataenvironment (ç'est là que ça doit se faire selon les règles de l'art), mais il est très fréquent de le coder dans le load du form.
0
rao64 Messages postés 11 Date d'inscription dimanche 23 novembre 2008 Statut Membre Dernière intervention 17 mars 2011
20 janv. 2009 à 18:42
Bonjour Michel,

Merci pour cette réponse.
Ma question était mal posée. En effet, la propriété readonly n'est peut etre pas la bonne manière de répondre à mon objectif.

En conséquence je vais commencer par expliquer ce que je cherche.
Je fais des forms super simple avec des boutons "fait main" (suivant préc. modif et quit). J'ai constaté qu'en version de base générée par le quick form, le champs de ma tables sont toujours en mode édition si je met le focus dans unb champs et que je modifie l'information.

je cherche donc une solution pour que l'accès aux champs soit interdit sauf lorsque je clic sur mon bouton modif.
Il y a sans doute une manière simple de réaliser cela. Comment le ferais tu ?

pour le set path
le data session du form est à default comme le loadevent
dans le dataenvironement; beforeopentable =default
j'ai aussi été faire un tour dans la classe générée par l'assistant projet et je n'ai pas trouvé de path ou default" en dur"
je vais continuer à passer en revue les propriétés mais je me demande aussi si je cherche au bon endroit

je comprend qu'il faille une bonne pratique pour maitriser tout ces paramètres. J'admets aussi que le @ l,c say était un peu à bout de souffle et imcompatible avec un environnement graphique.
Toutefois, je me demande vraiement si cette richesse de paramètres n'est pas un peu trop luxuriante ?
Qu'en penses tu ?

Merci pour cette réponse et merci encore su tu as le temps de lire ce post

Fabien
0