在某些应用程序中,如Microsoft Excel,数字键盘上的点键(VK_DECIMAL)会自动转换为当前的DecimalSeparator。
VK_DECIMAL
DecimalSeparator
我正在尝试实现相同的功能,但我没有找到一种方法使其在整个应用程序中工作。
cetgtptt1#
在窗体级别,可以使用窗体的KeyPreview属性和OnKeyPress事件处理程序来完成此操作,例如:
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)
InputQuery
1条答案
按热度按时间cetgtptt1#
在窗体级别,可以使用窗体的
KeyPreview
属性和OnKeyPress
事件处理程序来完成此操作,例如:但此解决方案要求所有应用程序的窗体都有一个通用的基窗体类,并且不适用于不是从该基类继承的任何窗体/对话框(即:它也不适用于简单的
InputQuery
)