Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Аватара для Johny777

Ветеран


Сообщения: 649
Благодарности: 444

Профиль | Отправить PM | Цитировать


Lex_from_Belarus, либо я не догоняю либо код для выбора всех компонентов не дружит со свёрнутым деревом компонентов
в любом случае оптимизировал процедуру выбора и очиски выбора всех компонентов и ответил на вопрос в твоём последнем сообщении:
читать дальше »

Код: Выделить весь код
[Setup]
AppName=My Program
AppVerName=My Program v 1.5
DefaultDirName={pf}\My Program
OutputDir=.
DirExistsWarning=no


[Components]
Name: a; Description: -Компонент 1;
Name: a\a; Description: --Компонент 1.1;
Name: a\b; Description: --Компонент 1.2;
Name: b; Description: -Компонент 2;
Name: b\d; Description: --Компонент 2.1;
Name: b\e; Description: --Компонент 2.2;
Name: b\f; Description: --Компонент 2.3;
Name: b\e; Description: --Компонент 2.4;


[  code]
procedure ComponentsOnClick(Sender: TObject);
begin
  with WizardForm.ComponentsList do
  begin
    // Как сделать чтобы если выбран 1.1 то доступны для выбора были 2.1 и 2.2, а если выбрано 1.2, то доступны стали 2.3 и 2.4
    ItemEnabled[Items.IndexOf('--Компонент 2.1')] := Checked[Items.IndexOf('--Компонент 1.1')];
    ItemEnabled[Items.IndexOf('--Компонент 2.2')] := Checked[Items.IndexOf('--Компонент 1.1')];
    ItemEnabled[Items.IndexOf('--Компонент 2.3')] := Checked[Items.IndexOf('--Компонент 1.2')];
    ItemEnabled[Items.IndexOf('--Компонент 2.4')] := Checked[Items.IndexOf('--Компонент 1.2')];

    // И соответственно при нажатии на 1.1 или 1.2 происходил выбор 2.1 или 2.3 соответственно
    if Checked[Items.IndexOf('--Компонент 1.1')] then Checked[Items.IndexOf('--Компонент 2.1')] := True;
    if Checked[Items.IndexOf('--Компонент 1.2')] then Checked[Items.IndexOf('--Компонент 2.3')] := True;
    Refresh;
  end;
end;

procedure btnClick(Sender: TObject);
var
  i: Byte;
  Check: Boolean;
begin
  Check := TButton(Sender).Caption = 'Все';
  for i := 0 to WizardForm.ComponentsList.Items.Count-1 do WizardForm.ComponentsList.Checked[i] := Check;
  WizardForm.ComponentsList.OnClickCheck(nil);
end;

procedure InitializeWizard();
var
  i, k: Byte;
begin
  for i:= 0 to 1 do with TButton.Create(WizardForm) do
  begin
    Parent:= WizardForm.SelectComponentsPage;
    SetBounds(ScaleX(295+k), ScaleY(210), ScaleX(60), ScaleY(25));
    OnClick := @btnClick;
    case i of
      0: Caption:= 'Все';
      1: Caption:= 'Ничего';
    end;
    k:= 62;
  end;
  WizardForm.ComponentsList.OnClickCheck := @ComponentsOnClick;
  WizardForm.ComponentsList.OnClickCheck(nil);
end;

Последний раз редактировалось Johny777, 21-02-2013 в 15:05.

Это сообщение посчитали полезным следующие участники:

Отправлено: 14:49, 21-02-2013 | #1698