阻止按钮在Inno Setup中获得焦点

拒绝服务

在我的脚本中,单击音频按钮时,它会收到焦点(蓝色粗边框

我的输出


我希望是这样,即使您单击音频按钮,焦点按钮仍然是“下一步/安装”

我想要的是

马丁·普里克里(Martin Prikryl)

由于OnEnterInno Setup API中缺少事件,因此难以实现

首先,您要设置TabStop按钮的属性,False以防止按钮通过按键获得焦点Tab

Button.TabStop := False;

在您的情况下,就是SoundCtrlButton)。

如果您对焦点感到满意,请始终返回到“下一步”按钮,当单击鼠标时,这很容易。只需将焦点明确设置为按钮处理程序末尾“下一步”按钮即可OnClick

procedure ButtonClick(Sender: TObject);
begin
  { Some actual code }

  { If the button is focused (it won't be, when access key was used to "click" it) ... }
  if TButton(Sender).Focused then
    { ... focus the "Next" button }
    WizardForm.ActiveControl := WizardForm.NextButton;
end;

(在您的情况下,OnClick处理程序为SoundCtrlButtonClick)。


但是,如果您想很好地实现此目的,则可以通过将焦点返回到之前实际具有焦点的控件来,这会更加困难。

我没有想到比安排一个频繁的计时器来监视集中控制更好的解决方案了。

[Code]

function SetTimer(hWnd: LongWord; nIDEvent, uElapse: LongWord; 
  lpTimerFunc: LongWord): LongWord; external '[email protected] stdcall';

var
  LastFocusedControl: TWinControl;

procedure FocusMonitorProc(
  H: LongWord; Msg: LongWord; IdEvent: LongWord; Time: LongWord);
begin
  { Remember focused control, unless the currently focused control is already the one, }
  { we do not want to get focused }
  if (WizardForm.ActiveControl = nil) or
     WizardForm.ActiveControl.TabStop then
  begin
    LastFocusedControl := WizardForm.ActiveControl;
  end;
end;

procedure ButtonClick(Sender: TObject);
begin
  { Some actual code }

  { If the button is focused (it won't be, when access key was used to "click" it) ... }
  if TButton(Sender).Focused and (LastFocusedControl <> nil) then
    { ... focus the previously focused control }
    WizardForm.ActiveControl := LastFocusedControl;
end;

procedure InitializeWizard();
begin
  { Set up 50ms timer to monitor the focus }
  SetTimer(0, 0, 50, CreateCallback(@FocusMonitorProc));  

  { Create the "unfocusable" button }
  SomeButton := TNewButton.Create(WizardForm);
  { Initialize button }
  SomeButton.TabStop := False;  
end;

对于CreateCallback功能,您需要Inno Setup6如果您坚持使用Inno Setup 5,则可以使用InnoTools InnoCallback库中的WrapCallback功能


另一种解决方案是使用类似按钮的图片(TBitmapImage控件),而不是实际的图片TButtonTBitmapImage控制(并非TWinControl)在所有不能接收焦点。

实际上,它可以使您获得漂亮的“静音”图像,而不是普通的“静音”标题。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

当包含的控件获得焦点时阻止自动滚动

来自分类Dev

wpFinished页面上的Inno Setup替换按钮

来自分类Dev

获取单选按钮值[INNO SETUP]

来自分类Dev

在Inno Setup中,是否可以创建一个在单选按钮内包含输入文件小工具的页面?

来自分类Dev

inno setup中的“ Not in a loop”错误

来自分类Dev

在Inno Setup中取消安装

来自分类Dev

Inno Setup相对于现有按钮定位自定义按钮

来自分类Dev

如何在Inno Setup的“浏览文件夹”对话框中禁用“确定”按钮

来自分类Dev

Inno Setup中的TTreeView

来自分类Dev

具有焦点的WebView控件可阻止Android 5中的媒体按钮事件

来自分类Dev

在Inno Setup中按字体大小缩放单选按钮列表

来自分类Dev

Inno Setup中的条件DisableProgramGroupPage

来自分类Dev

如何在Inno Setup中创建图像按钮?

来自分类Dev

如果在Inno Setup中未选择任何组件,如何禁用“下一步”按钮?

来自分类Dev

在视图MVC中禁用或阻止编辑按钮

来自分类Dev

ZStack中的手势阻止按钮

来自分类Dev

在React中阻止默认按钮动作

来自分类Dev

为什么在Inno Setup中未选中自定义页面上的单选按钮?

来自分类Dev

Inno Setup-将自定义按钮与取消按钮对齐

来自分类Dev

阻止自动继续安装到“完成”页面,并允许返回“安装”页面以查看Inno Setup中的结果

来自分类Dev

在Inno Setup中记录TWindowsVersion

来自分类Dev

Inno Setup-如何根据单选按钮跳过文件

来自分类Dev

Inno Setup:如何使用单选按钮和表单创建页面

来自分类Dev

确保按钮在ScrollViewer中获得焦点

来自分类Dev

使div无法获得焦点(例如工具栏按钮)

来自分类Dev

在视图MVC中禁用或阻止编辑按钮

来自分类Dev

Inno Setup 在输入无效时禁用 Next 按钮

来自分类Dev

Inno Setup 中的动态密码

来自分类Dev

Inno Setup 安装中的按钮被裁剪,自定义消息显示为乱码(日语)

Related 相关文章

  1. 1

    当包含的控件获得焦点时阻止自动滚动

  2. 2

    wpFinished页面上的Inno Setup替换按钮

  3. 3

    获取单选按钮值[INNO SETUP]

  4. 4

    在Inno Setup中,是否可以创建一个在单选按钮内包含输入文件小工具的页面?

  5. 5

    inno setup中的“ Not in a loop”错误

  6. 6

    在Inno Setup中取消安装

  7. 7

    Inno Setup相对于现有按钮定位自定义按钮

  8. 8

    如何在Inno Setup的“浏览文件夹”对话框中禁用“确定”按钮

  9. 9

    Inno Setup中的TTreeView

  10. 10

    具有焦点的WebView控件可阻止Android 5中的媒体按钮事件

  11. 11

    在Inno Setup中按字体大小缩放单选按钮列表

  12. 12

    Inno Setup中的条件DisableProgramGroupPage

  13. 13

    如何在Inno Setup中创建图像按钮?

  14. 14

    如果在Inno Setup中未选择任何组件,如何禁用“下一步”按钮?

  15. 15

    在视图MVC中禁用或阻止编辑按钮

  16. 16

    ZStack中的手势阻止按钮

  17. 17

    在React中阻止默认按钮动作

  18. 18

    为什么在Inno Setup中未选中自定义页面上的单选按钮?

  19. 19

    Inno Setup-将自定义按钮与取消按钮对齐

  20. 20

    阻止自动继续安装到“完成”页面,并允许返回“安装”页面以查看Inno Setup中的结果

  21. 21

    在Inno Setup中记录TWindowsVersion

  22. 22

    Inno Setup-如何根据单选按钮跳过文件

  23. 23

    Inno Setup:如何使用单选按钮和表单创建页面

  24. 24

    确保按钮在ScrollViewer中获得焦点

  25. 25

    使div无法获得焦点(例如工具栏按钮)

  26. 26

    在视图MVC中禁用或阻止编辑按钮

  27. 27

    Inno Setup 在输入无效时禁用 Next 按钮

  28. 28

    Inno Setup 中的动态密码

  29. 29

    Inno Setup 安装中的按钮被裁剪,自定义消息显示为乱码(日语)

热门标签

归档