Einzelnen Beitrag anzeigen

Amateurprofi
Online

Registriert seit: 17. Nov 2005
Ort: Hamburg
1.039 Beiträge
 
Delphi XE2 Professional
 
#1

TComboBox - MouseMove

  Alt 8. Aug 2018, 02:58
Ich habe in der Main-Form eine TComboBox und möchte auf MouseMove-Events reagieren, wenn sich der Maus-Zeiger in der ComboBox oder in der aufgeklappten Liste befindet.

Meine bisherige Lösung:

1) In einer Unit, die in der Uses-Liste der Main-Form aufgeführt ist habe ich deklariert
Delphi-Quellcode:
   TComboBox = class(Vcl.StdCtrls.TComboBox)
   public
      property OnMouseMove;
   end;
2) Im FormCreate der Main-Form habe ich

Delphi-Quellcode:
procedure TMain.FormCreate(Sender: TObject);
begin
   …
   ComboBox.OnMouseMove := ComboBoxMouseMove;
   …
end;
und

Delphi-Quellcode:
procedure TMain.ComboBoxMouseMove(Sender:TObject; Shift:TShiftState; X,Y:Integer);
begin
   …
   …
end;
wo ich auf das MouseMove reagiere.

Das funktioniert gut, allerdings nur, wenn sich der Maus-Zeiger im Textfeld der ComboBox befindet.
Ist die Liste aufgeklappt und ich bewege die Maus im aufgeklappten Teil, wird kein MouseMove-Event ausgelöst (jeenfalls kommt es nicht im ComboBoxMouseMove an).

Frage:
Wie erreiche ich, dass ich auch auf Mausbewegungen im aufgeklappten Bereich der ComboBox reagieren kann.



Ein weiteres Problem:
Wen die Liste aufgeklappt wird, reicht diese bis an den unteren Rand der Form.
Ich möchte aber die Höhe begrenzen.

Ich habe es bereits mit DropDownCount versucht, aber das funktioniert nicht, auch dann nicht, wenn ich DropDownCount zur Laufzeit setze.
Ich vermute, dass das an Style = csOwnerDrawFixed liegt.

Frage:
Wie kann ich die Höhe der Liste begrenzen.
Gruß, Klaus
Die Titanic wurde von Profis gebaut,
die Arche Noah von einem Amateur.
... Und dieser Beitrag vom Amateurprofi....
  Mit Zitat antworten Zitat