Usunięcie lub pominięcie strony w InnoSetup

Odpowiedz Nowy wątek
2015-03-04 07:48

Rejestracja: 12 lat temu

Ostatnio: 3 miesiące temu

0

Witam,
mam taki problem w Inno Setup, mam stronę z radio buttonami. Jeżeli wybiorę radio button nr 1 to przechodzi od razu do instalacji, jeżeli wybiorę radio button 2 to otwiera mi kolejną stronę z wyborem radio buttonów w którym mam do wybrania radio button instalacja bazy danych, lub 2 radio button mam już zainstalowaną bazę danych. Czy można w jakiś sposób zniszczyć stronę, bo jeżeli wybiorę opcję nr 2 przejdę do wyboru, a następnie powrócę na stronę poprzednią i wybiorę opcję nr 1, to i tak wyświetla mi się strona z wyborem bazy danych. Jak mogę zniszczyć tą stronę.


[Code]
var
rbOp1: TRadioButton;
rbOp2: TRadioButton;
rbWyborBazy: TRadioButton;
rbBazaZainstalowana: TRadioButton;

isBase: Boolean;

pgOne: TInputOptionWizardPage;
pgTwo: TInputOptionWizardPage;

procedure Opcja1(Sender: Tobject);
begin
  if(rbOp1.Checked) then
  begin
      isBase := false;
  end;
end;

procedure Opcja2(Sender: Tobject);
begin
  if(rbOp2.Checked) then
  begin
      isBase := true;
  end;
end;

function Page2(PrevPage: Integer): Integer;
begin
           pgTwo := CreateInputOptionPage(PrevPage, 'Baza Danych','Wybór bazy danych',
          'Proszę o wybranie opcji i wciśnięcie przycisku Dalej',
          True, False);

          { Baza Danych }
         rbWyborBazy:= TRadioButton.Create(pgTwo);
          with rbWyborBazy do
          begin
              Parent :=pgTwo.Surface;
              Caption := 'Zainstaluj bazę danych';
              Left := ScaleX(50);
              Top := ScaleY(20);
              Width := ScaleX(250);
              Height := ScaleY(15);
              Checked := True;
              TabOrder := 1;
              TabStop := True;                                    
          end;

          { baza danych zainstalowana }
          rbBazaZainstalowana:= TRadioButton.Create(pgTwo);
          with rbBazaZainstalowana do
          begin
              Parent := pgTwo.Surface;
              Caption := 'Mam już zainstalowaną bazę danych';
              Left := ScaleX(50);
              Top := ScaleY(50);
              Width := ScaleX(250);
              Height := ScaleY(15);
              Checked := False;
              TabOrder := 2;
              TabStop := True;                                    
          end;
     end;
     Result := pgTwo.ID;
end;

function CustomForm_NextButtonClick(Page: TWizardPage): Boolean;
begin
  if isBase = True then
    begin
          PageTwo(PageOne.ID);
    end 
    Result := true;  
end;

function Page1(PrevPage: Integer): Integer;
begin
       pgOne := CreateInputOptionPage(PrevPage, 'Opcje','Wybór opcji',
          'Proszę o wybranie opcji i wciśnięcie przycisku Dalej',
          True, False);

          { Opcja 1 }
          rbOp1:= TRadioButton.Create(pgOne);
          with rbOp1 do
          begin
              Parent := pgOne.Surface;
              Caption := 'Opcja 1';
              Left := ScaleX(50);
              Top := ScaleY(20);
              Width := ScaleX(150);
              Height := ScaleY(15);
              Checked := False;
              TabOrder := 1;
              TabStop := True;
              OnClick := @Opcja1;                    
          end;

          { Opcja 2 }
          rbOp2:= TRadioButton.Create(pgOne);
          with rbOp2 do
          begin
              Parent := pgOne.Surface;
              Caption := 'Opcja 2';
              Left := ScaleX(50);
              Top := ScaleY(20);
              Width := ScaleX(150);
              Height := ScaleY(15);
              Checked := False;
              TabOrder := 1;
              TabStop := True;
              OnClick := @Opcja2;                    
          end;
     end;
      with pgOne do
     begin      
        OnNextButtonClick := @CustomForm_NextButtonClick;
     end;
     Result := pgSoft.ID;
end;

Z góry dziękuję i pozdrawiam
PiK

edytowany 1x, ostatnio: furious programming, 2015-03-04 15:29

Pozostało 580 znaków

2015-03-04 19:06

Rejestracja: 6 lat temu

Ostatnio: 1 rok temu

0

Zadeklaruj zmienną przechowującą ID strony do ukrycia i ręcznie obsłuż zdarzenie ShouldSkipPage.

function ShouldSkipPage(PageID: Integer): Boolean;

The wizard calls this event function to determine whether or not a particular page (specified by PageID) should be shown at all. If you return True, the page will be skipped; if you return False, the page may be shown.

Note: This event function isn't called for the wpWelcome, wpPreparing, and wpInstalling pages, nor for pages that Setup has already determined should be skipped (for example, wpSelectComponents in an install containing no components).

http://www.jrsoftware.org/ishelp/index.php?topic=scriptevents

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0