无法在不发出哔声的情况下关闭 Delphi 表单
Cannot close a Delphi form without causing a Beep
我有一个包含 1 个编辑框的 PopUpform。我从主窗体调用 ShowModal 并在 PopUpform.keyDown 事件中使用 Enter 和 Escape 来关闭 PopUp 并在它 returns 到主窗体时设置适当的模态结果。
当编辑框获得焦点时打开和关闭窗体会发出蜂鸣声。如果编辑框没有焦点,表单会自动关闭。如何防止编辑框有焦点时发出蜂鸣声?
通常,对话框包含一个 OK 和一个 Cancel 按钮,Enter键“单击”OK 按钮,Escape 键“单击”Cancel 按钮。
要管理对话框,请将 确定 按钮的 Default
属性 设置为 True
并将 取消 按钮的 Cancel
属性 到 True
。此外,这些按钮还应具有适当的 ModalResult
值:
btnOK
标题 =“确定”
默认 = 真
ModalResult = mrOk
btn取消
标题=“取消”
取消 = 真
ModalResult = mrCancel
然后使用 ShowModal
:
显示对话框
frm := TFrogPropertiesFrm.Create(Self);
try
if frm.ShowModal = mrOk then
UpdateFrogProperties;
finally
frm.Free;
end;
请注意,Enter 会自动“点击”OK 按钮,Escape 会自动“点击”点击”然后 取消 按钮。另请注意,OK 按钮的默认状态由粗边框表示。
相反,如果您有一个只有一个按钮的对话框,通常标题为 关闭 并且应该同时具有 Default
和 Cancel
设置为 True
。例如,它的模态结果可以是mrClose
。
这就是说,如果您的表单确实没有任何合适的按钮而您有
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_RETURN:
ModalResult := mrOk;
VK_ESCAPE:
ModalResult := mrCancel;
end;
end;
您可以通过
使嘟嘟声静音
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = Chr(VK_RETURN) then
Key := #0;
end;
我有一个包含 1 个编辑框的 PopUpform。我从主窗体调用 ShowModal 并在 PopUpform.keyDown 事件中使用 Enter 和 Escape 来关闭 PopUp 并在它 returns 到主窗体时设置适当的模态结果。
当编辑框获得焦点时打开和关闭窗体会发出蜂鸣声。如果编辑框没有焦点,表单会自动关闭。如何防止编辑框有焦点时发出蜂鸣声?
通常,对话框包含一个 OK 和一个 Cancel 按钮,Enter键“单击”OK 按钮,Escape 键“单击”Cancel 按钮。
要管理对话框,请将 确定 按钮的 Default
属性 设置为 True
并将 取消 按钮的 Cancel
属性 到 True
。此外,这些按钮还应具有适当的 ModalResult
值:
btnOK
标题 =“确定”
默认 = 真
ModalResult = mrOkbtn取消
标题=“取消”
取消 = 真
ModalResult = mrCancel
然后使用 ShowModal
:
frm := TFrogPropertiesFrm.Create(Self);
try
if frm.ShowModal = mrOk then
UpdateFrogProperties;
finally
frm.Free;
end;
请注意,Enter 会自动“点击”OK 按钮,Escape 会自动“点击”点击”然后 取消 按钮。另请注意,OK 按钮的默认状态由粗边框表示。
相反,如果您有一个只有一个按钮的对话框,通常标题为 关闭 并且应该同时具有 Default
和 Cancel
设置为 True
。例如,它的模态结果可以是mrClose
。
这就是说,如果您的表单确实没有任何合适的按钮而您有
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
case Key of
VK_RETURN:
ModalResult := mrOk;
VK_ESCAPE:
ModalResult := mrCancel;
end;
end;
您可以通过
使嘟嘟声静音procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = Chr(VK_RETURN) then
Key := #0;
end;