Bonjour,
Pour les besoins d'un projet je dois recreer 'manuellement' une combobox.
et j'ai quelques problemes a mettre ca au point.
En m'inspirant de TDbLookupComboBox, j'arrive a gerer une liste qui apparait lorsque qu'on appuie sur la fleche.
Mon probleme est que lorsque l'on clique sur la liste deroulée, la fenetre principale perd le focus (barre de titre grisée) et le recupere une fois que j'ai relaché le bouton (la liste se ferme).
J'ai recopié à partir du DbLookUp:
Le Hide
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 procedure TPopupList.CreateParams(var Params: TCreateParams); begin inherited CreateParams(Params); with Params do begin Style := WS_POPUP{ or WS_CLIPCHILDREN}; ExStyle := WS_EX_TOOLWINDOW; WindowClass.Style := {WindowClass.Style or} CS_SAVEBITS; end; end; procedure TPopupList.WMMouseActivate(var Msg: TMessage); begin Msg.Result := MA_NOACTIVATE; end; constructor TPopupList.Create(AOwner: TComponent); begin inherited Create(AOwner); ControlStyle := ControlStyle + [csNoDesignVisible, csReplicatable]; Visible := False; end;
Le Show
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SetWindowPos(Handle, 0, 0, 0, 0, 0, SWP_NOZORDER or SWP_NOMOVE or SWP_NOSIZE or SWP_NOACTIVATE or SWP_HIDEWINDOW); Visible := False;
Apparement c'est le meme code que pour le compo BD, mais le comportement n'est pas le meme lorsqu'on clique sur la liste dépliée
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SetWindowPos(Handle, HWND_TOP, Origin.X, Origin.Y, 0, 0, SWP_NOACTIVATE or SWP_SHOWWINDOW or SWP_NOSIZE); Visible := True;
Quelqu'un a une idée de ce que j'ai oublié ? mal fait ? autre.. ?
Merci d'avance,
Partager