简体   繁体   English

“只读”或“禁用灰色任务”复选框?

[英]ReadOnly or Disabled-Grayed Task checkbox?

I would like to disable and set to gray color, or set to readonly, some task checkboxes, the checkboxes that are checked in this image: 我想禁用并设置为灰色,或设置为只读,一些任务复选框,此图像中选中的复选框:

在此处输入图片说明

I'm not looking for other kind of approach, I want to make visible those Tasks but make their checkboxes uncheckeable, that's all, this way the user can see what is going to be installed and what is restricted by default. 我不是在寻找其他方法,我想使那些任务可见,但使它们的复选框不可检查,就是这样,用户可以看到要安装的内容和默认情况下受限制的内容。

My Install script looks like this: 我的安装脚本如下所示:

[Tasks]

; VS Optional Features
Name: blend; Description: Blend; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: foundationclass; Description: Microsoft Foundation Classes for C++; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: lightswitch; Description: Microsoft LightSwitch; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: officedevelopertools; Description: Microsoft Office Developer Tools; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: sqldatatools; Description: Microsoft SQL Server Data Tools; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: webdevelopertools; Description: Microsoft Web Developer Tools; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: silverlightsdk; Description: SilverLight Developer Kit; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: Win8SDK; Description: Tools For Maintaining Store Apps For Windows 8; GroupDescription: VS Optional Features:; Flags: Unchecked
Name: WindowsPhone80; Description: Windows Phone 8.0 SDK; GroupDescription: VS Optional Features:; Flags: Unchecked

; VS Hidden Features
Name: netfx4; Description: .NET FX 4; GroupDescription: VS Hidden Features:
Name: netfx45; Description: .NET FX 4.5; GroupDescription: VS Hidden Features:
Name: bliss; Description: Bliss; GroupDescription: VS Hidden Features:
Name: helpviewer; Description: Microsoft Help Viewer 2.1; GroupDescription: VS Hidden Features:
Name: portablelibrary; Description: Microsoft Portable Library Multi-Targeting Pack; GroupDescription: VS Hidden Features:
Name: report; Description: Microsoft Report Viewer Add-On for Visual Studio 2013; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: silverlight; Description: Microsoft Silverlight 5 SDK; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sqldac; Description: Microsoft SQL DAC; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sqldom; Description: Microsoft SQL DOM; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sqllocaldb; Description: Microsoft SQL Server 2013 Express LocalDB; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sqlmanagementobjects; Description: Microsoft SQL Server 2013 Management Objects; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sqlclr; Description: Microsoft SQL Server 2013 System CLR Types; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sqltran; Description: Microsoft SQL Server 2013 Transact-SQL; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sqlce; Description: Microsoft SQL Server Compact Edition; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: c_compilers; Description: Microsoft Visual C++ 2013 Compilers; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: c_core; Description: Microsoft Visual C++ 2013 Core Libraries; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: c_debug; Description: Microsoft Visual C++ 2013 Debug Runtime; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: c_designtime; Description: Microsoft Visual C++ 2013 Designtime; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: c_extendedlibraries; Description: Microsoft Visual C++ 2013 Extended Libraries; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: intellitrace; Description: Microsoft Visual Studio 2013 IntelliTrace; GroupDescription: VS Hidden Features:
Name: storyboarding; Description: Microsoft Visual Studio Team Foundation Server 2013 Storyboarding; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: sdk3; Description: SDK Tools 3; GroupDescription: VS Hidden Features:
Name: sdk4; Description: SDK Tools 4; GroupDescription: VS Hidden Features:
Name: analytics; Description: Visual Studio Analytics; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: dotfuscator; Description: Visual Studio Dotfuscator; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: javascript; Description: Visual Studio Extensions for Windows Library for JavaScript; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: profiler; Description: Visual Studio Profiler; GroupDescription: VS Hidden Features:; Flags: Unchecked
Name: winsdk; Description: Windows Software Development Kit; GroupDescription: VS Hidden Features:; Flags: Unchecked

Is this possibly to accomplish? 这可能完成吗?

I didn't found any Task flag that helps me to do this, in the other hand, I've seen other questions in StackOverflow but are related to readonly checkboxes and it uses pascal-script code, I'm not a pascal script code and I'm not sure whether that is what I need to do because I'm not creating and instancing manually the checkboxes in the Form, I mean that I don't have any control on those checkboxes+labels, I'm just adding tasks in the Task section. 另一方面,我没有找到任何有助于执行此操作的Task标志,但我在StackOverflow中看到了其他问题,但与只读复选框有关,并且它使用了Pascal脚本代码,我不是Pascal脚本代码而且我不确定这是否是我需要做的,因为我没有手动创建和实例化表单中的复选框,我的意思是我对这些复选框和标签没有任何控制权,我只是在添加任务部分中的Task

UPDATE UPDATE

I'm using the pascal-script code below to disable the desired items, but when I run my installer I get this error, it says that the index is out of bounds, why?, I'm using the proper chekbox indexes and I've verified the indexes seeying the resulting task page... I think that the problem is the wpSelectTasks, it is an integrated constant?, anyways I've tried to specify a constant with the pagenumber of the tasks page and I still get the same error, and the error occurs when I change the selected page using the 'Next' button (not 'Back'): 我正在使用下面的pascal脚本代码禁用所需的项目,但是在运行安装程序时出现此错误,它表示索引超出范围,为什么?,我使用的是适当的chekbox索引, '已经验证了索引,并看到了生成的任务页面...我认为问题出在wpSelectTasks,它是一个集成常量吗?无论如何,我试图用任务页面的页码指定一个常量,但我仍然得到相同的错误,并且当我使用“下一步”按钮(而不是“返回”)更改所选页面时发生错误:

在此处输入图片说明

// Disable Tasks

procedure CurPageChanged(CurPageID: Integer);
begin

  // if we have entered the tasks selection page, disable the specified Tasks.
  if CurPageID = wpSelectTasks then
    WizardForm.TasksList.ItemEnabled[11] := False;
    WizardForm.TasksList.ItemEnabled[12] := False;
    WizardForm.TasksList.ItemEnabled[13] := False;
    WizardForm.TasksList.ItemEnabled[14] := False;
    WizardForm.TasksList.ItemEnabled[15] := False;
    WizardForm.TasksList.ItemEnabled[30] := False;
    WizardForm.TasksList.ItemEnabled[32] := False;
    WizardForm.TasksList.ItemEnabled[33] := False;

end;

// Disable Tasks - END

I have more code for UI customizations and I don't know if some thing is in conflict with the other procedure, the entire [Code] section is this: 我有更多用于UI自定义的代码,而且我不知道某些事情是否与其他过程冲突,整个[Code]部分如下:

[Code]





// Disable Tasks

procedure CurPageChanged(CurPageID: Integer);
begin

  // if we have entered the tasks selection page, disable the specified Tasks.
  if CurPageID = wpSelectTasks then
    WizardForm.TasksList.ItemEnabled[11] := False;
    WizardForm.TasksList.ItemEnabled[12] := False;
    WizardForm.TasksList.ItemEnabled[13] := False;
    WizardForm.TasksList.ItemEnabled[14] := False;
    WizardForm.TasksList.ItemEnabled[15] := False;
    WizardForm.TasksList.ItemEnabled[30] := False;
    WizardForm.TasksList.ItemEnabled[32] := False;
    WizardForm.TasksList.ItemEnabled[33] := False;

end;

// Disable Tasks - END





// Installer UI Customizations

const
  Custom_Height = 570;
  Page_Color = $7b2b68;
  Page_Color_Alternative1 = clblack;
  Page_Color_Alternative2 = clwhite;
  Font_Color = $fffbff;


var
  DefaultTop,
  DefaultLeft,
  DefaultHeight,
  DefaultBackTop,
  DefaultNextTop,
  DefaultCancelTop,
  DefaultBevelTop,
  DefaultOuterHeight: Integer;


procedure InitializeWizard();

begin


  DefaultTop := WizardForm.Top;
  DefaultLeft := WizardForm.Left;
  DefaultHeight := WizardForm.Height;
  DefaultBackTop := WizardForm.BackButton.Top;
  DefaultNextTop := WizardForm.NextButton.Top;
  DefaultCancelTop := WizardForm.CancelButton.Top;
  DefaultBevelTop := WizardForm.Bevel.Top;
  DefaultOuterHeight := WizardForm.OuterNotebook.Height;


// Page sizes
  WizardForm.Height := Custom_Height;
  WizardForm.InnerPage.Height := WizardForm.InnerPage.Height + (Custom_Height - DefaultHeight);
  WizardForm.LicensePage.Height := WizardForm.LicensePage.Height + (Custom_Height - DefaultHeight);


// Control locations
  WizardForm.BackButton.Top := DefaultBackTop + (Custom_Height - DefaultHeight);
  WizardForm.Bevel.Top := DefaultBevelTop + (Custom_Height - DefaultHeight);
  WizardForm.CancelButton.Top := DefaultCancelTop + (Custom_Height - DefaultHeight);
  WizardForm.LicenseAcceptedRadio.Top := WizardForm.LicenseAcceptedRadio.Top + (Custom_Height - DefaultHeight);
  WizardForm.LicenseNotAcceptedRadio.Top := WizardForm.LicenseNotAcceptedRadio.Top + (Custom_Height - DefaultHeight);
  WizardForm.NextButton.Top := DefaultNextTop + (Custom_Height - DefaultHeight);
  WizardForm.Top := DefaultTop - (Custom_Height - DefaultHeight) div 2;


// Control Sizes
  WizardForm.InfoBeforeMemo.Height := (Custom_Height - (DefaultHeight / 2));
  WizardForm.InnerNotebook.Height :=  WizardForm.InnerNotebook.Height + (Custom_Height - DefaultHeight);
  WizardForm.LicenseMemo.Height := WizardForm.LicenseMemo.Height + (Custom_Height - DefaultHeight);
  WizardForm.OuterNotebook.Height := WizardForm.OuterNotebook.Height + (Custom_Height - DefaultHeight);
  WizardForm.Taskslist.Height := (Custom_Height - (DefaultHeight / 2));
  WizardForm.WizardBitmapImage.Height := (Custom_Height - (DefaultHeight / 5));


// Page colos
  WizardForm.color := Page_Color_Alternative1;
  WizardForm.FinishedPage.Color  := Page_Color;
  WizardForm.InfoBeforeMemo.Color := clGray;
  WizardForm.InnerPage.Color := Page_Color;
  WizardForm.LicensePage.Color := Page_Color;
  WizardForm.MainPanel.Color := Page_Color;
  WizardForm.SelectComponentsPage.Color  := Page_Color;
  WizardForm.SelectDirPage.Color  := Page_Color;
  WizardForm.Taskslist.Color := Page_Color;
  WizardForm.WelcomePage.color := Page_Color;


// Font colors
  WizardForm.Font.color := Font_Color;
  //WizardForm.InfoBeforeMemo.font.Color  := Font_Color;
  WizardForm.Licensememo.font.Color  := Font_Color;
  WizardForm.MainPanel.font.Color := Font_Color;
  WizardForm.PageDescriptionLabel.font.color  := Font_Color;
  WizardForm.PageNameLabel.font.color  := Font_Color;
  WizardForm.Taskslist.font.Color  := Font_Color;
  WizardForm.WelcomeLabel1.font.color  := Font_Color;
  WizardForm.WelcomeLabel2.font.color  := Font_Color;


end;

// Installer UI Customizations - END

当前的解决方案由问题中的@Tlama答案指定。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM