Hi,
ich möchte eine ComboBox so abwandeln, dass Sie automatisch aufklappt, sobald sie den Fokus erhält oder das Editfeld angeklickt wird.
(Sonst soll alles original bleiben - kein Autoselect o.ä.)
Beim Fokussieren über die Tab-Taste klappt das schon, nicht aber wenn man mit der Maus in das Editfeld klickt.
Hat jemand einen Tipp?
Delphi-Quellcode:
TComboBoxData = class(TComboBox)
private
...
procedure WMSetFocus(var Message: TWMSetFocus); message WM_SETFOCUS;
procedure WMKillFocus(var Message: TWMSetFocus); message WM_KILLFOCUS;
protected
...
procedure Click; override;
procedure MouseDown(Button:TMouseButton;Shift:TShiftState;X,Y:Integer); override;
public
...
published
...
end;
procedure Register;
{ TComboBoxData }
procedure TComboBoxData.MouseDown(Button: TMouseButton; Shift: TShiftState; X,
Y: Integer);
begin
inherited;
// :-( Wird nur beim Klick auf den DropDownButton aufgerufen
end;
procedure TComboBoxData.Click;
begin
inherited;
// :-( wird nur beim Anklicken eines Items aufgerufen
end;
procedure TComboBoxData.WMSetFocus(var Message: TWMSetFocus);
begin
inherited;
DroppedDown := True;
// :-) FUNKTIONIERT beim Fokussieren über Tab-Taste
end;
Evtl. kann man irgendwie die OnClick-Behandlung der "Edit-Komponente" zuordnen!?
Danke Stahli