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.
You have to descend from TSpinEdit
and override IsValidChar
to avoid the MessageBeep call or KeyPress
to avoid IsValidChar
.
Try this one
//Disable system beep
SystemParametersInfo(SPI_SETBEEP, 0, nil, SPIF_SENDWININICHANGE);
//Enable system beep
SystemParametersInfo(SPI_SETBEEP, 1, nil, SPIF_SENDWININICHANGE);
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