Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
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 23/01/2011, 15h55   #1
Invité de passage
 
Michel BESSON
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Michel BESSON

Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 0
Points : 0
Par défaut Modes insertion ou déplacement d'une zone texte d'un formulaire

Bonjour

Dans une zone de texte, selon que le mode est, "insertion ou déplacement" la partie selectionnée est différente.
La touche de fonction F2 permet de passer d'un mode à l'autre.
Mais Lorsqu'une zone de texte reçoit le focus quel que soient les options du clavier choisies auparavant, le mode varie selon que l'on appuie sur la touche Enter, que l'on click sur la zone, que l'on se serve d'un bouton de commande des touches de changement d'enregistrement, ou que l'on tape le N° de l'enregistement, etc

En mode déplacement la zone entière est selectionnée.
En mode insertion les SelStart et SelLength determinent la zone selectionnée.

Comment peut-on déterminer le Mode lorsque la zone prend le focus de façon à le modifier si nécessaire.

PS) Ma zone est la premiere saisie au changement d'enregistrement c'est une date avec le classique inputmask = 00\ /\ 00\ /\ 0000;0;_

Je veux être en mode selection pour que la frappe de la nouvelle date n'efface pas l'ancienne.

Merci de votre réponse
Michel_de_Marcy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 23/01/2011, 17h13   #2
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Bonjour,

Envisage plutôt de spécifier systématiquement le positionnement que tu souhaites pour chaque contrôle concerné.

Dans l'événement "sur clic"

Pour te positionner à gauche :
Code :
Me.LeControle.SelStart = 0
pour te positionner à droite :

Code :
Me.LeControle.SelStart =  Len(Me.LeControle.text)
pour sélectionner le texte :

Code :
1
2
Me.LeControle.SelStart = 0
Me.LeControle.SelLength = Len(Me.LeControle.text)
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 09h18   #3
Invité de passage
 
Michel BESSON
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Michel BESSON

Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 0
Points : 0
Par défaut Merci " ClaudeLELOUP " pour cette réponse.

Bonjour

La solution proposée est celle que j'ai essayée en premier mais :

1) Si la zone de texte obtient le focus en mode "insertion" effectivement le caratère selectionné est bien le premier à gauche et le texte ne s'efface pas si l'on tape un caractère. Ceci est pratique losque l'on rentre une date !
2) Si la zone de texte obtient le focus en mode "déplacement" la zone de texte entière est selectionné et le texte s'efface si l'on tape un caractère. Ce qui est normal.

Dans un formulaire une zone de texte peut obtenir le focus de nombreuses façons. "Click", "ordre .setfocus", "touches Haut Bas, Droite, Gauche" "barre de Changement d'enregistrement par les touches précédent ou suivant ou en tapant le N° d"enregistrement" etc. .
Lorsque l'on fait ces essais la zone de texte qui obtient le focus le reçoit parfois en mode Insertion d'autres fois en mode Déplacement.
La touche F2 permet dans tous les cas de changer de mode. Il y a donc une variable correspondant à ce mode.
1) Lire cette variable permettrait si nécessaire de changer de mode par un .
2) Modifier(si c'est possible) la variable et ainsi changer de mode se serait encore mieux.
Remarque :
Mes essais de tester la longueur de la zone par
Code :
If LeControle.SelLength = 1 Then
ne marchent que lorsque l'on est en mode insertion. En mode déplacement .SelLength = 1 malgré que la zone entière (10 caractères) soit selectionnée !!
C'est pour cela que j'ai posé ma question
Michel_de_Marcy est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 09h48   #4
Rédacteur

 
Avatar de ClaudeLELOUP
 
Homme Claude LELOUP
Chercheur de loisirs (ayant trouvé !)
Inscription : novembre 2006
Messages : 5 242
Détails du profil
Informations personnelles :
Nom : Homme Claude LELOUP
Âge : 66
Localisation : Belgique

Informations professionnelles :
Activité : Chercheur de loisirs (ayant trouvé !)
Secteur : Finance

Informations forums :
Inscription : novembre 2006
Messages : 5 242
Points : 11 037
Points : 11 037
Bonjour,


Citation:
Mes essais de tester la longueur de la zone par
Code :
If LeControle.SelLength = 1 Then
la bonne syntaxe est :


Code :
if Len(Me.LeControle.Text)= <la valeur>   then
ClaudeLELOUP est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/01/2011, 14h58   #5
Invité de passage
 
Michel BESSON
Inscription : janvier 2011
Messages : 3
Détails du profil
Informations personnelles :
Nom : Michel BESSON

Informations forums :
Inscription : janvier 2011
Messages : 3
Points : 0
Points : 0
Bonjour

Après de nombreux essais défectueux, j'ai mis la zone de texte qui me posait problême (Une Date) en deuxième position dans le formulaire.

Du coup, le nombre de possiblilé pour accéder à cette zone devient "Click sur la zone" et "Enter" sur la zone précédente et dans ce cas il n'y a plus de problème.

Il n'empêche que pour la première zone de texte d'un formulaire, le changement d'enregistrement peut être déclenché par "Enter sur le dernier champ du formulaire", par "suivant" "précédent" ou "frappe du N°" au niveau des boutons de déplacement, par l'ouverture du formulaire, par un setfocus etc.

C'est ce changement d'enregistrement en plus de la prise du focus qui empêche la maitrise du mode insertion ou déplacement

Comment la touche "F2" continue-t'elle à modifier convenablement le mode.

Pour moi le problême reste entier
Michel_de_Marcy est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



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


 
 
 
 
Partenaires

Hébergement Web