Search code examples
delphibeep

Disable system beep on TSpinEdit when pressing Enter


I have a default button on a form that has a TSpinEdit control on it. When the TSpinEdit control has the focus and the user presses the Enter key, instead of the default button getting clicked, the user just hears a system beep because the Enter key is invalid for a TSpinEdit.

Normally, to avoid the beep, I would use the OnKeyPress event and set the Key := 0 to skip the key press. I could then execute the click method on the default button. However, in this case, OnKeyPress doesn't fire because the Enter key is not valid.

OnKeyDown fires, but when I set Key := 0 there, it doesn't stop the system beep.

So, how do I disable the system beep when pressing the Enter key on a TSpinEdit control?

I'm on Delphi 5, and they didn't include the source for Spin.pas.


Solution

  • You have to descend from TSpinEdit and override IsValidChar to avoid the MessageBeep call or KeyPress to avoid IsValidChar.