Delphi TEdit で Alt+Enter 押下時の音を消す
Delphi の Edit(TEdit) で Alt+Enter 押下時の音(Beep音)を消す
procedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key = VK_RETURN) and ( (Shift = [ssShift]) or (Shift = [ssCtrl]) ) then begin
Key := 0;
Shift := [];
end;
end;
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if (Key = #13) or (Key = #10) then begin
Key := #0;
end;
end;
Alt+Enter は押下を補足するものの書き換えは無視されてしまうprocedure TForm1.Edit1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
begin
if (Key = VK_RETURN) and (Shift = [ssAlt]) then begin
Key := 0;
Shift := [];
end;
end;
今回は TApplicationEvents を利用して、Alt+Enter を補足 + 無効化※対象は TEdit(Edit1)
procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG; var Handled: Boolean);
begin
if (Msg.message = WM_SYSKEYDOWN) then begin
if (Msg.wParam = VK_RETURN) and (GetKeyState(VK_MENU) < 0) then begin
if (Msg.hwnd = Edit1.Handle) then begin
// Alt+Enter で行いたい処理
Handled := True;
end;
end;
end;
end;
参考文献
コメント