代码之家  ›  专栏  ›  技术社区  ›  Marcus Adams

按Enter键时禁用tspinedit上的系统蜂鸣音

  •  7
  • Marcus Adams  · 技术社区  · 14 年前

    我在窗体上有一个默认按钮,它上面有一个tspinedit控件。当tspinedit控件具有焦点并且用户按Enter键时,而不是单击默认按钮,用户只会听到系统嘟嘟声,因为Enter键对于tspinedit无效。

    通常,为了避免发出哔哔声,我会使用onkeypress事件并设置 Key := 0 要跳过按键,请按。然后我可以在默认按钮上执行click方法。但是,在这种情况下,onkeypress不会触发,因为enter键无效。

    onkeydown开火,但当我准备好的时候 密钥:=0 在那里,它不会停止系统的嘟嘟声。

    那么,当按下tspinedit控件上的Enter键时,如何禁用系统蜂鸣?

    我在Delphi5上,他们没有提供spin.pas的来源。

    3 回复  |  直到 14 年前
        1
  •  7
  •   Francesca    14 年前

    你必须从 TSpinEdit 超驰 IsValidChar 避免消息蜂鸣呼叫或 KeyPress 避免 IsValdChar .

        2
  •  6
  •   Bharat    14 年前

    试试这个

    //Disable system beep
    SystemParametersInfo(SPI_SETBEEP, 0, nil, SPIF_SENDWININICHANGE); 
    
    //Enable system beep
    SystemParametersInfo(SPI_SETBEEP, 1, nil, SPIF_SENDWININICHANGE); 
    
        3
  •  3
  •   Cobus Kruger    14 年前

    在窗体上设置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;