Problème API SendMessage

Résolu
J_il Messages postés 109 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 9 septembre 2008 - 6 nov. 2007 à 16:20
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 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)

On Error GoTo erreur 'Gestion des erreurs

SendMessage handle, CB_SHOWDROPDOWN, True, ByVal 0

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...

Merci énormément de votre aide

Gilles

6 réponses

J_il Messages postés 109 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 9 septembre 2008
6 nov. 2007 à 18:05
Merci Exploreur mais dans cette source j'ai pas trouvé ma solution mais par contre je viens de la trouver tout seul comme un grand lol

Au fait lorsque j'appel ma procédure je dois le faire dans l'évènement GotFocus de ma ComboBox et de cette façon-ci :

PROCEDURE_DEROULEMENT_COMBOBOX combo1.hwnd

Et cela fonctionne à merveille....

Merci encore et bonne soirée

Gilles
3
cs_Exploreur Messages postés 4821 Date d'inscription lundi 11 novembre 2002 Statut Membre Dernière intervention 15 novembre 2016 15
6 nov. 2007 à 16:35
Salut,

Peut-être une réponse  ICI 

A+
Exploreur

 Linux a un noyau, Windows un pépin

 
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
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 :

Combo1.SetFocus
SendKeys "{f4}"

<hr />I LIKE TO BE HERE WHEN I CAN
<hr />
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
J_il Messages postés 109 Date d'inscription mardi 27 mars 2007 Statut Membre Dernière intervention 9 septembre 2008
7 nov. 2007 à 08:18
Bien vu RendField c'est pour ça que j'ai opté pour l'Api SendMessage et puis c'est super pratique et ne charge pas trop...
0
chaibat05 Messages postés 1883 Date d'inscription samedi 1 avril 2006 Statut Membre Dernière intervention 20 novembre 2007 2
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.











<hr />

I LIKE TO BE HERE WHEN I CAN


<hr />
0
Rejoignez-nous