OVH Cloud OVH Cloud

Donner le focus à une feuille

6 réponses
Avatar
surfeur75
Bonjour,

J'ai un petit problème de focus:
Après avoir ouvert ma form1, je lance la form4 toujours en premier plan,
soit:
Load Form4
Form4.Show , Me

Mais voilà, je veux bien ma Form4 au 1er plan, mais cependant, je
voudrais que la Form1 ait le focus (que son bandeau ne soit pas estompé
ensuite), comment faire ?
Merci.
--
@+, bye, Joe.
Pour m'écrire ng75AROBASEnoosPOINTfr
remplace AROBASE et POINT par leur vrai signe
Il l'a fait car il ne savait pas que c'était impossible, alea jacta est!

6 réponses

Avatar
Thierry M.
surfeur75 écrivait:

Mais voilà, je veux bien ma Form4 au 1er plan, mais cependant, je
voudrais que la Form1 ait le focus



de mémoire de windows, ça s'est jamais vu :
la feuille qui a le focus passe devant !
mais pourquoi vouloir ceci ?

--
Thierry
http://ardf.free.fr
Avatar
Christophe QUEVAL
Bonjour,

Avec un simple Form1.SetFocus, la feuille Form1 reprendra le focus mais
repassera au premier plan.
Comment sont disposez vos feuilles à l'écran ?

Autre technique consistant à simuler une feuille parent et sa fille :
Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long,
ByVal hWndNewParent As Long) As Long
Load Form4
Call SetParent(Form4.hWnd, Me.hWnd)
Form4.Show
Me.SetFocus
Dans ce cas, la Form4 reste bien au premier plan de la Form1 et Form1 a le
focus.

Autre solution :
Public Declare Sub SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal
hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long,
ByVal cy As Long, ByVal wFlags As Long)
à mettre dans l'évènement Activate de Form4 :
SetWindowPos Me.hwnd, HWND_TOPMOST, Me.Left / 15, Me.Top / 15, Me.Width /
15, Me.Height / 15, SWP_NOACTIVATE Or SWP_SHOWWINDOW
*(15 correspond au ratio Pixels/Twips, à calculer donc)*
Puis dans Form1:
Form4.Show
Form1.SetFocus
Cela engendre l'affichage en premier plan de la Form4, mais pour toute la
session Windows.

Bon courage.
Christophe


"surfeur75" a écrit dans le message de
news:
Bonjour,

J'ai un petit problème de focus:
Après avoir ouvert ma form1, je lance la form4 toujours en premier


plan,
soit:
Load Form4
Form4.Show , Me

Mais voilà, je veux bien ma Form4 au 1er plan, mais cependant, je
voudrais que la Form1 ait le focus (que son bandeau ne soit pas estompé
ensuite), comment faire ?
Merci.
--
@+, bye, Joe.
Pour m'écrire ng75AROBASEnoosPOINTfr
remplace AROBASE et POINT par leur vrai signe
Il l'a fait car il ne savait pas que c'était impossible, alea jacta est!






Avatar
surfeur75
Ben qu'est-ce que tu dis là: "là feuille qui a le focus passe devant", c'est
nouveau ou ça vient de sortir???
Ça c'est la généralité, (je parle des feuilles non mdi), il y a 2 exceptions
au moins, le cas des feuilles toujours devant (et c'est mon cas avec Me), et
les feuille toujours à l'écran avec l'APIx, alors la feuille de derrière
peut avoir le focus, évidemment faut pas qu'elles se revouvrent
totalement...
--
@+, bye, Joe.
Pour m'écrire ng75AROBASEnoosPOINTfr
remplace AROBASE et POINT par leur vrai signe
Il l'a fait car il ne savait pas que c'était impossible, alea jacta est!


"Thierry M." a écrit dans le message de news:

surfeur75 écrivait:

> Mais voilà, je veux bien ma Form4 au 1er plan, mais cependant, je
> voudrais que la Form1 ait le focus

de mémoire de windows, ça s'est jamais vu :
la feuille qui a le focus passe devant !
mais pourquoi vouloir ceci ?

--
Thierry
http://ardf.free.fr



Avatar
surfeur75
Bonjour, ah, on ne lit pas ce que j'écris... Je dis que j'ouvre une form4
avec "Me", donc elle reste toujours devant, en fait elle est plus petite que
la form1 qui occupe l'écran, mais justement à cause du "Me", la petite
feuille(4) prend le focus sur la grande feuille(1), par contre si je clique
sur la form(1) les focus s'inversent, mais la feuille qui n'a pas le focus
reste devant car elle a "Me", lol, (ne pas confondre entre "Me" = devant, et
"toujours à l'écran avec API)...
Alors si avec la souris j'arrive à changer le focu des feuilles, je me dis
que je devrais y arriver par le code, eh oui que j'ai mis (form1.setfocus),
enfin, j'ai essayé, mais où le mettre (dans l'activate ça ne fait rien, dans
le load ça plante)...
J'ai en gros ça:
activate
Load Form4
Form4.Show , Me
----
load...

Le problème actuel c'est qu'au lancement la 4 prend le focus alors que je
voudrais au lancement que ce soit la 1 qui prenne le focus, mais dans le
même schéma (la 4 est une petite feuille qui peut se déplacer et reste
toujours devant la grande feuill 1)...

Par exemple encore, tu postes une question dans ce NG, avec OE, et tu lance
le correcteur, le correcteur passe au 1er plan du courrier et y reste (sauf
que là il est modal), ben moi je fais pareil, mais sans modal, avec (Me),
alors on peut dire qu'au lancement j'voudrais le courrier avec le focus et
le correcteur sans le focus (qui a Me mais n'est pas modal dans mon appli)
???
--
@+, bye, Joe.
Pour m'écrire ng75AROBASEnoosPOINTfr
remplace AROBASE et POINT par leur vrai signe
Il l'a fait car il ne savait pas que c'était impossible, alea jacta est!


"Christophe QUEVAL" a écrit dans le message
de news:
Bonjour,

Avec un simple Form1.SetFocus, la feuille Form1 reprendra le focus mais
repassera au premier plan.
Comment sont disposez vos feuilles à l'écran ?

Autre technique consistant à simuler une feuille parent et sa fille :
Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long,
ByVal hWndNewParent As Long) As Long
Load Form4
Call SetParent(Form4.hWnd, Me.hWnd)
Form4.Show
Me.SetFocus
Dans ce cas, la Form4 reste bien au premier plan de la Form1 et Form1 a le
focus.

Autre solution :
Public Declare Sub SetWindowPos Lib "user32" (ByVal hwnd As Long, ByVal
hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As


Long,
ByVal cy As Long, ByVal wFlags As Long)
à mettre dans l'évènement Activate de Form4 :
SetWindowPos Me.hwnd, HWND_TOPMOST, Me.Left / 15, Me.Top / 15, Me.Width /
15, Me.Height / 15, SWP_NOACTIVATE Or SWP_SHOWWINDOW
*(15 correspond au ratio Pixels/Twips, à calculer donc)*
Puis dans Form1:
Form4.Show
Form1.SetFocus
Cela engendre l'affichage en premier plan de la Form4, mais pour toute la
session Windows.

Bon courage.
Christophe


"surfeur75" a écrit dans le message de
news:
> Bonjour,
>
> J'ai un petit problème de focus:
> Après avoir ouvert ma form1, je lance la form4 toujours en premier
plan,
> soit:
> Load Form4
> Form4.Show , Me
>
> Mais voilà, je veux bien ma Form4 au 1er plan, mais cependant, je
> voudrais que la Form1 ait le focus (que son bandeau ne soit pas estompé
> ensuite), comment faire ?
> Merci.
> --
> @+, bye, Joe.
> Pour m'écrire ng75AROBASEnoosPOINTfr
> remplace AROBASE et POINT par leur vrai signe
> Il l'a fait car il ne savait pas que c'était impossible, alea jacta est!
>
>
>
>




Avatar
EddiGordo
"surfeur75" vient de nous annoncer :
Bonjour,

J'ai un petit problème de focus:
Après avoir ouvert ma form1, je lance la form4 toujours en premier plan,
soit:
Load Form4
Form4.Show , Me

Mais voilà, je veux bien ma Form4 au 1er plan, mais cependant, je
voudrais que la Form1 ait le focus (que son bandeau ne soit pas estompé
ensuite), comment faire ?
Merci.




Bonjour

Essaie dans Form1.Load :

Me.Show
Load Form4
Form4.Show ,Me
Me.SetFocus


--
Enjoy !
Avatar
surfeur75
Ben voilà un homme qu'a trouvé, merci, en fait je connais les commandes une
par une, mais arriver à bien les combiner et à les mettre où il faut, lol,
je n'y arrivais pas... Remarques, moi j'avais mis dans activate mon load
form4, là il est dans le load1, ça va car je ne rappelle par le load1 en
cours de programme (récursif), sinon, je ne sais pas ce qui se passerait...
Mais merci encore...
--
@+, bye, Joe.
Pour m'écrire ng75AROBASEnoosPOINTfr
remplace AROBASE et POINT par leur vrai signe
Il l'a fait car il ne savait pas que c'était impossible, alea jacta est!


"EddiGordo" a écrit dans le message de news:

"surfeur75" vient de nous annoncer :
> Bonjour,
>
> J'ai un petit problème de focus:
> Après avoir ouvert ma form1, je lance la form4 toujours en premier


plan,
> soit:
> Load Form4
> Form4.Show , Me
>
> Mais voilà, je veux bien ma Form4 au 1er plan, mais cependant, je
> voudrais que la Form1 ait le focus (que son bandeau ne soit pas estompé
> ensuite), comment faire ?
> Merci.


Bonjour

Essaie dans Form1.Load :

Me.Show
Load Form4
Form4.Show ,Me
Me.SetFocus


--
Enjoy !