Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > IHM
IHM Ce forum est dédié aux questions relatives à la création de formulaires et d'états, avec ou sans code VBA, et macros.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 30/11/2010, 03h33   #1
Candidat au titre de Membre du Club
 
Alain PUJOL
Inscription : octobre 2010
Messages : 21
Détails du profil
Informations personnelles :
Nom : Alain PUJOL

Informations forums :
Inscription : octobre 2010
Messages : 21
Points : 12
Points : 12
Par défaut Position d'un textbox à l'écran

Bonjour,

J'affiche des données dans un formulaire continu. Lorsqu'un text box reçois le focus je voudrais connaitre sa position sur l'écran pour y superposer un rectangle.

Comment récupérer sa position?

Merci pour vos réponses
a.pujol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 04h31   #2
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 605
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 605
Points : 30 942
Points : 30 942
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Que veux-tu dire par y superposer un rectangle ?

Est-ce que ce rectangle existe déjà dans ton formulaire ou veux-tu le créer dynamiquement ? Car dans ce dernier cas, il y aura des soucis car le formulaire doit être en mode création.

Peux-tu aussi expliquer le but de cette manœuvre.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 18h41   #3
Candidat au titre de Membre du Club
 
Alain PUJOL
Inscription : octobre 2010
Messages : 21
Détails du profil
Informations personnelles :
Nom : Alain PUJOL

Informations forums :
Inscription : octobre 2010
Messages : 21
Points : 12
Points : 12
Pour plus de précision,

Je voudrais que lorsque le focus est mis sur un champ dont les données sont modifiables celui-ci soit encadré.

Je fais déjà cela dans les formulaires uniques en jouant avec les bordures des champs sur réeption et perte du focus, mais cela n'est pas possible avec les formulaires continus.

j'imaginais donc à partir d'un rectangle qui serait déjà dessiné et masqué, le positionner pour qu'il encadre le champ actif. Je ne sais pas du tout si cela pourra fonctionner. Pour l'instant je n'ai pas trouvé comment récupérer la position à laquelle est affiché le champ sur l'écran et c'est l'objet de ma question.

Merci pour vos réflexions
a.pujol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 19h24   #4
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonjour,
Citation:
Envoyé par a.pujol Voir le message
Je fais déjà cela dans les formulaires uniques en jouant avec les bordures des champs sur réception et perte du focus, mais cela n'est pas possible avec les formulaires continus.
Tu auras le même problème avec un rectangle.

Sinon, pour répondre à la question il faut jouer avec les propriétés Left, Top, Width et Height du rectangle.
Le contrôle Textbox possède aussi ces propriétés.

Un autre moyen de mettre en évidence le contrôle qui a le focus, est la mise en forme conditionnelle.
Il y a une condition "champ activé".

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/11/2010, 20h41   #5
Candidat au titre de Membre du Club
 
Alain PUJOL
Inscription : octobre 2010
Messages : 21
Détails du profil
Informations personnelles :
Nom : Alain PUJOL

Informations forums :
Inscription : octobre 2010
Messages : 21
Points : 12
Points : 12
La mise en forme conditionnelle ne permet malheureusement pas de modifier l'apparence du champ (bordure..). Cette fonction ne m'apporte pas de solution,

c'est bien un cadre que je souhaite pour mettre en évidence le champ actif.

Citation :
Sinon, pour répondre à la question il faut jouer avec les propriétés Left, Top, Width et Height du rectangle.
Le contrôle Textbox possède aussi ces propriétés.

effectivement je pensais bien travailler sur ces paramètres, à condition de connaitre la position à l'écran du textbox.

je laisse mon message ouvert à tous ceux qui auraient la solution
a.pujol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 05h57   #6
Rédacteur/Modérateur
 
Avatar de Philippe JOCHMANS
 
Homme Philippe JOCHMANS
Développeur informatique
Inscription : mai 2005
Messages : 17 605
Détails du profil
Informations personnelles :
Nom : Homme Philippe JOCHMANS
Âge : 44
Localisation : France, Loir et Cher (Centre)

Informations professionnelles :
Activité : Développeur informatique
Secteur : Communication - Médias

Informations forums :
Inscription : mai 2005
Messages : 17 605
Points : 30 942
Points : 30 942
Envoyer un message via MSN à Philippe JOCHMANS Envoyer un message via Skype™ à Philippe JOCHMANS
Bonjour

Je pense que tu pourrais lire ce tuto : Mise en surbrillance d'un enregistrement dans un formulaire Access

Bien que ce soit fait sur toute la ligne, tu devrais peut-être pouvoir l'adapter.

Philippe
__________________
Détaillez vos questions, sinon vous aurez des réponses erronées et vous irez tout droit dans le et lisez les règles sinon
Si vous pensez commencer sans un livre, oublier : livres pour débuter
Vous pouvez consulter mes articles sur Access et PowerPoint
Le blog Office.

Inutile de m'envoyer un MP pour des questions techniques ou de me relancer , je n'y répondrais pas.
Philippe JOCHMANS est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 19h33   #7
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Bonsoir,

On n'a pas besoin nécessairement de connaître la position à l'écran du contrôle TextBox.
Si les deux contrôles (TextBox et Rectangle) sont dans la même section :
Code :
1
2
3
4
5
6
7
Sub Encadrer(ctl As Access.Control)
Me.rect1.Left = ctl.Left - 15
Me.rect1.Top = ctl.Top - 15
Me.rect1.Width = ctl.Width + 30
Me.rect1.Height = ctl.Height + 30
Me.rect1.Visible = True
End Sub
rect1 est le contrôle Rectangle.
Pour le positionner autour d'un contrôle TextBox, on passe ce dernier en paramètre à la sub.

La proposition de Philippe fonctionne.
On combine la solution du tutoriel avec un code du genre de celui que j'ai posté, en l'appliquant non plus à un rectangle, mais à la zone de texte qui sert à mise en surbrillance.

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/12/2010, 21h00   #8
Candidat au titre de Membre du Club
 
Alain PUJOL
Inscription : octobre 2010
Messages : 21
Détails du profil
Informations personnelles :
Nom : Alain PUJOL

Informations forums :
Inscription : octobre 2010
Messages : 21
Points : 12
Points : 12
Bonsoir,

Je réponds en premier à Ledzepp que je remercie. J'ai testé le bout de code, mais je n'ai pas trouvé que passer à ctl. J'ai pensé qu'il fallait appeler le sub lorsque le contrôle reçoit le focus du style
Encadrer (me.activecontrol.name)
mais cela génère une erreur.
Je suis prenneur de plus de précision.

Entre temps, j'ai regardé plus en détail la propo de Philippe. J'avais fait un test hier au soir, mais je n'avais pas trouvé comment modifier la solution proposée dans le tuto. Devant l'insistance de Philippe, j'ai trouvé une solution que je décris ci dessous. Cela pourra certainement servir à quelqu'un.

Donc à partir du tuto de Jean Philippe:

Il faut dupliquer le txtBackGround autant de fois que de contrôles à mettre en évidence sur la ligne.

Ensuite créer un contrôle que j'ai nonmé ctlCol et qui sera masqué.

Ensuite pour chaque contrôle qui sera mis en évidence, sur réception focus, du contrôle

positionner son N° d'ordre sur la ligne dans ctlCol tel que,
pour le premier contrôle --> Me.ctlCol = 1
pour le 2ème ---> Me.ctlCol = 2
ect
et sur perte focus --> me.ctlcol=0 (si O n'est pas utilisé)

je modifie pour chaque txtBackGround correspondant à chaque contrôle la formule
=VraiFaux([SelTop]=[ctlCurline];"ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ";Null)
en rajoutant pour le premier
=VraiFaux([SelTop]=[ctlCurline];VraiFaux([ctlCol]=1;"ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ";Null);Null)
pour le deuxième
=VraiFaux([SelTop]=[ctlCurline];VraiFaux([ctlCol]=2;"ÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛÛ";Null);Null)
ect

Ce sont les seules modifications à apporter à la solution de Jean Philippe (merci à lui).

Par manque de maitrise du forum, mon message n'est peut être pas clair.

En tous cas merci à ceux qui m'ont répondu
a.pujol est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 02/12/2010, 18h50   #9
Rédacteur
 
Avatar de LedZeppII
 
Homme
Maintenance données produits
Inscription : décembre 2005
Messages : 3 939
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Maintenance données produits
Secteur : Distribution

Informations forums :
Inscription : décembre 2005
Messages : 3 939
Points : 6 278
Points : 6 278
Par défaut Précisions

Bonjour,
Citation:
Envoyé par a.pujol Voir le message
Je réponds en premier à Ledzepp que je remercie. J'ai testé le bout de code, mais je n'ai pas trouvé que passer à ctl. J'ai pensé qu'il fallait appeler le sub lorsque le contrôle reçoit le focus du style
Code :
Encadrer (me.activecontrol.name)
mais cela génère une erreur.
Je suis prenneur de plus de précision.
C'était preque ça. L'argument de la sub est le contrôle lui-même, pas son nom.
Exemple dans la procédure événementielle "sur réception focus" d'un contrôle txtChp1 :
Code :
1
2
3
Private Sub txtChp1_GotFocus()
EncadrerAvecTextBox Me.txtChp1
End Sub
Cela répond à ta question concernant le positionnement d'un contrôle par rapport à un autre,
mais cela ne fonctionne pas dans un formulaire en continu.

A+
LedZeppII est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h55.


 
 
 
 
Partenaires

Hébergement Web