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

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

Аватара для Johny777

Ветеран


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

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


Temyraz@fb,
думаю проще всего так
читать дальше »
Код: Выделить весь код
procedure CurPageChanged(CurPageID: Integer); 
begin
  if CurPageID=wpSelectDir then
  begin
    if CheckBoxA.Checked = true then
    begin
      WizardForm.DirEdit.Text:=ExpandConstant('{pf}\Setup_A');
    end;
    
    if CheckBoxB.Checked = true then
    begin
      WizardForm.DirEdit.Text:=ExpandConstant('{pf}\Setup_B');
    end;
  end;
end;

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
самодостаточный пример

читать дальше »
Код: Выделить весь код
[Setup]
AppName=Setup
AppVerName=Setup
DefaultDirName={pf}\Setup
OutputDir=.



[  code]
var
  CheckBoxA: TNewCheckBox;
  CheckBoxB: TNewCheckBox;

function Run_A: Boolean; begin Result:=CheckBoxA.Checked; end;
function Run_B: Boolean; begin Result:=CheckBoxB.Checked; end;

procedure InitializeWizard;
begin
  WizardForm.WelcomeLabel1.Hide;
  WizardForm.WelcomeLabel2.Hide;
  { CheckBoxA }
  CheckBoxA := TNewCheckBox.Create(WizardForm);
  with CheckBoxA do
  begin
    Name := 'CheckBoxA';
    Parent := WizardForm.WelcomePage;
    Left := ScaleX(216);
    Top := ScaleY(176);
    Width := ScaleX(97);
    Height := ScaleY(17);
    Caption := 'вариант 1';
  end;
  { CheckBoxB }
  CheckBoxB := TNewCheckBox.Create(WizardForm);
  with CheckBoxB do
  begin
    Name := 'CheckBoxB';
    Parent := WizardForm.WelcomePage;
    Left := ScaleX(216);
    Top := ScaleY(208);
    Width := ScaleX(97);
    Height := ScaleY(17);
    Caption := 'Вариант 2';
  end;
end;


procedure CurPageChanged(CurPageID: Integer); 
begin
  if CurPageID=wpSelectDir then
  begin
    if CheckBoxA.Checked = true then
    begin
      WizardForm.DirEdit.Text:=ExpandConstant('{pf}\Setup_A');
    end;
    
    if CheckBoxB.Checked = true then
    begin
      WizardForm.DirEdit.Text:=ExpandConstant('{pf}\Setup_B');
    end;
  end;
end;

,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
(только что заметил, что страница вставлена)
если своя страница, то
заместо wpSelectDir поставь DataDirPage.ID

а вместо WizardForm.DirEdit название своего эдита
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
Цитата Temyraz@fb:
D:\{#MyAppName} »
а если у пользователя нет диска/партиции D ?
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,, ,,,,,,,,,,,,,
R.i.m.s.k.y.,
у него всё привязано к проверке ключей в реестре
если есть/нет ключа, то отмечен один из 2-х невидимых для пользователя чекбоксов,
а в зависимости какой отмечен, то определённые действия в коде. (CurPageChanged, NextButtonClick)
через реестр зависит наличие компонетов, те проще всего по возможности всё привязывать к 2-м чекбоксам *(CheckBoxA; CheckBoxB)
Цитата R.i.m.s.k.y.:
тк страница компонентов идет после выбора директории »
есть пример смены страниц местами в
...\Inno Setup 5\Scripts\Dobrov\SwapDirComponents.iss
читать дальше »
Код: Выделить весь код
[Setup]
AppName=My program
AppVerName=My program 1.5
DefaultDirName={pf}\My program
DisableDirPage=false
;DisableDirPage=true

[Languages]
Name: rus; MessagesFile: compiler:Languages\Russian.isl

[Components]
Name: WB; Description: 'Мой компьютер' - Настройки; ExtraDiskSpaceRequired: 1048576

[ Code]
function OnShouldSkipPage(Sender: TWizardPage): Boolean;
begin
	if WizardForm.ComponentsList.Items.Count > 0 then WizardForm.Tag:= 1; // отображаются страницы выбора папки и компонентов
end;

Procedure CurPageChanged(CurPageID: Integer);
Begin
  Case CurPageID of
  wpSelectDir: if WizardForm.Tag = 1 then
	begin
		WizardForm.SelectDirPage.Notebook.ActivePage:= WizardForm.SelectComponentsPage;
		WizardForm.PageNameLabel.Caption:= SetupMessage(msgWizardSelectComponents)
		WizardForm.Hint:= WizardForm.PageDescriptionLabel.Caption; // запомнить SetupMessage(msgSelectDirDesc)
		WizardForm.PageDescriptionLabel.Caption:= SetupMessage(msgSelectComponentsDesc)
	end;
  wpSelectComponents: if WizardForm.Tag = 1 then
    begin
		WizardForm.SelectComponentsPage.Notebook.ActivePage:= WizardForm.SelectDirPage;
		WizardForm.DiskSpaceLabel.Caption:= WizardForm.ComponentsDiskSpaceLabel.Caption;
		WizardForm.PageNameLabel.Caption:= SetupMessage(msgWizardSelectDir)
		WizardForm.PageDescriptionLabel.Caption:= WizardForm.Hint // иначе вместо названия программы [name]
    end;
  end;
End;

Procedure InitializeWizard;
Begin
	PageFromID(wpSelectDir).OnShouldSkipPage:= @OnShouldSkipPage
End;

только если у тебя скажем проверка на странице выбора директории, то при использовании этого примера
эту проверку придётся делать на странице компонентов.

Последний раз редактировалось Johny777, 25-04-2012 в 16:46.

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

Отправлено: 15:51, 25-04-2012 | #1665