【问题标题】:TasksList - how to move TasksList to other WizardForm Page and keep it's content?TasksList - 如何将 TasksList 移动到其他 WizardForm 页面并保留其内容?
【发布时间】:2013-03-01 12:34:05
【问题描述】:

当我尝试更改TasksList 的Parent 时,结果是一个空列表。

WizardForm.TasksList.Parent := WizardForm.DirEdit.Parent;
WizardForm.TasksList.Top := WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + ScaleY(8);
WizardForm.TasksList.Left := WizardForm.DirEdit.Left;
WizardForm.TasksList.Height := ScaleY(100);

【问题讨论】:

  • 我知道我可以创建自定义复选框并替换 TasksList。但我很好奇我是否可以简单地将 TasksList 移动到不同的 WizardPage。
  • 虽然您可以物理更改其容器控件,但您不能将该控件的任何处理移至其他页面。您最好的选择是自定义现有页面,或者从头开始创建一个然后更新真实页面。
  • 会和Components一样吗?
  • 如果您要将任何内置控件移动或替换到不同的页面,请注意您必须注意每次页面更改时执行的检查。因此,如果要替换控件,则必须以各种可能的方式模拟控件的行为,并且如果要移动控件,请注意它必须放置在同一页面上或原始控件页面之前的页面上(由于到那些检查)。
  • 我有一个可行的解决方案。但它是关于如何加入两个页面的。我在没有任何自定义控件的情况下加入了带有 StartMenuPage 的 TasksForm。 [Tasks] 和 [Icons] 都像以前一样工作。但我面临的问题与 RebeN 相同,它还涉及移动控件,因此在这里也应该有所帮助。我应该将其作为答案发布在这里还是创建一个新问题并回答它?我想分享它,我想它可能对很多人有用。 @TLama 什么是模拟控件的行为?我将控件向前移动,似乎没问题。我应该期待隐藏的问题吗? link

标签: inno-setup wizard custom-pages


【解决方案1】:

另一种解决方案是为任务创建自己的复选框:

[Icons]
Name: "{group}\{#MyAppName1}"; Filename: "{app}\{#MyAppName1}\{#MyAppExeName}"; WorkingDir: "{app}\{#MyAppName1}"; Check: menuicons; Components: G3EE;
Name: "{group}\{#MyAppName2}"; Filename: "{app}\{#MyAppName2}\{#MyAppExeName2}"; WorkingDir: "{app}\{#MyAppName2}"; Check: menuicons; Components: G3ZBEE;
Name: "{commondesktop}\{#MyAppName2}"; Filename: "{app}\{#MyAppName2}\{#MyAppExeName2}"; WorkingDir: "{app}\{#MyAppName2}"; Check: desktopicon; Components: G3ZBEE;
Name: "{userappdata}\Microsoft\Internet Explorer\Quick Launch\{#MyAppName2}"; Filename: "{app}\{#MyAppName2}\{#MyAppExeName2}"; WorkingDir: "{app}\{#MyAppName2}"; Check: quicklaunchicon; Components: G3ZBEE;

[Code]
Var
DesktopIconCheckBox: TCheckBox;
StartMenuCheckBox: TCheckBox;
QuickStartCheckBox: TCheckBox;

function desktopicon(): Boolean;
begin
    Result := DesktopIconCheckBox.Checked;
end;

function menuicons(): Boolean;
begin
    Result := StartMenuCheckBox.Checked;
end;

function quicklaunchicon(): Boolean;
begin
  if GetWindowsVersion < $06000000 then  begin
      Result := QuickStartCheckBox.Checked;
  end;
end;

procedure InitializeWizard();
var
  ItemsGap: Integer;
 begin
    ItemsGap := WizardForm.DirBrowseButton.Left - (WizardForm.DirEdit.Left + WizardForm.DirEdit.Width);
    DesktopIconCheckBox := TCheckBox.Create(WizardForm.DirEdit.Owner);
    DesktopIconCheckBox.Visible := true;
    DesktopIconCheckBox.Checked := true;
    StartMenuCheckBox := TCheckBox.Create(WizardForm.DirEdit.Owner);
    StartMenuCheckBox.Visible := true;
    StartMenuCheckBox.Checked := true;
  if GetWindowsVersion < $06000000 then  begin
      QuickStartCheckBox := TCheckBox.Create(WizardForm.DirEdit.Owner);
    QuickStartCheckBox.Visible := true;
      QuickStartCheckBox.Checked := false;  
end;
    if true then
    begin
    DesktopIconCheckBox.Top := WizardForm.DirEdit.Top + WizardForm.DirEdit.Height + ItemsGap / 2;
    DesktopIconCheckBox.Width := WizardForm.DirEdit.Width;
        DesktopIconCheckBox.Caption := ExpandConstant('{cm:CreateDesktopIcon}');
        DesktopIconCheckBox.Parent := WizardForm.DirEdit.Parent;
        StartMenuCheckBox.Top := DesktopIconCheckBox.Top + DesktopIconCheckBox.Height + ItemsGap / 2;
    StartMenuCheckBox.Width := WizardForm.DirEdit.Width;
        StartMenuCheckBox.Caption := ExpandConstant('{cm:MenuStartIcons}');
        StartMenuCheckBox.Parent := WizardForm.DirEdit.Parent;
      if GetWindowsVersion < $06000000 then  begin
            QuickStartCheckBox.Top := StartMenuCheckBox.Top + StartMenuCheckBox.Height + ItemsGap / 2;
        QuickStartCheckBox.Width := WizardForm.DirEdit.Width;
            QuickStartCheckBox.Caption := ExpandConstant('{cm:CreateQuickLaunchIcon}');//SetupMessage(msgNoProgramGroupCheck2);
            QuickStartCheckBox.Parent := WizardForm.DirEdit.Parent;  
      end;
    end;
end;

【讨论】:

    猜你喜欢
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-26
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    相关资源
    最近更新 更多