Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Focus ?????????????????

2 views
Skip to first unread message

:-) PH (-:

unread,
Jan 25, 2001, 7:17:38 AM1/25/01
to
Salut Jacques,

Désolé, je garde les anciens réflexes. ;-)
J'utilise les fonctions pour changer l'appence d'un menu (c'est zouli tout
plein).
Le seul pb est que quand j'ouvre la fiche directement en mode exécution, le
changement ne se fait pas.
Si je met le code dans le setfocus du 2ème champ de ma fiche et que je fais
un tab pour aller d'un champ à l'autre çà fonctionne mais c'est pas génial.
Donc ma question est quel est le $*#^? de dernier évènement qui se produit à
l'affichage d'une fiche.
J'ai même mis la fenêtre de trace et c'est le SetFocus mais à mon avis, il
manque qqchose, car la fiche reçoit et reperd le focus.
Pour moi, elle n'est pas active même en forçant l'activation ca n'a pas
marché.

Une idée ?

@+
Pascal
http://paradoxtips.free.fr

:-) PH (-:

unread,
Jan 25, 2001, 8:29:19 AM1/25/01
to
C'est encore moi,

Désolé mais je vais faire du cross-post car j'ai vraiment besoin d'une
réponse .

Voila une copie de la fenêtre de trace (une partie)

::coul_men:81=> res = DrawMenuBar(h)
:Sortie de la méthode coul_men.
::setFocus:21=> hmdi =
FindWindowEx(app.windowhandle(),0,"MDICLIENT","")
******* Ces 2 lignes sont censées forcer le rafraichissement du menu et
activer la fiche
::setFocus:22=> winsendmessage(hmdi,fromhex("0x234"),0,0)
::setFocus:23=>
winsendmessage(hmdi,fromhex("0x222"),f.windowclienthandle(),0)
:Sortie de la méthode setFocus.
*********** J'ai mis un arrêt tabulation sur mon premier bouton
BuiltIn:setFocus, self = "page.bt", target="page.bt"
******** La j'ai appuyé sur F8
BuiltIn:menuAction, self = "#DonnéeFiche1", target="page.bt", reason = Menu,
id = MenuBuild
BuiltIn:menuAction, self = "page.bt", target="page.bt", reason = Menu, id =
MenuBuild

Donc résultat des courses, Entre l'arrêt tabulation et le passage en mode
conception, il n'y a rien sauf que ma fiche a changé la couleur du menu puis
il est revenu à la normale.

C'est quoi ce m..dier ?

@+
Pascal
http://paradoxtips.free.fr

:-) PH (-: <cps...@cancom.net> a écrit dans le message : 3a701251@cnews...

:-) PH (-:

unread,
Jan 25, 2001, 9:53:51 AM1/25/01
to
NNNNNNNNNNNNNNNNNNNut!!!!!!!!!!!!!!!!!!!!!!!!!!!!

Mauvaise réponse :-)

Non, ça ne change rien.

J'ai fais un autre test.

Un script ouvre ma fiche.
Je fais le changement de couleur du menu dans le script et ça marche.
Mais quand la fiche perd le focus et le retrouve, c'est toujours le même
problème .

Je saus plus quoi faire.

PS: J'ai fait le test avec Delphi et là c'est nickel.

Le pb vient du fait que les fiches sont des fenêtres filles, donc y'a un
truc à faire (mais quoi ?).
En mettant un msginfo sur le setfocus de la page ou en faisant aller le
focus sur une autre appli, le changement se fait.

Etrange non ?

@+
Pascal
http://paradoxtips.free.fr

PS: Je mettrai tout ça sur mon site si quelqu'un se sent le courage
d'approfondir car y'a des trucs sympas à faire (on peut même un bitmap en
fond de menu et l'effet est vraiment cool)
Jacques Chaillot <jcha...@gibbon.fr> a écrit dans le message :
3a702fbb@cnews...
> Le setfocus est bien le dernier évènement. On a l'impression que dans le
> rechargement du menu de la fiche s'effectue après le traitement des
> couleurs. Essayer peut-être avec un dodefault
> method setfocus
> dodefault ; le menu de la fiche est chargé (je suppose)
> coul_men() ;changement des couleurs (avec de l'api ?)
> endmethod
>
> :-) PH (-: <cps...@cancom.net> a écrit dans le message : 3a702646@cnews...


> > C'est encore moi,
> >
> > Désolé mais je vais faire du cross-post car j'ai vraiment besoin d'une
> > réponse .
>

> *** c'était une plaisanterie

Jacques Chaillot

unread,
Jan 25, 2001, 1:22:55 PM1/25/01
to
Une piste (?):
Nous gérons nos variables menus en bibliothèque paratagée et dans le set
focus de la fiche, après le dodefaut (en fait nous remontons également la
programmation de cet évènement en bibliothèquie, mais c'est une autre
histoire), nous montrons le menu. Le menu existant toujours, on doit
récupérer ses caractéristiques physiques.
Les grandes lignes de la programmation :

Bibliothèque:
var
mainMN Menu
endvar
method menuBuild()
....; exécuté la première fois qu'on a besoin du menu
endmethod()

methode fmFocus()
IF mainMN.isAssigned() THEN
mainMN.show() ; important : sinon le menu Fenêtre n'est pas réactualisé
ENDIF

Dans la fiche:
method setFocus(var eventInfo Event)
VAR
dodefaultLO,prefiltreLO LOGICAL
ENDVAR
dodefaultLO = True
prefiltreLO = eventInfo.isPrefilter()
DODEFAULT
gLIB.fmFocus()
endmethod


:-) PH (-: <cps...@cancom.net> a écrit dans le message : 3a7036e6@cnews...

:-) PH (-:

unread,
Jan 25, 2001, 2:11:48 PM1/25/01
to
Jacques,

J'ai tout essayé et voici la seule combine que j'ai trouvé.
Après la création du menu (arrive,setfocus,bibliothèque ...) je fais un
setmousescreenposition pour envoyer la souris dans le formulaire (la page)
et dans le mouseenter de la page je fais appel à coul_men().
C'est aussi simple que çà.

Je pblierai demain (je pense) tout le code pour faire des menus
personnalisés.
Il me reste à gérer les popupmenus (indépendants) et les sous-sous-menus
pour leur envoyer les modifs.
Sinon pour un menu relativement simple, ca fait un effet boeuf !

Merci pour ton aide

@+
Pascal
http://paradoxtips.free.fr

Jacques Chaillot <jcha...@gibbon.fr> a écrit dans le message :

3a706f40@cnews...

0 new messages