OVH Cloud OVH Cloud

Ordre d'affichage des champs

2 réponses
Avatar
Bricoleur
Bonjour (re)

Dans les formulaires de ma base, je fais afficher sous forme d'une étiquette
de texte, une aide dépendant de l'emplacement de la souris. Ainsi, si
l'utilisateur à cliqué sur le bouton aide, lorsqu'il place la souris sur une
zone "aidée", une boite d'aide apparaît à proximité de la souris. Tout
baigne, sauf lorsqu'il y a un sous-formulaire sur la page. Dans ce cas, la
boite d'aide est masquée (partiellement) par le formulaire.
Comment éviter ce pb ?

Le code que j'utilise est le suivant :
Dans le formulaire :
=============
Private Sub BoutonSupprime_MouseMove(Button As Integer, Shift As Integer, X
As Single, Y As Single)
AfficheAide BoutonSupprime, 204
End Sub
Function AfficheAide(champ As Control, MessAide)
'
ModAfficheAide Me.Name, champ, MessAide, [Aide], [AideOuiNon],
Me.PiedFormulaire.Height, Form.Width '
End Function
'

Dans un module :
===========
Function ModAfficheAide(Formulaire, ChampTraité As Control, MessAide, Aide
As Control, AideOuiNon As Control, DétailHeight, FormWidth)

ChampTraité.FontBold = True
On Error GoTo PasAide
If OkAide = True Then
Aide.Caption = DLookup("LibelléAide", "Aide", "Aide = '" & MessAide
& "'")
OkAide = False
DéjaToutMaigre = False

If AideOuiNon = True Then
Aide.Visible = True
'emplacement vertical de l'étiquette
If ChampTraité.Top + 300 + Aide.Height < DétailHeight Then
Aide.Top = ChampTraité.Top + 300
Else
Aide.Top = ChampTraité.Top - 100 - Aide.Height
End If
'emplacement horizontal de l'étiquette
If ChampTraité.Left + 450 + Aide.Width < FormWidth Then
Aide.Left = ChampTraité.Left + 400
Else
Aide.Left = ChampTraité.Left - 100 - Aide.Width
End If
End If
End If
GoTo fin
PasAide:
Aide.Caption = "Aide non disponible"

Resume Next
fin:
End Function

2 réponses

Avatar
Xavier HUE
Bonjour Bricoleur,

Effectivement, même en changeant le plan (premier plan /
arrière plan) de l'Etiquette ou du sous-formulaire, ça ne
change rien.

Par contre, tu peux ordonner l'ordre d'affichage d'un SF
par rapport à un autre, donc, tu peux te créer un SF ne
contenant que ton étiquette. Il te suffit de repositionner
le SF au lieu de l'etiquette.

Et pour faire plus fort, tu peux déplacer ta routine dans
ton SF "Aide", en tant que Public Sub.
En effet, dans ce cas, tu pourras, dans le formulaire
principal, faire un truc du style:

Me.SFAide.AfficheAide(....)

Il te suffit d'adapter un brin ta procédure.
Du coup, un seul objet, et tout ce qui va bien avec ;-)

Cordialement.
Avatar
Bricoleur
Merci Xavier, je vais me débrouiller avec ça



"Xavier HUE" a écrit dans le message de
news:08e801c3d5d1$dc67fef0$
Bonjour Bricoleur,

Effectivement, même en changeant le plan (premier plan /
arrière plan) de l'Etiquette ou du sous-formulaire, ça ne
change rien.

Par contre, tu peux ordonner l'ordre d'affichage d'un SF
par rapport à un autre, donc, tu peux te créer un SF ne
contenant que ton étiquette. Il te suffit de repositionner
le SF au lieu de l'etiquette.

Et pour faire plus fort, tu peux déplacer ta routine dans
ton SF "Aide", en tant que Public Sub.
En effet, dans ce cas, tu pourras, dans le formulaire
principal, faire un truc du style:

Me.SFAide.AfficheAide(....)

Il te suffit d'adapter un brin ta procédure.
Du coup, un seul objet, et tout ce qui va bien avec ;-)

Cordialement.