如何将数字键盘点键转换为小数分隔符?

bq3bfh9z  于 2022-09-21  发布在  其他
关注(0)|答案(1)|浏览(130)

在某些应用程序中,如Microsoft Excel,数字键盘上的点键(VK_DECIMAL)会自动转换为当前的DecimalSeparator

我正在尝试实现相同的功能,但我没有找到一种方法使其在整个应用程序中工作。

cetgtptt

cetgtptt1#

在窗体级别,可以使用窗体的KeyPreview属性和OnKeyPress事件处理程序来完成此操作,例如:

function IsKeyPressed(const AKey : Word) : Boolean;
begin
  Result := GetKeyState(AKey) < 0;
end;

procedure TMyBaseForm.FormCreate(Sender: TObject);
begin
  inherited;
  KeyPreview := True;
end;

procedure TMyBaseForm.FormKeyPress(Sender: TObject; var Key: Char);
begin
  inherited;
  if(IsKeyPressed(VK_DECIMAL))
  then Key := FormatSettings.DecimalSeparator;
end;

但此解决方案要求所有应用程序的窗体都有一个通用的基窗体类,并且不适用于不是从该基类继承的任何窗体/对话框(即:它也不适用于简单的InputQuery)

相关问题