In one form of my application, we add sets of data by adding frames to the form. For each frame, we want to be able to move from one edit (Dev Express Editors) control to the next by pressing the Enter key. So far, I have tried four different methods in my control's KeyPress and KeyUp events.
SelectNext(TcxCurrencyEdit(Sender), True, True); // also base types attempted
SelectNext(Sender as TWinControl, True, True);
Perform(WM_NEXTDLGCTL, 0, 0);
f := TForm(self.Parent); // f is TForm or my form
c := f.FindNextControl(f.ActiveControl, true, true, false); // c is TWinControl or TcxCurrencyEdit
if assigned(c) then c.SetFocus;
None of these methods are working in Delphi 5. Can anyone guide me towards getting this working? Thanks.
This works in Delphi 3, 5 and 6:
Set form's KeyPreview property to True.
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
If (Key = #13) then
Begin
SelectNext(ActiveControl as TWinControl, True, True);
Key := #0;
End;
end;
I found one old project that catches CM_DIALOGKEY message when user presses Enter key and then it fires VK_TAB key . It works with number of different controls.
interface
...
procedure CMDialogKey(var Message: TCMDialogKey);message CM_DIALOGKEY;
implementation
...
procedure TSomeForm.CMDialogKey(var Message : TCMDialogKey);
begin
case Message.CharCode of
VK_RETURN : Perform(CM_DialogKey, VK_TAB, 0);
...
else
inherited;
end;
end;
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With