Pas de problème (pb), que du PowerBuilder (PB) ^^

Le forum (ô combien francophone) des utilisateurs de Powerbuilder.

Recherche rapide

Annonce

Certaines rubriques, dont des cours, sont uniquement visibles par les membres du forum ^^.
Dans la rubrique Liens & Références, vous avez accès à un sommaire de téléchargement, profitez-en !
Il existe maintenant un nouveau TOPIC "Votre CV en Ligne" accessible uniquement par demande.

#1 03-11-2008 16:36:47

Pilou007  
Membre Geek
Lieu: Bordeaux
Date d'inscription: 01-02-2007
Messages: 69
Pépites: 313
Banque: 0

[RESOLU] Appel d'un évènement d'une fenêtre active

Salut
J'ai une petit question sur une utilisation particulière des fenêtre et des menus.

Je travaille en PB 10.5 sous winXP

Voila je suis sur une appli qui utilise une fenêtre main(w_menu) à la place d'un MDI, associé à un menu (m_menu).
Dans ce menu, je peux ouvrir une autre fenêtre main (w_client) associé à un menu (m_client)
Comme vous l'imaginez, lorsque dans m_menu, j'ouvre la fenêtre client, je vais changer le menu en y plaçant le m_client.
Quand je souhaite quitter le fenêtre client, j'ai un bouton "quitter" qui appel un event de la feêtre w_client ue_quitter qui fonctionne à merveille avec le retour a mon menu de base.... Tout va bien.

Par contre dans le menu m_client, j'ai aussi un bouton quitter sous lequel il y avait du code en dur:

Code: pb

ParentWindow.changemenu(m_menu)
fbm_gestion_profil_fin('m_menu','M',m_menu)

close(w_clients)

Ca marche à merveille, mais le but est de supprimer le code spécifique pour faire appel au code de l'ue_quitter de ma fenêtre w_client...
Donc je crée une variable globale (gw_lastactive) qui est initialisée à chaque passage dans l'event activate d'une fenêtre:

Code: pb

gw_lastactive = this

ensuite dans mon menu, j'appelle

Code:

gw_lastactive.Event Dynamic ue_quitter()

ou

Code:

gw_lastactive.triggerevent( "ue_quitter")

et là rien ne fonctionne du tout....

D'ailleurs en essayant ceci

Code: pb

ParentWindow.changemenu(m_menu)
fbm_gestion_profil_fin('m_menu','M',m_menu)

close(gw_lastactive)

, il génère une erreur "nul object reference...."

En debug, la variable gw_lastactive est bien affectée, par contre

je passe par un globale car parentwindow de mon menu client est w_menu et non pas w_client....

Bref si quelqu'un a une idée....

Merci

Message de modération:

Dernière modification par Pilou007 (04-11-2008 08:51:07)

Hors ligne

 

#2 04-11-2008 07:58:33

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Appel d'un évènement d'une fenêtre active

Bonjour,

Si j'ai tous suivi, un simple PARENT.PostEvent("ue_quitter") dans ton menu devrait suffire.

Hors ligne

 

#3 04-11-2008 08:17:37

Pilou007  
Membre Geek
Lieu: Bordeaux
Date d'inscription: 01-02-2007
Messages: 69
Pépites: 313
Banque: 0

Re: [RESOLU] Appel d'un évènement d'une fenêtre active

Non cela ne fonctionne pas car la fenetre parent du menu est w_menu, or je cherche a atteindre w_clients...
Merci tout de même...
Pilou

Hors ligne

 

#4 04-11-2008 08:50:18

Pilou007  
Membre Geek
Lieu: Bordeaux
Date d'inscription: 01-02-2007
Messages: 69
Pépites: 313
Banque: 0

Re: [RESOLU] Appel d'un évènement d'une fenêtre active

Ok j'ai trouvé la raison de ce non fonctionnement...

En fait j'ai placé la variable gw_lastactive dans l'évènement activate de l'ancêtre, ce qui fait qu'elle n'est pas nulle, mais elle ne contient pas "correctement" la fenêtre active...
En la plaçant dans l'open de l'ancêtre ça fonctionne....

Si quelqu'un a une explication..... Je suis preneur...
Je clos le sujet
Merci
Pascal

Dernière modification par Pilou007 (04-11-2008 09:39:00)

Hors ligne

 

#5 04-11-2008 09:19:00

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Appel d'un évènement d'une fenêtre active

Bonjour,

Autant pour moi dans la précédente réponse, j'ai lu en diagonale.

Dans une application MDI, les fenêtres enfants doivent être ouverte avec les fonctions OpenSheet, OpenSheetWithParm.

Le comportement que tu décris ressemble à l'ouverture d'une fenêtre enfant avec un simple Open. Peux-tu le confirmer ?


Cordialement.

Hors ligne

 

#6 04-11-2008 09:38:41

Pilou007  
Membre Geek
Lieu: Bordeaux
Date d'inscription: 01-02-2007
Messages: 69
Pépites: 313
Banque: 0

Re: [RESOLU] Appel d'un évènement d'une fenêtre active

Oui c'est cela, il n'y a pas de MDI
Donc la variable globale s'impose, par contre je ne comprends pas le comportement de l'évènement activate qui ne renseigne pas correctement ma variable globale...
Merci

Hors ligne

 

#7 04-11-2008 10:45:20

buck  
Modérateur
Lieu: Dijon
Date d'inscription: 31-07-2008
Messages: 747
Pépites: 1,028,843
Banque: 171,170,849,654

Re: [RESOLU] Appel d'un évènement d'une fenêtre active

Bonjour,

Tu mets un breakpoint sur gw_lastactive = this dans l'événement activate. Tu ouvres une fois la fenêtre enfant avec Open et une fois OpenSheet.

L'événement activate n'est déclenché qu'avec une véritable application MDI, c'est à dire avec OpenSheet. En ouvrant la fenêtre avec Open en mode debug, tu verras que tu ne passes pas dans l'événement activate (uniquement avec OpenSheet).

Hors ligne

 

#8 04-11-2008 13:17:00

Pilou007  
Membre Geek
Lieu: Bordeaux
Date d'inscription: 01-02-2007
Messages: 69
Pépites: 313
Banque: 0

Re: [RESOLU] Appel d'un évènement d'une fenêtre active

OK, Merci pour l'info..
@+
Pascal

Hors ligne

 

Pied de page des forums

Propulsé par FluxBB 1.2.22