论坛风格切换切换到宽版
  • 1617阅读
  • 0回复

[已解决]组件之间关联问题? [复制链接]

上一主题 下一主题
离线546242502
 

发帖
332
金钱
-3060
威望
-306
只看楼主 倒序阅读 0 发表于: 2015-09-04
问题解决了,找到的代码,论坛原帖实在搜不到:
  1. [Code]
  2. var
  3.   OldEvent_ComponentsListClickCheck: TNotifyEvent;  //定义组件列表单击事件备份
  4.   OldEvent_TypesComboOnChange: TNotifyEvent;     //定义安装类型更改事件备份
  5. Procedure CmpListOnClickCheck(Sender: TObject);     //组件列表单击事件
  6.   var
  7.     i: integer;
  8.   begin
  9.   OldEvent_ComponentsListClickCheck(Sender);   //重置组件列表单击事件
  10.   if WizardForm.TypesCombo.ItemIndex = 2 then //当选择自定义安装类型时
  11.      begin
  12.      if WizardForm.ComponentsList.Checked[0] or WizardForm.ComponentsList.Checked[1] then  //第1-2个组件被选择时,第3-4个组件被禁用
  13.         begin
  14.         for i := 2 to 3 do
  15.             begin
  16.             WizardForm.ComponentsList.Checked[i] := false;
  17.             WizardForm.ComponentsList.ItemEnabled[i] := false;
  18.             end;
  19.         for i := 0 to 1 do
  20.             begin
  21.             WizardForm.ComponentsList.ItemEnabled[i] := true;
  22.             end;
  23.         end
  24.      else if WizardForm.ComponentsList.Checked[2] or WizardForm.ComponentsList.Checked[3] then //第3-4个组件被选择时,第1-2个组件被禁用
  25.         begin
  26.         for i := 0 to 1 do
  27.             begin
  28.             WizardForm.ComponentsList.Checked[i] := false;
  29.             WizardForm.ComponentsList.ItemEnabled[i] := false;
  30.             end;
  31.         for i := 2 to 3 do
  32.             begin
  33.             WizardForm.ComponentsList.ItemEnabled[i] := true;
  34.             end;
  35.         end
  36.      else //第1-4个组件都未被选择时,第1-4个组件都解除禁用
  37.         begin
  38.         for i := 0 to WizardForm.ComponentsList.Items.Count - 1 do
  39.             begin
  40.             //WizardForm.ComponentsList.Checked[i] := false;
  41.             WizardForm.ComponentsList.ItemEnabled[i] := true;
  42.             end;
  43.         end;
  44.      end;
  45. end;
  46. Procedure TypesComboOnChange(Sender: TObject);     //安装类型更改事件
  47.   var
  48.     i: integer;
  49.   begin
  50.   OldEvent_TypesComboOnChange(Sender);         //重置安装类型事件
  51.   //WizardForm.NextButton.Enabled := false;
  52.   if WizardForm.TypesCombo.ItemIndex <> 2 then //当选择非自定义安装类型时
  53.      begin
  54.      for i := 0 to WizardForm.ComponentsList.Items.Count - 1 do
  55.          begin         //当组件已选定时,启用该组件
  56.          if WizardForm.ComponentsList.Checked[i] then
  57.             begin
  58.             WizardForm.ComponentsList.ItemEnabled[i] := true;
  59.             end
  60.          else           //当组件未选定时,禁用该组件
  61.             begin
  62.             WizardForm.ComponentsList.ItemEnabled[i] := false;
  63.             end;
  64.          end;
  65.       end;
  66. end;
  67. Procedure InitializeWizard();               //安装向导初始化
  68.   begin
  69.   OldEvent_ComponentsListClickCheck := WizardForm.ComponentsList.OnClickCheck;     //备份组件列表单击事件
  70.   OldEvent_TypesComboOnChange := WizardForm.TypesCombo.OnChange                    //备份安装类型更改事件
  71.   WizardForm.ComponentsList.OnClickCheck := @CmpListOnClickCheck;                         //关联组件列表单击事件
  72.   WizardForm.TypesCombo.OnChange := @TypesComboOnChange;                  //关联安装类型更改事件
  73. end;