Damit das im ganzen Formular funktioniert, kann man es auch in FormKeyDown einbauen.
Delphi-Quellcode:
procedure TLagerCustomForm.FormKeyDown(Sender: TObject;
var Key: Word;
Shift: TShiftState);
var
Msg : TMsg;
begin
if (key = VK_RETURN)
and (shift = [])
then
begin
if not IsOpenDropDown
then // Kein Ersetzen wenn ein Dropdown offen ist
begin
Key := 0;
PeekMessage(Msg, 0, WM_CHAR, WM_CHAR, PM_REMOVE);
Perform(WM_NEXTDLGCTL,0,0);
end;
end;
end;
function TLagerCustomForm.IsOpenDropDown: boolean;
var
i : integer;
begin
result := false;
for i := 0
to ControlCount -1
do
begin
with Controls[i]
do
begin
// Abfrage auf Devexpress und VCL Combobox
if (InheritsFrom(TcxCustomDropDownEdit)
and TcxCustomDropDownEdit(Controls[i]).DroppedDown)
or
(InheritsFrom(TCustomComboBox)
and TCustomCombo(Controls[i]).DroppedDown)
then
begin
result := true;
break;
end;
end;
end;
end;