PC SOFT

GRUPOS DE DISCUSSÃO PROFISSIONAL
WINDEVWEBDEV e WINDEV Mobile

Inicio → WINDEV 2024 → Comment "Empiler" des commandes
Comment "Empiler" des commandes
Iniciado por jp.bloch, jul., 16 2005 8:03 PM - 7 respostas
Publicado em julho, 16 2005 - 8:03 PM
A partir d'une option du menu, je voudrais exécuter la séquence d'instructions suivantes :

1. Ouvre(Fenêtre_MaTable) // Ouvre la fenêtre avec table
2. TableSelectPlus(Fenêtre_MaTable.MaTable) // Sélectionne toutes les lignes
3. ExecuteTraitement(Fenêtre_MaTable.MonBouton, trtClic) // Exécute le code de mon bouton
4. Ferme(Fenêtre_MaTable) // Referme la fenêtre

Avec WinDev, cela ne marche pas puisqu'il me rend la main après Ouvre() et donne un message "Le champ 'Fenêtre_MaTable.MaTable' est inconnu lorsque je ferme la fenêtre.
Idem si je supprime les instructions Ouvre() et Ferme().

Comment coder ces fonctions ?

Merci de votre aide.
Jean-Pierre
Publicado em julho, 17 2005 - 10:23 AM
Salut !


On 16-Jul-2005, "Jean-Pierre Bloch" <jp.bloch@monsieur-store.net> wrote:

A partir d'une option du menu, je voudrais exécuter la séquence
d'instructions suivantes :

1. Ouvre(Fenêtre_MaTable) // Ouvre la fenêtre
avec table
2. TableSelectPlus(Fenêtre_MaTable.MaTable) // Sélectionne toutes les
lignes
3. ExecuteTraitement(Fenêtre_MaTable.MonBouton, trtClic) // Exécute le
code de mon bouton
4. Ferme(Fenêtre_MaTable) // Referme la fenêtre

Avec WinDev, cela ne marche pas puisqu'il me rend la main après Ouvre() et
donne un message "Le champ 'Fenêtre_MaTable.MaTable' est inconnu lorsque
je ferme la fenêtre.
Idem si je supprime les instructions Ouvre() et Ferme().

Comment coder ces fonctions ?

Merci de votre aide.
Jean-Pierre



C'est évidemment un comportement normal ... L'instruction Ouvre() ouvrant
une fenêtre en mode modal ( c'est à dire qu'elle prend le focus et ne le
rend à la fenêtre mère qu'à sa fermeture) ...
Pour contourner, utiliser un ouvresoeur(), voir un ouvrefille(), ou ouvrir
la fenêtre en lui passant un paramètre (par exemple le nom d'une procédure
locale à cette fenêtre), et si ce paramêtre n'est pas vide, dans la fenêtre
appellée, executer cette procedure ...

Bien à toi ...

--
Marcel Berman
c/o Managing Business SPRL
Allée du Petit Paris, 11
B - 1410 - Waterloo
Tel : +32 2 351.60.64
Fax : +32 2 351.45.78
Gsm : +32 475.799.477
Publicado em julho, 17 2005 - 2:26 PM
Les opérations de 2 à 4 sont à mettre dans le code d'ouverture de ta fénêtre "Fenêtre_MaTable"

Bien à toi

Pierre Devillers
Publicado em julho, 18 2005 - 10:54 AM
Il faut utiliser la fonction OuvreFille(Fenetre_MaTable). De cette façon, la fenêtre ouverte n'est pas modale.

Frédéric.
Publicado em julho, 18 2005 - 2:11 PM
Merci de ta réponse.

Effectivement je n'utilise jamais les fenêtres MDI donc je ne pense pas à utiliser ces fonctions.
Je vais les tester.
Publicado em julho, 18 2005 - 2:14 PM
J'y ai un peu pensé mais ces actions ne sont pas systématiques.
Ce n'est qu'un cas particulier de l'utilisation de cette fenêtre.

Merci de ta réponse
Jean-Pierre
Publicado em julho, 18 2005 - 2:15 PM
Merci pour cette "bonne" réponse.

C'est ce que je vais faire.
Bon dev.
Jean-Pierre
Publicado em julho, 18 2005 - 5:22 PM
Bonjour,

Mettre ton code à exécuter dans un bouton de commande (Ma_fenêtre.Mon_bouton).

Le lancer depuis une autre fenêtre par ExecuteTraitement(Ma_fenêtre.Mon_bouton,trtclic)

Laisser la fenêtre ouverte, pourquoi pas ?

La rendre active si nécessaire à la demande par

FenEtat(Ma_fenêtre, ActifDevant)

Les paramètres Invisible ou HorsEcran permettent de ne pas la fermer.

Bien cordialement,

Jacques De Schryver