Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

evenement windev

21 réponses
Avatar
Jacques TREPP
Bonjour,

je voudrais pouvoir ouvrir une fenêtre de mon appli (un agenda, en
l'occurrence)
quel que soit le niveau où on se trouve dans l'application.

Je le fais déjà avec la touche F1 qui lance un exécutable autonome :

g_evenement_planning = Evénement("lance_planning", "*.*", WM_HELP)

PROCEDURE lance_planning()
ferme_requetes()
param_envoyes est une chaîne
param_envoyes = "[LOGIN];"+g_user_id+";"+g_user_password
DDELance(fRepEnCours()+"\Avoplan_V10.Exe "+param_envoyes,DDEActif,Faux)

Je voudrais le faire avec la touche F10. J'ai récupéré ce que j'avais fait
en WD55 :
even=evenement("EVEPROC","*.*",274)
Procédure EVEPROC()
si _eve.wmessage = 274 alors
si _eve.wparam=61696 alors
ouvre("agenda")
fin
FIN

Ce code est conservé pour compatibilité.
Si j'appuie sur F10 dans le menu paincipal, ça fonctionne
si je le fais dans la première sous-fenêtre, ça fonctionne encore.
au-delà, ça ne fonctionne plus. Par contre, le clic sue la croix execute la
procédure de l'évènement. !

bref, que du bonheur.
j'ai testé VK_F10 et VK_F2 sans succès.

Merci de m'aider.


--
Jacques TREPP
SAPAM SA
3, rue Jean Mermoz
81160 - ST JUERY
jacques.trepp-nospam-@free.fr

10 réponses

1 2 3
Avatar
Daniel
JeAn-PhI a écrit :
Daniel a utilisé son clavier pour écrire :
JeAn-PhI a écrit :
Daniel avait soumis l'idée :
Jacques TREPP a écrit :

Merci beaucoup Albert !
Voici le code qui fonctionne :

g_evenement_Agenda = Evénement("ouvre_agenda", "*.*", WM_SYSKEYDOWN)

et la procédure :

PROCEDURE ouvre_agenda()
SI _EVE.wParam = 121 ALORS
ferme_requetes()
Ouvre(AGENDA)
FIN

Jacques TREPP



J'avais pas vu que je t'avais donné la mauvaise constante :-(

J'aurais dû testé.



bonjour

est ce que sur le même principe on peut capturer l'ouverture d'une
fenêtre ?

merci




Oui, comme la fermeture à partir du moment que c'est un évènement (ce
qui est le cas).



merci mais quel cet évènement ?




Bonjour,

désolé de te fournir une réponse flou, mais il y en a plusieurs. Car
lors de l'ouverture d'une fenêtre c'est une série d'évènements et dans
mon cas je n'utilise pas le premier et dans un projet MDI donc je ne
sais plus.

Il va falloir que tu les traces ce n'est pas difficile à faire.

dans le bouton qui déclenche l'ouverture de la fenêtre 2

gEve = evenement("pTrace","*.*",0)
ouvre(fenetre2)


gEve est entier //une globale projet

procédure ptrace
code pour tracer
_eve.nom, _eve.wmessage et _eve.wparam dans un fichier.
Il faut surtout pas afficher la fenêtre de trace car tu vas polluer ta
trace.


dans la fenêtre2

tu mets dans le code de prise de focus

finevenement(gEve)



Avec ces infos tu dois pouvoir te débrouiller.

--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
JeAn-PhI
Daniel avait soumis l'idée :
JeAn-PhI a écrit :
Daniel a utilisé son clavier pour écrire :
JeAn-PhI a écrit :
Daniel avait soumis l'idée :
Jacques TREPP a écrit :

Merci beaucoup Albert !
Voici le code qui fonctionne :

g_evenement_Agenda = Evénement("ouvre_agenda", "*.*", WM_SYSKEYDOWN)

et la procédure :

PROCEDURE ouvre_agenda()
SI _EVE.wParam = 121 ALORS
ferme_requetes()
Ouvre(AGENDA)
FIN

Jacques TREPP



J'avais pas vu que je t'avais donné la mauvaise constante :-(

J'aurais dû testé.



bonjour

est ce que sur le même principe on peut capturer l'ouverture d'une
fenêtre ?

merci




Oui, comme la fermeture à partir du moment que c'est un évènement (ce qui
est le cas).



merci mais quel cet évènement ?




Bonjour,

désolé de te fournir une réponse flou, mais il y en a plusieurs. Car lors de
l'ouverture d'une fenêtre c'est une série d'évènements et dans mon cas je
n'utilise pas le premier et dans un projet MDI donc je ne sais plus.

Il va falloir que tu les traces ce n'est pas difficile à faire.

dans le bouton qui déclenche l'ouverture de la fenêtre 2

gEve = evenement("pTrace","*.*",0)
ouvre(fenetre2)


gEve est entier //une globale projet

procédure ptrace
code pour tracer
_eve.nom, _eve.wmessage et _eve.wparam dans un fichier.
Il faut surtout pas afficher la fenêtre de trace car tu vas polluer ta trace.


dans la fenêtre2

tu mets dans le code de prise de focus

finevenement(gEve)



Avec ces infos tu dois pouvoir te débrouiller.



ok merci

--
Cordialement JeAn-PhI
Avatar
JeAn-PhI
Daniel avait écrit le 19/11/2008 :
JeAn-PhI a écrit :
Daniel a utilisé son clavier pour écrire :
JeAn-PhI a écrit :
Daniel avait soumis l'idée :
Jacques TREPP a écrit :

Merci beaucoup Albert !
Voici le code qui fonctionne :

g_evenement_Agenda = Evénement("ouvre_agenda", "*.*", WM_SYSKEYDOWN)

et la procédure :

PROCEDURE ouvre_agenda()
SI _EVE.wParam = 121 ALORS
ferme_requetes()
Ouvre(AGENDA)
FIN

Jacques TREPP



J'avais pas vu que je t'avais donné la mauvaise constante :-(

J'aurais dû testé.



bonjour

est ce que sur le même principe on peut capturer l'ouverture d'une
fenêtre ?

merci




Oui, comme la fermeture à partir du moment que c'est un évènement (ce qui
est le cas).



merci mais quel cet évènement ?




Bonjour,

désolé de te fournir une réponse flou, mais il y en a plusieurs. Car lors de
l'ouverture d'une fenêtre c'est une série d'évènements et dans mon cas je
n'utilise pas le premier et dans un projet MDI donc je ne sais plus.

Il va falloir que tu les traces ce n'est pas difficile à faire.

dans le bouton qui déclenche l'ouverture de la fenêtre 2

gEve = evenement("pTrace","*.*",0)
ouvre(fenetre2)


gEve est entier //une globale projet

procédure ptrace
code pour tracer
_eve.nom, _eve.wmessage et _eve.wparam dans un fichier.
Il faut surtout pas afficher la fenêtre de trace car tu vas polluer ta trace.


dans la fenêtre2

tu mets dans le code de prise de focus

finevenement(gEve)



Avec ces infos tu dois pouvoir te débrouiller.



j'ai donc effectué ce que tu m'as recommandé et j'ai pu trapper
l'évènement WM_CREATE pour la création des fenêtres en global au projet

maintenant selon certains critères que j'ai défini j'aimerais que la
fenêtre s'ouvre ou ne s'ouvre pas suivant ces critères mais lorsque je
fais Ferme(LeNomDeMaFenetre) j'ai une belle exception
j'ai essaye d'envoyer un message à la fenêtre du style
SendMessage(Handle(""),WM_DESTROY,wParam,lParam) mais cela ne
fonctionne pas

en clair j'aimerais de façon globale tester à l'ouverture des fenêtres
de mon application si elle doit s'ouvrir ou non sans pour autant dans
chaque fenêtre mettre un code spécifique

j'ai aussi tester l'évènement WM_SETFOCUS et fais un
Ferme(LeNomDeMaFenetre) même si cette méthode fonctionne elle n'est pas
tip top car la fenêtre s'ouvre puis se ferme aussitôt donc on voit un
flash pas très joli

--
Cordialement JeAn-PhI
Avatar
Daniel
JeAn-PhI a écrit :
Daniel avait écrit le 19/11/2008 :
JeAn-PhI a écrit :
Daniel a utilisé son clavier pour écrire :
JeAn-PhI a écrit :
Daniel avait soumis l'idée :
Jacques TREPP a écrit :

Merci beaucoup Albert !
Voici le code qui fonctionne :

g_evenement_Agenda = Evénement("ouvre_agenda", "*.*", WM_SYSKEYDOWN)

et la procédure :

PROCEDURE ouvre_agenda()
SI _EVE.wParam = 121 ALORS
ferme_requetes()
Ouvre(AGENDA)
FIN

Jacques TREPP



J'avais pas vu que je t'avais donné la mauvaise constante :-(

J'aurais dû testé.



bonjour

est ce que sur le même principe on peut capturer l'ouverture d'une
fenêtre ?

merci




Oui, comme la fermeture à partir du moment que c'est un évènement
(ce qui est le cas).



merci mais quel cet évènement ?




Bonjour,

désolé de te fournir une réponse flou, mais il y en a plusieurs. Car
lors de l'ouverture d'une fenêtre c'est une série d'évènements et dans
mon cas je n'utilise pas le premier et dans un projet MDI donc je ne
sais plus.

Il va falloir que tu les traces ce n'est pas difficile à faire.

dans le bouton qui déclenche l'ouverture de la fenêtre 2

gEve = evenement("pTrace","*.*",0)
ouvre(fenetre2)


gEve est entier //une globale projet

procédure ptrace
code pour tracer
_eve.nom, _eve.wmessage et _eve.wparam dans un fichier.
Il faut surtout pas afficher la fenêtre de trace car tu vas polluer ta
trace.


dans la fenêtre2

tu mets dans le code de prise de focus

finevenement(gEve)



Avec ces infos tu dois pouvoir te débrouiller.



j'ai donc effectué ce que tu m'as recommandé et j'ai pu trapper
l'évènement WM_CREATE pour la création des fenêtres en global au projet

maintenant selon certains critères que j'ai défini j'aimerais que la
fenêtre s'ouvre ou ne s'ouvre pas suivant ces critères mais lorsque je
fais Ferme(LeNomDeMaFenetre) j'ai une belle exception
j'ai essaye d'envoyer un message à la fenêtre du style
SendMessage(Handle(""),WM_DESTROY,wParam,lParam) mais cela ne fonctionne
pas

en clair j'aimerais de façon globale tester à l'ouverture des fenêtres
de mon application si elle doit s'ouvrir ou non sans pour autant dans
chaque fenêtre mettre un code spécifique

j'ai aussi tester l'évènement WM_SETFOCUS et fais un
Ferme(LeNomDeMaFenetre) même si cette méthode fonctionne elle n'est pas
tip top car la fenêtre s'ouvre puis se ferme aussitôt donc on voit un
flash pas très joli




Pourquoi tu ne surcharges pas ta fonction Ouvre ?

Dans la surcharge de Ouvre, tu indiques simplement tes conditions pour
ouvrir ou pas les fenêtres.




--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
JeAn-PhI
Daniel a utilisé son clavier pour écrire :
JeAn-PhI a écrit :
Daniel avait écrit le 19/11/2008 :
JeAn-PhI a écrit :
Daniel a utilisé son clavier pour écrire :
JeAn-PhI a écrit :
Daniel avait soumis l'idée :
Jacques TREPP a écrit :

Merci beaucoup Albert !
Voici le code qui fonctionne :

g_evenement_Agenda = Evénement("ouvre_agenda", "*.*", WM_SYSKEYDOWN)

et la procédure :

PROCEDURE ouvre_agenda()
SI _EVE.wParam = 121 ALORS
ferme_requetes()
Ouvre(AGENDA)
FIN

Jacques TREPP



J'avais pas vu que je t'avais donné la mauvaise constante :-(

J'aurais dû testé.



bonjour

est ce que sur le même principe on peut capturer l'ouverture d'une
fenêtre ?

merci




Oui, comme la fermeture à partir du moment que c'est un évènement (ce
qui est le cas).



merci mais quel cet évènement ?




Bonjour,

désolé de te fournir une réponse flou, mais il y en a plusieurs. Car lors
de l'ouverture d'une fenêtre c'est une série d'évènements et dans mon cas
je n'utilise pas le premier et dans un projet MDI donc je ne sais plus.

Il va falloir que tu les traces ce n'est pas difficile à faire.

dans le bouton qui déclenche l'ouverture de la fenêtre 2

gEve = evenement("pTrace","*.*",0)
ouvre(fenetre2)


gEve est entier //une globale projet

procédure ptrace
code pour tracer
_eve.nom, _eve.wmessage et _eve.wparam dans un fichier.
Il faut surtout pas afficher la fenêtre de trace car tu vas polluer ta
trace.


dans la fenêtre2

tu mets dans le code de prise de focus

finevenement(gEve)



Avec ces infos tu dois pouvoir te débrouiller.



j'ai donc effectué ce que tu m'as recommandé et j'ai pu trapper l'évènement
WM_CREATE pour la création des fenêtres en global au projet

maintenant selon certains critères que j'ai défini j'aimerais que la
fenêtre s'ouvre ou ne s'ouvre pas suivant ces critères mais lorsque je fais
Ferme(LeNomDeMaFenetre) j'ai une belle exception
j'ai essaye d'envoyer un message à la fenêtre du style
SendMessage(Handle(""),WM_DESTROY,wParam,lParam) mais cela ne fonctionne
pas

en clair j'aimerais de façon globale tester à l'ouverture des fenêtres de
mon application si elle doit s'ouvrir ou non sans pour autant dans chaque
fenêtre mettre un code spécifique

j'ai aussi tester l'évènement WM_SETFOCUS et fais un
Ferme(LeNomDeMaFenetre) même si cette méthode fonctionne elle n'est pas tip
top car la fenêtre s'ouvre puis se ferme aussitôt donc on voit un flash pas
très joli




Pourquoi tu ne surcharges pas ta fonction Ouvre ?

Dans la surcharge de Ouvre, tu indiques simplement tes conditions pour ouvrir
ou pas les fenêtres.



parce que j'ai des param passé aux fenêtre et je ne sais pas comment
les récup pourr les repassé et j'ai déjà un paquet de fenêtre à faire
:-(

--
Cordialement JeAn-PhI
Avatar
Daniel
JeAn-PhI a écrit :
Daniel a utilisé son clavier pour écrire :
JeAn-PhI a écrit :
Daniel avait écrit le 19/11/2008 :
JeAn-PhI a écrit :
Daniel a utilisé son clavier pour écrire :
JeAn-PhI a écrit :
Daniel avait soumis l'idée :
Jacques TREPP a écrit :

Merci beaucoup Albert !
Voici le code qui fonctionne :

g_evenement_Agenda = Evénement("ouvre_agenda", "*.*",
WM_SYSKEYDOWN)

et la procédure :

PROCEDURE ouvre_agenda()
SI _EVE.wParam = 121 ALORS
ferme_requetes()
Ouvre(AGENDA)
FIN

Jacques TREPP



J'avais pas vu que je t'avais donné la mauvaise constante :-(

J'aurais dû testé.



bonjour

est ce que sur le même principe on peut capturer l'ouverture
d'une fenêtre ?

merci




Oui, comme la fermeture à partir du moment que c'est un évènement
(ce qui est le cas).



merci mais quel cet évènement ?




Bonjour,

désolé de te fournir une réponse flou, mais il y en a plusieurs. Car
lors de l'ouverture d'une fenêtre c'est une série d'évènements et
dans mon cas je n'utilise pas le premier et dans un projet MDI donc
je ne sais plus.

Il va falloir que tu les traces ce n'est pas difficile à faire.

dans le bouton qui déclenche l'ouverture de la fenêtre 2

gEve = evenement("pTrace","*.*",0)
ouvre(fenetre2)


gEve est entier //une globale projet

procédure ptrace
code pour tracer
_eve.nom, _eve.wmessage et _eve.wparam dans un fichier.
Il faut surtout pas afficher la fenêtre de trace car tu vas polluer
ta trace.


dans la fenêtre2

tu mets dans le code de prise de focus

finevenement(gEve)



Avec ces infos tu dois pouvoir te débrouiller.



j'ai donc effectué ce que tu m'as recommandé et j'ai pu trapper
l'évènement WM_CREATE pour la création des fenêtres en global au projet

maintenant selon certains critères que j'ai défini j'aimerais que la
fenêtre s'ouvre ou ne s'ouvre pas suivant ces critères mais lorsque
je fais Ferme(LeNomDeMaFenetre) j'ai une belle exception
j'ai essaye d'envoyer un message à la fenêtre du style
SendMessage(Handle(""),WM_DESTROY,wParam,lParam) mais cela ne
fonctionne pas

en clair j'aimerais de façon globale tester à l'ouverture des
fenêtres de mon application si elle doit s'ouvrir ou non sans pour
autant dans chaque fenêtre mettre un code spécifique

j'ai aussi tester l'évènement WM_SETFOCUS et fais un
Ferme(LeNomDeMaFenetre) même si cette méthode fonctionne elle n'est
pas tip top car la fenêtre s'ouvre puis se ferme aussitôt donc on
voit un flash pas très joli




Pourquoi tu ne surcharges pas ta fonction Ouvre ?

Dans la surcharge de Ouvre, tu indiques simplement tes conditions pour
ouvrir ou pas les fenêtres.



parce que j'ai des param passé aux fenêtre et je ne sais pas comment les
récup pourr les repassé et j'ai déjà un paquet de fenêtre à faire :-(




Qu'est ce qui t'empêche de faire un

Ouvre(pFenetre,p1,p2...pX)

X étant ton nombre de paramètres maximum

ensuite tu adaptes ton code en fonction du nombre de paramètre déclaré

et tu appelles
selon nombre_parametre

cas 0 :wl.ouvre(pFenetre)
cas 1 :wl.ouvre(pFenetre,p1)

...

Il me semble qu'à partir de la version 12 il y a une grosse amélioration
sur les passages de paramètres.

Tu peux également utiliser compile.

Bref je chercherais plus une solution à ce niveau que par la gestion des
évènements car dans ton cas je pense que ce n'est pas adapté et surtout
que tu ne pourras pas empêcher le lancement des codes d'initialisation
de la fenêtre.



--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
JeAn-PhI
Dans son message précédent, Daniel a écrit :
JeAn-PhI a écrit :
Daniel a utilisé son clavier pour écrire :
JeAn-PhI a écrit :
Daniel avait écrit le 19/11/2008 :
JeAn-PhI a écrit :
Daniel a utilisé son clavier pour écrire :
JeAn-PhI a écrit :
Daniel avait soumis l'idée :
Jacques TREPP a écrit :

Merci beaucoup Albert !
Voici le code qui fonctionne :

g_evenement_Agenda = Evénement("ouvre_agenda", "*.*",
WM_SYSKEYDOWN)

et la procédure :

PROCEDURE ouvre_agenda()
SI _EVE.wParam = 121 ALORS
ferme_requetes()
Ouvre(AGENDA)
FIN

Jacques TREPP



J'avais pas vu que je t'avais donné la mauvaise constante :-(

J'aurais dû testé.



bonjour

est ce que sur le même principe on peut capturer l'ouverture d'une
fenêtre ?

merci




Oui, comme la fermeture à partir du moment que c'est un évènement (ce
qui est le cas).



merci mais quel cet évènement ?




Bonjour,

désolé de te fournir une réponse flou, mais il y en a plusieurs. Car
lors de l'ouverture d'une fenêtre c'est une série d'évènements et dans
mon cas je n'utilise pas le premier et dans un projet MDI donc je ne
sais plus.

Il va falloir que tu les traces ce n'est pas difficile à faire.

dans le bouton qui déclenche l'ouverture de la fenêtre 2

gEve = evenement("pTrace","*.*",0)
ouvre(fenetre2)


gEve est entier //une globale projet

procédure ptrace
code pour tracer
_eve.nom, _eve.wmessage et _eve.wparam dans un fichier.
Il faut surtout pas afficher la fenêtre de trace car tu vas polluer ta
trace.


dans la fenêtre2

tu mets dans le code de prise de focus

finevenement(gEve)



Avec ces infos tu dois pouvoir te débrouiller.



j'ai donc effectué ce que tu m'as recommandé et j'ai pu trapper
l'évènement WM_CREATE pour la création des fenêtres en global au projet

maintenant selon certains critères que j'ai défini j'aimerais que la
fenêtre s'ouvre ou ne s'ouvre pas suivant ces critères mais lorsque je
fais Ferme(LeNomDeMaFenetre) j'ai une belle exception
j'ai essaye d'envoyer un message à la fenêtre du style
SendMessage(Handle(""),WM_DESTROY,wParam,lParam) mais cela ne fonctionne
pas

en clair j'aimerais de façon globale tester à l'ouverture des fenêtres de
mon application si elle doit s'ouvrir ou non sans pour autant dans chaque
fenêtre mettre un code spécifique

j'ai aussi tester l'évènement WM_SETFOCUS et fais un
Ferme(LeNomDeMaFenetre) même si cette méthode fonctionne elle n'est pas
tip top car la fenêtre s'ouvre puis se ferme aussitôt donc on voit un
flash pas très joli




Pourquoi tu ne surcharges pas ta fonction Ouvre ?

Dans la surcharge de Ouvre, tu indiques simplement tes conditions pour
ouvrir ou pas les fenêtres.



parce que j'ai des param passé aux fenêtre et je ne sais pas comment les
récup pourr les repassé et j'ai déjà un paquet de fenêtre à faire :-(




Qu'est ce qui t'empêche de faire un

Ouvre(pFenetre,p1,p2...pX)

X étant ton nombre de paramètres maximum

ensuite tu adaptes ton code en fonction du nombre de paramètre déclaré

et tu appelles
selon nombre_parametre

cas 0 :wl.ouvre(pFenetre)
cas 1 :wl.ouvre(pFenetre,p1)

...

Il me semble qu'à partir de la version 12 il y a une grosse amélioration sur
les passages de paramètres.

Tu peux également utiliser compile.

Bref je chercherais plus une solution à ce niveau que par la gestion des
évènements car dans ton cas je pense que ce n'est pas adapté et surtout que
tu ne pourras pas empêcher le lancement des codes d'initialisation de la
fenêtre.



je viens d'essayer une surcharge de la fonction ouvre comme expliquer
dans l'aide de la façon suivante :

PROCEDURE Ouvre(_szNomFen,*) // procédure global au projet

Trace(_szNomFen)
WL.Ouvre(_szNomFen,MesParamètres[[2 A]])


// appel
Ouvre(F_Fenêtre1) => exception pourquoi je ne sais pas il me dit
que le champs est inconnu
Ouvre(F_Fenêtre1..Nom) => idem
Ouvre("F_Fenêtre1") => pas exception ici mais une dans la procédure

la trace fonctionne
mais WL.Ouvre est en exception le message ci dessous.

si tu as une idée je suis preneur


// Message d'erreur généré par l'exception
Erreur à la ligne 20 du traitement Procédure globale Ouvre.
Vous avez appelé la fonction Ouvre.
Impossible d'ouvrir la fenêtre <> pour la raison suivante :
L'objet n'a pas été trouvé.



Informations techniques

Projet : WD

Dump de l'erreur du module <WD120OBJ.DLL> <12.00Pyn>.

- Appel WL :
Traitement de <WD.Ouvre>, ligne <20>, thread <0>
Fonction <Ouvre>, n° de syntaxe <0>

- Niveau : erreur fatale (EL_FATAL)

- Code erreur : 10019

- Code erreur WD55 : 0

- Pas de code d'erreur système

- Pas de message d'erreur système

- Que s'est-il passé ?
Impossible d'ouvrir la fenêtre <> pour la raison suivante :
L'objet n'a pas été trouvé.



- Infos de debug :
Chargement de la partie exécution d'un objet
Nom physique :
Type cherché : 2
Fonction (1,1)

- Infos attachées :
EIT_PILEWL :
Procédure globale Ouvre (WD.Ouvre), ligne 20
Clic sur BTN_TEST (F_TEST.BTN_TEST), ligne 1
EIT_COMPOSANT :

EIT_DATEHEURE : 19/11/2008 14:59:56

- Identifiant dans le .err : 10019


Assistance

--
Cordialement JeAn-PhI
Avatar
Daniel
JeAn-PhI a écrit :
Dans son message précédent, Daniel a écrit :







Je ne connais pas WD12 :-(

Mais je pense que tu chauffes

--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
Pascal F
JeAn-PhI avait prétendu :
Dans son message précédent, Daniel a écrit :
JeAn-PhI a écrit :
Daniel a utilisé son clavier pour écrire :
JeAn-PhI a écrit :
Daniel avait écrit le 19/11/2008 :
JeAn-PhI a écrit :
Daniel a utilisé son clavier pour écrire :
JeAn-PhI a écrit :
Daniel avait soumis l'idée :
Jacques TREPP a écrit :

Merci beaucoup Albert !
Voici le code qui fonctionne :

g_evenement_Agenda = Evénement("ouvre_agenda", "*.*", WM_SYSKEYDOWN)

et la procédure :

PROCEDURE ouvre_agenda()
SI _EVE.wParam = 121 ALORS
ferme_requetes()
Ouvre(AGENDA)
FIN

Jacques TREPP



J'avais pas vu que je t'avais donné la mauvaise constante :-(

J'aurais dû testé.



bonjour

est ce que sur le même principe on peut capturer l'ouverture d'une fenêtre ?

merci




Oui, comme la fermeture à partir du moment que c'est un évènement (ce qui est le cas).



merci mais quel cet évènement ?




Bonjour,

désolé de te fournir une réponse flou, mais il y en a plusieurs. Car lors de l'ouverture d'une fenêtre c'est une série
d'évènements et dans mon cas je n'utilise pas le premier et dans un projet MDI donc je ne sais plus.

Il va falloir que tu les traces ce n'est pas difficile à faire.

dans le bouton qui déclenche l'ouverture de la fenêtre 2

gEve = evenement("pTrace","*.*",0)
ouvre(fenetre2)


gEve est entier //une globale projet

procédure ptrace
code pour tracer
_eve.nom, _eve.wmessage et _eve.wparam dans un fichier.
Il faut surtout pas afficher la fenêtre de trace car tu vas polluer ta trace.


dans la fenêtre2

tu mets dans le code de prise de focus

finevenement(gEve)



Avec ces infos tu dois pouvoir te débrouiller.



j'ai donc effectué ce que tu m'as recommandé et j'ai pu trapper l'évènement WM_CREATE pour la création des fenêtres en
global au projet

maintenant selon certains critères que j'ai défini j'aimerais que la fenêtre s'ouvre ou ne s'ouvre pas suivant ces
critères mais lorsque je fais Ferme(LeNomDeMaFenetre) j'ai une belle exception
j'ai essaye d'envoyer un message à la fenêtre du style SendMessage(Handle(""),WM_DESTROY,wParam,lParam) mais cela ne
fonctionne pas

en clair j'aimerais de façon globale tester à l'ouverture des fenêtres de mon application si elle doit s'ouvrir ou non
sans pour autant dans chaque fenêtre mettre un code spécifique

j'ai aussi tester l'évènement WM_SETFOCUS et fais un Ferme(LeNomDeMaFenetre) même si cette méthode fonctionne elle n'est
pas tip top car la fenêtre s'ouvre puis se ferme aussitôt donc on voit un flash pas très joli




Pourquoi tu ne surcharges pas ta fonction Ouvre ?

Dans la surcharge de Ouvre, tu indiques simplement tes conditions pour ouvrir ou pas les fenêtres.



parce que j'ai des param passé aux fenêtre et je ne sais pas comment les récup pourr les repassé et j'ai déjà un paquet de
fenêtre à faire :-(




Qu'est ce qui t'empêche de faire un

Ouvre(pFenetre,p1,p2...pX)

X étant ton nombre de paramètres maximum

ensuite tu adaptes ton code en fonction du nombre de paramètre déclaré

et tu appelles
selon nombre_parametre

cas 0 :wl.ouvre(pFenetre)
cas 1 :wl.ouvre(pFenetre,p1)

...

Il me semble qu'à partir de la version 12 il y a une grosse amélioration sur les passages de paramètres.

Tu peux également utiliser compile.

Bref je chercherais plus une solution à ce niveau que par la gestion des évènements car dans ton cas je pense que ce n'est
pas adapté et surtout que tu ne pourras pas empêcher le lancement des codes d'initialisation de la fenêtre.



je viens d'essayer une surcharge de la fonction ouvre comme expliquer dans l'aide de la façon suivante :

PROCEDURE Ouvre(_szNomFen,*) // procédure global au projet

Trace(_szNomFen)
WL.Ouvre(_szNomFen,MesParamètres[[2 A]])


// appel
Ouvre(F_Fenêtre1) => exception pourquoi je ne sais pas il me dit que le champs est inconnu
Ouvre(F_Fenêtre1..Nom) => idem
Ouvre("F_Fenêtre1") => pas exception ici mais une dans la procédure

la trace fonctionne
mais WL.Ouvre est en exception le message ci dessous.

si tu as une idée je suis preneur


// Message d'erreur généré par l'exception
Erreur à la ligne 20 du traitement Procédure globale Ouvre.
Vous avez appelé la fonction Ouvre.
Impossible d'ouvrir la fenêtre <> pour la raison suivante :
L'objet n'a pas été trouvé.



Informations techniques

Projet : WD

Dump de l'erreur du module <WD120OBJ.DLL> <12.00Pyn>.

- Appel WL :
Traitement de <WD.Ouvre>, ligne <20>, thread <0>
Fonction <Ouvre>, n° de syntaxe <0>

- Niveau : erreur fatale (EL_FATAL)

- Code erreur : 10019

- Code erreur WD55 : 0

- Pas de code d'erreur système

- Pas de message d'erreur système

- Que s'est-il passé ?
Impossible d'ouvrir la fenêtre <> pour la raison suivante :
L'objet n'a pas été trouvé.



- Infos de debug :
Chargement de la partie exécution d'un objet
Nom physique :
Type cherché : 2
Fonction (1,1)

- Infos attachées :
EIT_PILEWL :
Procédure globale Ouvre (WD.Ouvre), ligne 20
Clic sur BTN_TEST (F_TEST.BTN_TEST), ligne 1
EIT_COMPOSANT :

EIT_DATEHEURE : 19/11/2008 14:59:56

- Identifiant dans le .err : 10019


Assistance



Ma réponse en face:
WL.Ouvre(_szNomFen,MesParamètres[2 A])

Tu as pourtant apparement copié l'exemple de l'aide ^^

--
Pascal

Ne garder que le prénom pour me joindre
Avatar
JeAn-PhI
Pascal F a utilisé son clavier pour écrire :
JeAn-PhI avait prétendu :
Dans son message précédent, Daniel a écrit :
JeAn-PhI a écrit :
Daniel a utilisé son clavier pour écrire :
JeAn-PhI a écrit :
Daniel avait écrit le 19/11/2008 :
JeAn-PhI a écrit :
Daniel a utilisé son clavier pour écrire :
JeAn-PhI a écrit :
Daniel avait soumis l'idée :
Jacques TREPP a écrit :

Merci beaucoup Albert !
Voici le code qui fonctionne :

g_evenement_Agenda = Evénement("ouvre_agenda", "*.*",
WM_SYSKEYDOWN)

et la procédure :

PROCEDURE ouvre_agenda()
SI _EVE.wParam = 121 ALORS
ferme_requetes()
Ouvre(AGENDA)
FIN

Jacques TREPP



J'avais pas vu que je t'avais donné la mauvaise constante :-(

J'aurais dû testé.



bonjour

est ce que sur le même principe on peut capturer l'ouverture d'une
fenêtre ?

merci




Oui, comme la fermeture à partir du moment que c'est un évènement
(ce qui est le cas).



merci mais quel cet évènement ?




Bonjour,

désolé de te fournir une réponse flou, mais il y en a plusieurs. Car
lors de l'ouverture d'une fenêtre c'est une série d'évènements et dans
mon cas je n'utilise pas le premier et dans un projet MDI donc je ne
sais plus.

Il va falloir que tu les traces ce n'est pas difficile à faire.

dans le bouton qui déclenche l'ouverture de la fenêtre 2

gEve = evenement("pTrace","*.*",0)
ouvre(fenetre2)


gEve est entier //une globale projet

procédure ptrace
code pour tracer
_eve.nom, _eve.wmessage et _eve.wparam dans un fichier.
Il faut surtout pas afficher la fenêtre de trace car tu vas polluer ta
trace.


dans la fenêtre2

tu mets dans le code de prise de focus

finevenement(gEve)



Avec ces infos tu dois pouvoir te débrouiller.



j'ai donc effectué ce que tu m'as recommandé et j'ai pu trapper
l'évènement WM_CREATE pour la création des fenêtres en global au projet

maintenant selon certains critères que j'ai défini j'aimerais que la
fenêtre s'ouvre ou ne s'ouvre pas suivant ces critères mais lorsque je
fais Ferme(LeNomDeMaFenetre) j'ai une belle exception
j'ai essaye d'envoyer un message à la fenêtre du style
SendMessage(Handle(""),WM_DESTROY,wParam,lParam) mais cela ne
fonctionne pas

en clair j'aimerais de façon globale tester à l'ouverture des fenêtres
de mon application si elle doit s'ouvrir ou non sans pour autant dans
chaque fenêtre mettre un code spécifique

j'ai aussi tester l'évènement WM_SETFOCUS et fais un
Ferme(LeNomDeMaFenetre) même si cette méthode fonctionne elle n'est pas
tip top car la fenêtre s'ouvre puis se ferme aussitôt donc on voit un
flash pas très joli




Pourquoi tu ne surcharges pas ta fonction Ouvre ?

Dans la surcharge de Ouvre, tu indiques simplement tes conditions pour
ouvrir ou pas les fenêtres.



parce que j'ai des param passé aux fenêtre et je ne sais pas comment les
récup pourr les repassé et j'ai déjà un paquet de fenêtre à faire :-(




Qu'est ce qui t'empêche de faire un

Ouvre(pFenetre,p1,p2...pX)

X étant ton nombre de paramètres maximum

ensuite tu adaptes ton code en fonction du nombre de paramètre déclaré

et tu appelles
selon nombre_parametre

cas 0 :wl.ouvre(pFenetre)
cas 1 :wl.ouvre(pFenetre,p1)

...

Il me semble qu'à partir de la version 12 il y a une grosse amélioration
sur les passages de paramètres.

Tu peux également utiliser compile.

Bref je chercherais plus une solution à ce niveau que par la gestion des
évènements car dans ton cas je pense que ce n'est pas adapté et surtout
que tu ne pourras pas empêcher le lancement des codes d'initialisation de
la fenêtre.



je viens d'essayer une surcharge de la fonction ouvre comme expliquer dans
l'aide de la façon suivante :

PROCEDURE Ouvre(_szNomFen,*) // procédure global au projet

Trace(_szNomFen)
WL.Ouvre(_szNomFen,MesParamètres[[2 A]])


// appel
Ouvre(F_Fenêtre1) => exception pourquoi je ne sais pas il me dit que
le champs est inconnu
Ouvre(F_Fenêtre1..Nom) => idem
Ouvre("F_Fenêtre1") => pas exception ici mais une dans la procédure

la trace fonctionne
mais WL.Ouvre est en exception le message ci dessous.

si tu as une idée je suis preneur


// Message d'erreur généré par l'exception
Erreur à la ligne 20 du traitement Procédure globale Ouvre.
Vous avez appelé la fonction Ouvre.
Impossible d'ouvrir la fenêtre <> pour la raison suivante :
L'objet n'a pas été trouvé.



Informations techniques

Projet : WD

Dump de l'erreur du module <WD120OBJ.DLL> <12.00Pyn>.

- Appel WL :
Traitement de <WD.Ouvre>, ligne <20>, thread <0>
Fonction <Ouvre>, n° de syntaxe <0>

- Niveau : erreur fatale (EL_FATAL)

- Code erreur : 10019

- Code erreur WD55 : 0

- Pas de code d'erreur système

- Pas de message d'erreur système

- Que s'est-il passé ?
Impossible d'ouvrir la fenêtre <> pour la raison suivante :
L'objet n'a pas été trouvé.



- Infos de debug :
Chargement de la partie exécution d'un objet
Nom physique :
Type cherché : 2
Fonction (1,1)

- Infos attachées :
EIT_PILEWL :
Procédure globale Ouvre (WD.Ouvre), ligne 20
Clic sur BTN_TEST (F_TEST.BTN_TEST), ligne 1
EIT_COMPOSANT :

EIT_DATEHEURE : 19/11/2008 14:59:56

- Identifiant dans le .err : 10019


Assistance



Ma réponse en face:
WL.Ouvre(_szNomFen,MesParamètres[2 A])

Tu as pourtant apparement copié l'exemple de l'aide ^^


ma réponse en face :
merci c'est exactement ça le pb qui en fait ne correspond en rien au
message

oui je m'en suis servi mais j'ai pas fait de copier/coller j'ai
directement saisie le code :'(

--
Cordialement JeAn-PhI
1 2 3