J_il
Messages postés109Date d'inscriptionmardi 27 mars 2007StatutMembreDernière intervention 9 septembre 2008
-
6 nov. 2007 à 16:20
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 2007
-
7 nov. 2007 à 10:28
Bonjour à tous, j'ai un problème avec l'api SendMessage de la Lib user32.
Au fait j'esaie de l'utiliser pour faire un déroulement automatique d'une comobox une fois que le focus se trouve dessus.
Voici ce que j'ai comme code :
'----------------------------------------------------------------------------------------
'Déclaration de l'API qui va permettre d'ouvrir une Combox quand il a le Focus
'=============================================================================
Public Declare Function SendMessage Lib "user32" Alias "SendMessageA" _
(ByVal hMenu As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Const CB_SHOWDROPDOWN = &H14F
Public Sub PROCEDURE_DEROULEMENT_COMBOBOX(handle As Long)
Exit Sub
erreur:
Call fct_journal_erreurs(Err.Number, Err.description, "problème dans la Procédure PROCEDURE_DEROULEMENT_COMBOBOX du Module mod_gestionnaire")
End Sub
Voilà, donc mon problème c'est lorsque je fais appel à cette procédure, je ne sais pas ou je dois la mettre !!!
Ou alors c'est peut être mon code qui n'est pas bon !!!! Oui bien si vous avez une autre solution...
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 6 nov. 2007 à 23:30
Bonsoir,
s' il s' agit juste de dérouler la liste comme si tu cliquais sur le bouton-flèche du combo, il y' a plus simple et pas besoin de l' Api SendMessage :
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 7 nov. 2007 à 07:01
pas joli, de piloter a base de SendKeys...
SetFocus doit toujours etre sous le coup d'une gestion d'erreurs, on ne sais jamais (plante si controle non pret)
pour conclure, F4 bascule l'etat (masqué ou non) de la liste... elle ne garantie pas de la montrer ou de la cacher...
Renfield
Admin CodeS-SourceS- MVP Visual Basic
Vous n’avez pas trouvé la réponse que vous recherchez ?
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 7 nov. 2007 à 10:28
Bonjour,
cette "astuce" marche sans problème dans le cas
l' on veut juste voir la liste déroulante pour effectuer un choix.
Au départ le Combo est invisible .
Sub QuelconqueControl_Click()
Combo1.Visible=True
Combo1.SetFocus
'ou SendKeys "{tab}" si l' index des deux controls se suivent
'du coup le focus passe au combo
SendKeys "{f4}" '==>le combo se déroule
Combo1.ListIndex=0
EndSub
Sub Combo1_Click
QuelconqueControl.Text=Combo1.Text
Combo1.Visible=False
End Sub
Combo1.Visible=False peut être aussi mis dans Combo1_LostFocus
Exemples de QuelconqueControl : FlexGrid, DataGrid, DbGrid, ,.etc
Pour ces quelques exemples de control, le combo est en premier plan.
Pour un TextBox , le combo est en arrière plan.ainsi la partie Texte du combo est masquée.
Le coup du TextBox je l' utilise assez souvent en l' associant à une petite image sur le coté pour simuler la flèche.