OVH Cloud OVH Cloud

Problème de focus

8 réponses
Avatar
John
(Re) Bonjour,

Je ne comprends pas pourquoi lorsque je fais dans un formulaire, au
chargement ou après une action quelconque un monObjet.SetFocus ça ne
fonctionne pas.

Merci

8 réponses

Avatar
X
Bonjour,

L'objet peut-il avoir le focus? Est-ce que la procédure dans laquelle
s'exécute le SetFocus est bien visitée par le pointeur ? etc...

--
Site ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site LOGICIELS
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"John" a écrit dans le message de news:
%
(Re) Bonjour,

Je ne comprends pas pourquoi lorsque je fais dans un formulaire, au
chargement ou après une action quelconque un monObjet.SetFocus ça ne
fonctionne pas.

Merci




Avatar
John
Oui à ces questions.

Lorsque l'on tabule on arrive normalement à l'objet en question.
La procédure appelante est une procédure de recherche standard du style
Chercher dans une base données. Si pas d'enregistrement alerte, sinon
affichage de certaines valeurs puis monObjet.SetFocus
Et là rien ne se passe


"X" wrote in message news:%
Bonjour,

L'objet peut-il avoir le focus? Est-ce que la procédure dans laquelle
s'exécute le SetFocus est bien visitée par le pointeur ? etc...

--
Site ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site LOGICIELS
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
--------------------------------------------------------------------------


----------
"John" a écrit dans le message de news:
%
> (Re) Bonjour,
>
> Je ne comprends pas pourquoi lorsque je fais dans un formulaire, au
> chargement ou après une action quelconque un monObjet.SetFocus ça ne
> fonctionne pas.
>
> Merci
>
>




Avatar
X
Est-ce qu'avec <Tab> tu as le focus ???
Si oui, faudrait peut être montrer ton code...

--
Site ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site LOGICIELS
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"John" a écrit dans le message de news:

Oui à ces questions.

Lorsque l'on tabule on arrive normalement à l'objet en question.
La procédure appelante est une procédure de recherche standard du style
Chercher dans une base données. Si pas d'enregistrement alerte, sinon
affichage de certaines valeurs puis monObjet.SetFocus
Et là rien ne se passe


"X" wrote in message
news:%
Bonjour,

L'objet peut-il avoir le focus? Est-ce que la procédure dans laquelle
s'exécute le SetFocus est bien visitée par le pointeur ? etc...

--
Site ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site LOGICIELS
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
--------------------------------------------------------------------------


----------
"John" a écrit dans le message de news:
%
> (Re) Bonjour,
>
> Je ne comprends pas pourquoi lorsque je fais dans un formulaire, au
> chargement ou après une action quelconque un monObjet.SetFocus ça ne
> fonctionne pas.
>
> Merci
>
>








Avatar
andre.araste
Bonjour

De quelle classe d'objet s'agit-il ?
--
Bonne réception.

http://perso.orange.fr/andre.araste/
Membre du Club Win's: http://www.clubwins.org
Avertissement: Je ne vends rien.



"John" a écrit dans le message de news:
%
(Re) Bonjour,

Je ne comprends pas pourquoi lorsque je fais dans un formulaire, au
chargement ou après une action quelconque un monObjet.SetFocus ça ne
fonctionne pas.

Merci




Avatar
john
Bonjour,

Oui, quand je tabule j'arrive au champ.

Le code est tout simple.

Private Sub Code_Validate(Cancel As Boolean)

If Trim(Code.Text) = "" Then Exit Sub

if recherche(Code.Text) = false
msgbox "pas d'enregistrement trouvé"
Code.SetFocus
else
Nom.Text = recherche
Nom.SetFocus
end if

End Sub


"X" wrote in message news:
Est-ce qu'avec <Tab> tu as le focus ???
Si oui, faudrait peut être montrer ton code...

--
Site ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site LOGICIELS
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
--------------------------------------------------------------------------


----------
"John" a écrit dans le message de news:

> Oui à ces questions.
>
> Lorsque l'on tabule on arrive normalement à l'objet en question.
> La procédure appelante est une procédure de recherche standard du style
> Chercher dans une base données. Si pas d'enregistrement alerte, sinon
> affichage de certaines valeurs puis monObjet.SetFocus
> Et là rien ne se passe
>
>
> "X" wrote in message
> news:%
>> Bonjour,
>>
>> L'objet peut-il avoir le focus? Est-ce que la procédure dans


laquelle
>> s'exécute le SetFocus est bien visitée par le pointeur ? etc...
>>
>> --
>> Site ROMANS édités
>> http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
>> Site LOGICIELS
>> http://irolog.free.fr
>> Mail
>> http://irolog.free.fr/ecrire/index.htm

-------------------------------------------------------------------------




-
> ----------
>> "John" a écrit dans le message de news:
>> %
>> > (Re) Bonjour,
>> >
>> > Je ne comprends pas pourquoi lorsque je fais dans un formulaire, au
>> > chargement ou après une action quelconque un monObjet.SetFocus ça ne
>> > fonctionne pas.
>> >
>> > Merci
>> >
>> >
>>
>>
>
>




Avatar
X
Bonour,

Mets un msgBox ici:

else
Nom.Text = recherche
MsgBox "ICI"
Nom.SetFocus
end if

Et vois s'il y va bien...

Sinon, je pense qu'il vaut mieux conserver les noms d'origine (text1)
par exemple, car déjà si tu passes ton code à une personne, elle doit
renommer tous les objets, et de plus un truc du genre "Nom.SetFocus", ben
"Nom", il est impossible de comprendre ce que c'est, quel objet, une
variable, suffit de mettre un commentaire pour s'y retrouver:
text1 ' nom

A part ça, si ça marche, qu'il s'arrête à "ICI", envoies-moi ton code
par courrier, que je regarde...
--
Site ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site LOGICIELS
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
"john" a écrit dans le message de news:
%23lPr7$
Bonjour,

Oui, quand je tabule j'arrive au champ.

Le code est tout simple.

Private Sub Code_Validate(Cancel As Boolean)

If Trim(Code.Text) = "" Then Exit Sub

if recherche(Code.Text) = false
msgbox "pas d'enregistrement trouvé"
Code.SetFocus
else
Nom.Text = recherche
Nom.SetFocus
end if

End Sub


"X" wrote in message news:
Est-ce qu'avec <Tab> tu as le focus ???
Si oui, faudrait peut être montrer ton code...

--
Site ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site LOGICIELS
http://irolog.free.fr
Mail
http://irolog.free.fr/ecrire/index.htm
--------------------------------------------------------------------------


----------
"John" a écrit dans le message de news:

> Oui à ces questions.
>
> Lorsque l'on tabule on arrive normalement à l'objet en question.
> La procédure appelante est une procédure de recherche standard du style
> Chercher dans une base données. Si pas d'enregistrement alerte, sinon
> affichage de certaines valeurs puis monObjet.SetFocus
> Et là rien ne se passe
>
>
> "X" wrote in message
> news:%
>> Bonjour,
>>
>> L'objet peut-il avoir le focus? Est-ce que la procédure dans


laquelle
>> s'exécute le SetFocus est bien visitée par le pointeur ? etc...
>>
>> --
>> Site ROMANS édités
>> http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
>> Site LOGICIELS
>> http://irolog.free.fr
>> Mail
>> http://irolog.free.fr/ecrire/index.htm

-------------------------------------------------------------------------




-
> ----------
>> "John" a écrit dans le message de news:
>> %
>> > (Re) Bonjour,
>> >
>> > Je ne comprends pas pourquoi lorsque je fais dans un formulaire, au
>> > chargement ou après une action quelconque un monObjet.SetFocus ça ne
>> > fonctionne pas.
>> >
>> > Merci
>> >
>> >
>>
>>
>
>








Avatar
Fred
Dans : news:%23lPr7$
john écrit :
Bonjour,



Bonjour,

Oui, quand je tabule j'arrive au champ.

Le code est tout simple.

Private Sub Code_Validate(Cancel As Boolean)

If Trim(Code.Text) = "" Then Exit Sub

if recherche(Code.Text) = false
msgbox "pas d'enregistrement trouvé"
Code.SetFocus
else
Nom.Text = recherche
Nom.SetFocus
end if

End Sub



Le code Validate s'exécute lorsque le contrôle perd le focus par la
sélection d'un autre contrôle dont la propriété CausesValidation est
true (par défaut).
Il est donc normal que le focus aille ensuite sur le contrôle
sélectionné par clic, ou bien le suivant dans l'ordre de tabulation.

Dans un cas, tu souhaites que le focus reste sur le textbox «Code». Cela
se réalise très simplement en remplaçant :
Code.SetFocus
par
Cancel = True

Dans le second cas, c'est un peu plus délicat.
La solution que je vois c'est de programmer l'événement LostFocus de
«Code»

Private Sub Code_LostFocus()
If Test Then
Nom.SetFocus
End If
End Sub

Bien sûr le test est à adapter. Il s'agit de savoir si on sort de la
procédure Validate.
Tu peux par exemple positionner un booléen partagé comme ceci :
À la place de Nom.SetFocus, tu écris :
succcesValidation = True

Et la procédure LostFocus devient :
If succesValidationThen
succesValidation = False
Nom.SetFocus
End If

Ça devrait coller comme cela.

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
john
> Le code Validate s'exécute lorsque le contrôle perd le focus par la
sélection d'un autre contrôle dont la propriété CausesValidation est
true (par défaut).
Il est donc normal que le focus aille ensuite sur le contrôle
sélectionné par clic, ou bien le suivant dans l'ordre de tabulation.

Dans un cas, tu souhaites que le focus reste sur le textbox «Code». Cela
se réalise très simplement en remplaçant :
Code.SetFocus
par
Cancel = True

Dans le second cas, c'est un peu plus délicat.
La solution que je vois c'est de programmer l'événement LostFocus de
«Code»

Private Sub Code_LostFocus()
If Test Then
Nom.SetFocus
End If
End Sub

Bien sûr le test est à adapter. Il s'agit de savoir si on sort de la
procédure Validate.
Tu peux par exemple positionner un booléen partagé comme ceci :
À la place de Nom.SetFocus, tu écris :
succcesValidation = True

Et la procédure LostFocus devient :
If succesValidationThen
succesValidation = False
Nom.SetFocus
End If

Ça devrait coller comme cela.




Merci.
Effectivement comme cela ça fonctionne très bien.

Merci encore