Отключите системный звуковой сигнал на TSpinEdit при нажатии Enter

У меня есть кнопка по умолчанию на форме, которая имеет контроль TSpinEdit на ней. Когда управление TSpinEdit имеет фокус, и пользователь нажимает клавишу Enter вместо нажатой кнопки по умолчанию, пользователь просто слышит, что система подает звуковой сигнал, потому что клавиша Enter недопустима для TSpinEdit.

Обычно, для предотвращения звукового сигнала я использовал бы событие OnKeyPress и установил бы Key := 0 пропускать нажатие клавиши. Я мог затем выполнить метод щелчка на кнопке по умолчанию. Однако в этом случае OnKeyPress не стреляет, потому что клавиша Enter не допустима.

Пожары в OnKeyDown, но когда я установил Key := 0 там, это не останавливает системный звуковой сигнал.

Так, как я отключаю системный звуковой сигнал при нажатии клавиши Enter на управлении TSpinEdit?

Я нахожусь на Delphi 5, и они не включали источник для Spin.pas.

8
задан Marcus Adams 29 June 2010 в 14:36
поделиться

3 ответа

Вы должны спуститься из TSpinEdit и переопределить IsValidChar , чтобы избежать вызова MessageBeep, или KeyPress , чтобы избежать IsValidChar .

7
ответ дан 5 December 2019 в 10:39
поделиться

Попробовать

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

//Enable system beep
SystemParametersInfo(SPI_SETBEEP, 1, nil, SPIF_SENDWININICHANGE); 
6
ответ дан 5 December 2019 в 10:39
поделиться

Установите KeyPreview = True в форме и добавьте следующий код к событию нажатия клавиши формы:

procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
  if SpinEdit1.Focused and (Key = #13) then
  begin
    Key := #0; // Cancels the keypress
    Perform(CM_DIALOGKEY, VK_RETURN, 0); // Invokes the default button
  end;
end;
3
ответ дан 5 December 2019 в 10:39
поделиться
Другие вопросы по тегам:

Похожие вопросы: