论坛风格切换切换到宽版
  • 4218阅读
  • 2回复

“取消”按钮Visible:= false为什么会让窗口关闭失效 [复制链接]

上一主题 下一主题
离线liznzn
 

发帖
4
金钱
40
威望
4
只看楼主 倒序阅读 0 发表于: 2015-04-27
使用WizardForm.CancelButton.Visible:= false让某些向导页的“取消”按钮不可见,但是窗口上的X关闭按钮也失效了,请教各位大神这是怎么回事呢?
怎样才能让“取消”按钮不可见,但是窗口上的关闭按钮仍然起作用?

代码

#define MyAppName "test"
#define MyAppVersion "1.5"
#define MyAppPublisher "我的公司"
#define MyAppURL "http://www.example.com/"
#define MyAppExeName "MyProg.exe"

[Setup]
; 注意: AppId 的值是唯一识别这个程序的标志。
; 不要在其他程序中使用相同的 AppId 值。
; (在编译器中点击菜单“工具 -> 产生 GUID”可以产生一个新的 GUID)
AppId={{E3AA4F91-0B15-4164-980C-ED02B88B81AE}
AppName={#MyAppName}
AppVersion={#MyAppVersion}
;AppVerName={#MyAppName} {#MyAppVersion}
AppPublisher={#MyAppPublisher}
AppPublisherURL={#MyAppURL}
AppSupportURL={#MyAppURL}
AppUpdatesURL={#MyAppURL}
DefaultDirName={pf}\我的程序
DefaultGroupName=我的程序
DisableProgramGroupPage=yes
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "D:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
; 注意: 不要在任何共享的系统文件使用 "Flags: ignoreversion"

[Icons]
Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"
Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon

[Run]
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent

[Code]
procedure CurPageChanged(CurPageID: Integer);
begin
  Case CurPageID of
    wpWelcome :
      begin
        WizardForm.NextButton.Caption:= '继 续';
        WizardForm.CancelButton.Visible:= false;
      end;
    wpSelectDir:   // 选择目录页面
      begin
        WizardForm.BackButton.Visible:= false;
        WizardForm.NextButton.Caption:= '安 装';
        WizardForm.CancelButton.Visible:= false;
      end;
  end;
end;
离线gnatix

发帖
7696
金钱
-8279
威望
-828
只看该作者 1 发表于: 2015-04-28
窗口的 X 按钮和取消按钮是同步,所以你屏蔽取消按钮等于屏蔽 X 按钮。
如果你不想要屏蔽窗口的 X 按钮,但是又不想看到取消按钮,那么你只要把取消按钮放置在可显示的窗口范围之外就行了。供参考:

[Code]
var stdCancelButtonTop: Integer;

procedure CurPageChanged(CurPageID: Integer);
begin
  Case CurPageID of
    wpWelcome :    // 欢迎页面隐藏取消按钮
      begin
        WizardForm.NextButton.Caption:= '继 续';
        WizardForm.CancelButton.Top:= 400;
      end;
    wpSelectDir:   // 选择目录页面隐藏取消按钮
      begin
        WizardForm.BackButton.Visible:= false;
        WizardForm.NextButton.Caption:= '安 装';
        WizardForm.CancelButton.Top:= 400;
      end;
    else   // 其它页面显示取消按钮
      WizardForm.CancelButton.Top:= stdCancelButtonTop;
  end;
end;

procedure InitializeWizard ();
begin
  stdCancelButtonTop:= WizardForm.CancelButton.Top;
end;
离线liznzn

发帖
4
金钱
40
威望
4
只看该作者 2 发表于: 2015-04-28
回 1楼(gnatix) 的帖子
gnatix:窗口的 X 按钮和取消按钮是同步,所以你屏蔽取消按钮等于屏蔽 X 按钮。如果你不想要屏蔽窗口的 X 按钮,但是又不想看到取消按钮,那么你只要把取消按钮放置在可显示的窗口范围之外就行了。 .. (2015-04-28 03:05) 

谢谢虎版哈