具有快捷键BkSp的全局TAction

时间:2018-10-10 11:41:54

标签: pascal lazarus multiplatform

我的TAction的ShortCut键设置为BkSp(退格键)。我正在尝试像在Web浏览器中那样实现“后退”按钮,因此我需要在除Edit控件(TMemo,TEdit等)之外的任何控件中调用TAction。

所有操作均按预期方式进行,但是Backspace键不会发送到Edit控件(因此用户无法删除char)。

OnExecute外观如下:

if (Screen.ActiveControl is TCustomMemo) or (Screen.ActiveControl is TCustomEdit) then exit;
DoBack;  

对BkSp密钥有任何想法要用TAction来编辑控件(适用于所有平台Win,Mac,Linux)?

1 个答案:

答案 0 :(得分:1)

基于Andreas Rejbrand的评论,并且与Delphi中的评论相同,解决方案很简单。

在OnUpdate上执行操作:

procedure TForm1.aBackUpdate(Sender: TObject); 
begin 
   aBack.Enabled := not (Screen.ActiveControl is TCustomEdit); 
end;

然后执行OnExecute:

procedure TForm1.aBackExecute(Sender: TObject); 
begin 
   DoBack;
end;