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"
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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 ;-)
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.
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.
Merci Xavier, je vais me débrouiller avec ça
"Xavier HUE" <elxavpub@bupfree.fr> a écrit dans le message de
news:08e801c3d5d1$dc67fef0$a601280a@phx.gbl...
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 ;-)
"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 ;-)