Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Disable system beep on TSpinEdit when pressing Enter

Tags:

beep

delphi

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.

like image 937
Marcus Adams Avatar asked Jun 29 '10 14:06

Marcus Adams


2 Answers

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

like image 54
Francesca Avatar answered Sep 18 '22 17:09

Francesca


Try this one

//Disable system beep
SystemParametersInfo(SPI_SETBEEP, 0, nil, SPIF_SENDWININICHANGE); 

//Enable system beep
SystemParametersInfo(SPI_SETBEEP, 1, nil, SPIF_SENDWININICHANGE); 
like image 24
Bharat Avatar answered Sep 21 '22 17:09

Bharat