Inno Setup禁用同一页面上的两个按钮

马西奥

禁用同一页面上的两个按钮,我尝试了几种方法,但没有更仔细地显示此示例不正确[按钮下一个=有时间] [按钮后=没有时间(仅禁用)]帮助查找错误界限

 [Code]
 var
 Counter: Integer;
 TimerID: Integer;

 type
 TTimerProc = procedure(Wnd: HWND; Msg: UINT; TimerID: UINT_PTR;
 SysTime: DWORD);

 function WrapTimerProc(Callback: TTimerProc; ParamCount: Integer): LongWord;
 external 'wrapcallback@files:InnoCallback.dll stdcall';
 function SetTimer(hWnd: HWND; nIDEvent, uElapse: UINT;
 lpTimerFunc: UINT): UINT; external '[email protected] stdcall';
 function KillTimer(hWnd: HWND; uIDEvent: UINT): BOOL;
 external '[email protected] stdcall';

 procedure OnTimerTick(Wnd: HWND; Msg: UINT; TimerID: UINT_PTR;
 SysTime: DWORD);
 begin
 Counter := Counter - 1;

 begin
 Counter := Counter - 1;
 if Counter <= 0 then
 begin
 WizardForm.NextButton.Enabled := True;
 WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall); 
 if TimerID <> 0 then
  KillTimer(0, TimerID);
 end
 else
 WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall) +    
   IntToStr(Counter);
 end;
 //  begin
 WizardForm.BackButton.Enabled := True;
 if TimerID <> 0 then
 begin
 if KillTimer(0, TimerID) then
   TimerID := 0;
 end;
end;

procedure DisableNextButton(Timeout: Integer);
var
TimerCallback: LongWord;
begin
Counter := Timeout;
WizardForm.NextButton.Enabled := False;
WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall) + IntToStr(Counter);  
TimerCallback := WrapTimerProc(@OnTimerTick, 4);
TimerID := SetTimer(0, 0, 1000, TimerCallback);
end;

procedure DisableBackButton(Timeout: UINT); 
var
TimerCallback: LongWord;
begin
WizardForm.BackButton.Enabled := False;  
TimerCallback := WrapTimerProc(@OnTimerTick, 4);
TimerID := SetTimer(0, 0, Timeout, TimerCallback);
end;

procedure CurPageChanged5(CurPageID: Integer);
begin
  if CurPageID = wpSelectTasks then
  DisableNextButton(10);
end;

procedure CurPageChanged6(CurPageID: Integer);
begin
  if CurPageID = wpSelectTasks then
  DisableBackButton(5000);
end;
TLama

要禁用下一个按钮和后退按钮这两个按钮指定的时间,而只有下一个按钮具有倒数计时器标题,您可以根据以下方式使用以下修改的脚本this post

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Files]
Source: "InnoCallback.dll"; DestDir: "{tmp}"; Flags: dontcopy

[Code]
var
  Counter: Integer;
  TimerID: Integer;

type
  TTimerProc = procedure(Wnd: HWND; Msg: UINT; TimerID: UINT_PTR; 
    SysTime: DWORD);

function WrapTimerProc(Callback: TTimerProc; ParamCount: Integer): LongWord;
  external 'wrapcallback@files:InnoCallback.dll stdcall';    
function SetTimer(hWnd: HWND; nIDEvent, uElapse: UINT;
  lpTimerFunc: UINT): UINT; external '[email protected] stdcall';
function KillTimer(hWnd: HWND; uIDEvent: UINT): BOOL; 
  external '[email protected] stdcall'; 

procedure OnTimerTick(Wnd: HWND; Msg: UINT; TimerID: UINT_PTR; 
  SysTime: DWORD);
begin
  Counter := Counter - 1;

  if Counter <= 0 then
  begin
    WizardForm.BackButton.Enabled := True;
    WizardForm.NextButton.Enabled := True;
    WizardForm.NextButton.Caption := SetupMessage(msgButtonNext);
    if TimerID <> 0 then 
      KillTimer(0, TimerID);
  end
  else
    WizardForm.NextButton.Caption := SetupMessage(msgButtonNext) + 
      IntToStr(Counter);
end;

procedure DisableNavigateButtons(Timeout: Integer);
var
  TimerCallback: LongWord;
begin
  Counter := Timeout;
  WizardForm.BackButton.Enabled := False;
  WizardForm.NextButton.Enabled := False;
  WizardForm.NextButton.Caption := SetupMessage(msgButtonNext) + 
    IntToStr(Counter);
  TimerCallback := WrapTimerProc(@OnTimerTick, 4);
  TimerID := SetTimer(0, 0, 1000, TimerCallback);
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  if CurPageID = wpSelectDir then
    DisableNavigateButtons(5);
end;

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

wpFinished页面上的Inno Setup替换按钮

来自分类Dev

Apex-同一页面上的两个按钮,分支到不同的位置

来自分类Dev

同一页面上的两个不同的Yammer共享按钮

来自分类Dev

Inno Setup-将密码页面移到欢迎页面(第一页)之前

来自分类Dev

我可以在Inno Setup的同一“ CreateInputOptionPage”页面上使用复选框和单选按钮吗?

来自分类Dev

Inno Setup删除/隐藏(而不只是禁用)向导页面上的“后退”按钮

来自分类Dev

如何在Inno Setup中将自定义页面上的单选控件分成两个不同的组?

来自分类Dev

Inno Setup:添加按钮操作以跳至下一页

来自分类Dev

单击Struts 2中同一页面上的两个按钮时,行为不同

来自分类Dev

Inno Setup在wpPreparing页面上放置控件

来自分类Dev

如何为同一页面上的两个表单定义唯一的validateForm?

来自分类Dev

Inno Setup禁用安装向导页面

来自分类Dev

Inno Setup:禁用完成页面

来自分类Dev

Inno Setup禁用安装向导页面

来自分类Dev

如何在同一页面上呈现两个菜单?

来自分类Dev

是否可以在同一页面上运行两个不同版本的ReactJS?

来自分类Dev

动态填充同一页面上其他两个选择的选择

来自分类Dev

同一页面上的两个Angular2组件

来自分类Dev

React Router问题:React在同一页面上渲染两个组件

来自分类Dev

使用react-hook-form在同一页面上添加两个表单

来自分类Dev

在ChakraUI中使用useDisclosure()无法在同一页面上使用两个模式

来自分类Dev

提交在同一页面上呈现的两个不相关的表单

来自分类Dev

我希望同一页面上的两个Flexslider以不同的速度运行

来自分类Dev

验证同一页面上的两个表单

来自分类Dev

动态填充同一页面上其他两个选择的选择

来自分类Dev

Angular两个应用程序在同一页面上

来自分类Dev

如何在同一页面上放置两个幻灯片框?

来自分类Dev

Python请求-在同一页面上发送两个请求?

来自分类Dev

同一页面上的两个圆环图

Related 相关文章

  1. 1

    wpFinished页面上的Inno Setup替换按钮

  2. 2

    Apex-同一页面上的两个按钮,分支到不同的位置

  3. 3

    同一页面上的两个不同的Yammer共享按钮

  4. 4

    Inno Setup-将密码页面移到欢迎页面(第一页)之前

  5. 5

    我可以在Inno Setup的同一“ CreateInputOptionPage”页面上使用复选框和单选按钮吗?

  6. 6

    Inno Setup删除/隐藏(而不只是禁用)向导页面上的“后退”按钮

  7. 7

    如何在Inno Setup中将自定义页面上的单选控件分成两个不同的组?

  8. 8

    Inno Setup:添加按钮操作以跳至下一页

  9. 9

    单击Struts 2中同一页面上的两个按钮时,行为不同

  10. 10

    Inno Setup在wpPreparing页面上放置控件

  11. 11

    如何为同一页面上的两个表单定义唯一的validateForm?

  12. 12

    Inno Setup禁用安装向导页面

  13. 13

    Inno Setup:禁用完成页面

  14. 14

    Inno Setup禁用安装向导页面

  15. 15

    如何在同一页面上呈现两个菜单?

  16. 16

    是否可以在同一页面上运行两个不同版本的ReactJS?

  17. 17

    动态填充同一页面上其他两个选择的选择

  18. 18

    同一页面上的两个Angular2组件

  19. 19

    React Router问题:React在同一页面上渲染两个组件

  20. 20

    使用react-hook-form在同一页面上添加两个表单

  21. 21

    在ChakraUI中使用useDisclosure()无法在同一页面上使用两个模式

  22. 22

    提交在同一页面上呈现的两个不相关的表单

  23. 23

    我希望同一页面上的两个Flexslider以不同的速度运行

  24. 24

    验证同一页面上的两个表单

  25. 25

    动态填充同一页面上其他两个选择的选择

  26. 26

    Angular两个应用程序在同一页面上

  27. 27

    如何在同一页面上放置两个幻灯片框?

  28. 28

    Python请求-在同一页面上发送两个请求?

  29. 29

    同一页面上的两个圆环图

热门标签

归档