PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV 2024 → OuvreFille et code qui suit
OuvreFille et code qui suit
Started by Pampi, Oct., 07 2005 4:00 PM - 5 replies
Posted on October, 07 2005 - 4:00 PM
Bonjour,

J'utilise une instruction OuvreFille à partir d'une fenêtre libre.

Mon problème est qu'il faudrait qu'à la fermeture de la fenêtre fille, des procédures locales à la fenêtre libre et/ou du code se déroulent au niveau de ma fenêtre libre (1ère fenêtre du projet).

Or, dans l'aide de OuvreFille, il est stipulé :

Lors de l'appel de la fonction OuvreFille , les traitements suivants sont exécutés :
exécution du code "Déclaration des globales" de la fenêtre fille,
exécution des codes d'initialisation des champs (l'ordre est indéterminé),
exécution des traitements suivant l'appel de la fonction OuvreFille de la fenêtre mère,
affichage de la fenêtre fille.


C'est bien entendu le point " exécution des traitements suivant l'appel de la fonction OuvreFille de la fenêtre mère" qui me pose problème : y a-t-il un moyen de contourner ce problème ?

Ex : la fenêtre mère contient une liste de clients avec une saisie de paramètres (une dizaine et autant de requêtes derrière + plusieurs boutons de lancement de ces requêtes) pour ne faire afficher que certains clients.

La fenêtre fille ouvre la fiche client pour modif ou création.

Je ne peux donc pas faire un TableAffiche ou relancer les requêtes après le OuvreFille puisqu'il va l'éxécuter avant l'affichage de la fenêtre fille.

Quel est le moyen de gérer tout cela (du code à la fermeture de la fenêtre fille me semblerait incongru ...) ?


Merci par avance pour vos réponses .


Pampi
Posted on October, 07 2005 - 5:08 PM
Pour ne pas compliquer le pb, j'avais volontairement parlé d'1 fenêtre fille. La réalité est plus compliquée que ça.

1er écran = fenêtre libre avec 1 onglet : 1 volet liste de vendeurs et 1 volet liste d'acquéreurs.

Depuis la fenêtre libre, je veux pouvoir ouvrir une fenêtre fiche vendeur et une fenêtre fiche acquéreur en même temps (je ne veux pas utiliser le MDI).

Voilà, voilà ...

Merci.

Pampi
Posted on October, 07 2005 - 6:29 PM
Bonjour,

Avez vous réélement besoin d'une fenêtre fille ?

Dans votre cas, une fenêtre modale est peut être nécéssaire....

--
Ed en Ligne


"Pampi" <Pampi@wanadoo.fr> a écrit dans le message de news:
43466aa3$1@news.pcsoft.fr...


Bonjour,

J'utilise une instruction OuvreFille à partir d'une fenêtre libre.

Mon problème est qu'il faudrait qu'à la fermeture de la fenêtre fille, des
procédures locales à la fenêtre libre et/ou du code se déroulent au niveau
de ma fenêtre libre (1ère fenêtre du projet).

Or, dans l'aide de OuvreFille, il est stipulé :

Lors de l'appel de la fonction OuvreFille , les traitements suivants sont
exécutés :
exécution du code "Déclaration des globales" de la fenêtre fille,
exécution des codes d'initialisation des champs (l'ordre est indéterminé),
exécution des traitements suivant l'appel de la fonction OuvreFille de la
fenêtre mère,
affichage de la fenêtre fille.


C'est bien entendu le point " exécution des traitements suivant l'appel de
la fonction OuvreFille de la fenêtre mère" qui me pose problème : y a-t-il
un moyen de contourner ce problème ?

Ex : la fenêtre mère contient une liste de clients avec une saisie de
paramètres (une dizaine et autant de requêtes derrière + plusieurs boutons
de lancement de ces requêtes) pour ne faire afficher que certains clients.

La fenêtre fille ouvre la fiche client pour modif ou création.

Je ne peux donc pas faire un TableAffiche ou relancer les requêtes après
le OuvreFille puisqu'il va l'éxécuter avant l'affichage de la fenêtre
fille.

Quel est le moyen de gérer tout cela (du code à la fermeture de la fenêtre
fille me semblerait incongru ...) ?


Merci par avance pour vos réponses .


Pampi




Posted on October, 07 2005 - 7:46 PM
Pampi a écrit :

Bonjour,

J'utilise une instruction OuvreFille à partir d'une fenêtre libre.

Mon problème est qu'il faudrait qu'à la fermeture de la fenêtre fille, des procédures locales à la fenêtre libre et/ou du code se déroulent au niveau de ma fenêtre
libre (1ère fenêtre du projet).

Or, dans l'aide de OuvreFille, il est stipulé :

Lors de l'appel de la fonction OuvreFille , les traitements suivants sont exécutés :
exécution du code "Déclaration des globales" de la fenêtre fille,
exécution des codes d'initialisation des champs (l'ordre est indéterminé),
exécution des traitements suivant l'appel de la fonction OuvreFille de la fenêtre mère,
affichage de la fenêtre fille.


C'est bien entendu le point " exécution des traitements suivant l'appel de la fonction OuvreFille de la fenêtre mère" qui me pose problème : y a-t-il un moyen de
contourner ce problème ?

Ex : la fenêtre mère contient une liste de clients avec une saisie de paramètres (une dizaine et autant de requêtes derrière + plusieurs boutons de lancement de ces
requêtes) pour ne faire afficher que certains clients.

La fenêtre fille ouvre la fiche client pour modif ou création.

Je ne peux donc pas faire un TableAffiche ou relancer les requêtes après le OuvreFille puisqu'il va l'éxécuter avant l'affichage de la fenêtre fille.

Quel est le moyen de gérer tout cela (du code à la fermeture de la fenêtre fille me semblerait incongru ...) ?


Merci par avance pour vos réponses .


Pampi


Faire dans la fenetre mère une procédure "ReAffiche" qui servira à raffraichir la table et relancer les requetes. Lors de la fermeture de la fenetre fille
faire:
ExecuteTraitement("FenetreMere.ReAffiche",trtProcedure)

Ca devrait marcher.

--
Pascal
N0.pascal.SPAM@efpe.biz
Ne garder que le prénom pour me joindre
Posted on October, 08 2005 - 12:59 PM
Bonjour,

Je poste simplement ma méthode pour réaliser ce genre de choses, sans aucune prétention aucune...

Toutes mes fenetre (listes ou fiches) possédent une procédure Refresh() qui execute les requetes / traitements necessaires (par exemple une fiche client avec 15 onglets, je vais charger uniquement le contenu de l'onglet en cours à l'appel de refresh).

Ensuite j'ai simplement un refresh() dans le traitement "prise de focus de la fenetre" de chacune de mes fenetres, un refresh() dans mon bouton "rechercher", toujours le même refresh dans le traitement "modification de onglet" etc...

On perd certe un peu de temps puisque j'actualise systématiquement les listes sur la prise de focus, mais en contre partie, sur les grosses applis, je n'ai plus aucun problème d'incohérence due par exemple à une liste de fenetre interne non actualisée...

Sur les listes affichant vraiment beaucoup d'enregistrements je limite eventuellement un peu l'utilisation du refresh sur la prise de focus, mais globalement, avec des requêtes bien optimisée, qui n'affichent que le necessaire, je suis trés satisfait de ma technique.

Mais je reste persuadé qu'une méthode de programmation ultra générique, même si elle est un peu moins performante, limite un maximum les bugs...

En espérant avoir aidé, et à l'acoute des méthodes des autres concernant ce point...
Posted on October, 10 2005 - 11:36 AM
Merci à Pascal F et 2501 pour vos réponses que je vais de ce pas tester.

Bonne journée.

Pampi