Вопрос как создать сообщение отмены на странице установщика?

EvilAlex

Старожил
доброго времени суток!
Наткнулся на инсталлятор от R.G. Catalyst в котором отмена появляется не в отдельно окне, а в самом инсталляторе...

Есть ли у кого-то такой же пример ?
Заранее спсибо!
 

Вложения

sergey3695

Ветеран
Модератор
Расфдудились тут :lol:
Пример. Тут только кнопки.
Код:
[setup]
AppName=MyApp
AppVerName=MyApp
DefaultDirName={pf}\MyApp
OutputDir=.

[Code]
var
  Next: String;
  Visible, Close: boolean;

procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
  Confirm := False;
  Cancel := True;
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
if WizardForm.CancelButton.Caption=SetupMessage(msgButtonNo) then
begin
  Close:= True;
  WizardForm.Close;
end else
  Result := True;
end;

procedure OnCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose:= Close;
if WizardForm.NextButton.Caption=SetupMessage(msgButtonYes) then
begin
  WizardForm.BackButton.Visible:= Visible;
  WizardForm.CancelButton.Caption:= SetupMessage(msgButtonCancel);
  WizardForm.NextButton.Caption:= Next;
end else begin
  Next:= WizardForm.NextButton.Caption;
  Visible:= WizardForm.BackButton.Visible;
  WizardForm.BackButton.Hide;
  WizardForm.CancelButton.Caption:= SetupMessage(msgButtonNo);
  WizardForm.NextButton.Caption:= SetupMessage(msgButtonYes);
end;
end;

procedure InitializeWizard();
begin
  WizardForm.OnCloseQuery:= @OnCloseQuery;
end;
EvilAlex, не даст он тебе инсталл тот. (раз не дал сразу, то не даст. логично? логично. тема закрыта)
 

EvilAlex

Старожил
В общем вот что получилось... но возникла загвоздка, если нажать кнопку нет, то сообщение и значёк не скрываются, и появляется кнопка отмены...
 

Вложения

vint56

Ветеран
Проверенный
EvilAlex,
Код:
procedure OnCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose:= Close;
if WizardForm.NextButton.Caption=SetupMessage(msgButtonYes) then
begin
  WizardForm.BackButton.Visible:= Visible;
  WizardForm.CancelButton.Caption:= SetupMessage(msgButtonCancel);
  WizardForm.NextButton.Caption:= Next;
  NewIconImage1.Hide;
  Label3.Hide;
end else begin
 

EvilAlex

Старожил
EvilAlex,
Код:
procedure OnCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose:= Close;
if WizardForm.NextButton.Caption=SetupMessage(msgButtonYes) then
begin
  WizardForm.BackButton.Visible:= Visible;
  WizardForm.CancelButton.Caption:= SetupMessage(msgButtonCancel);
  WizardForm.NextButton.Caption:= Next;
  NewIconImage1.Hide;
  Label3.Hide;
end else begin
Супер. помогло... Спасибо!

А как сделать чтобы при открытии сообщения, скрывалось все что есть на странице, а когда нажимаешь нет, то появлялось обратно...

В общем вот скрипт. не смог найти хороший закос под каталистов, решил сделать сам, помогите пожалуйста прикрутить нормально отмену к нему, Заранее спасибо!
 
Последнее редактирование модератором:

vint56

Ветеран
Проверенный
EvilAlex, и procedure OnCloseQuery перед procedure InitializeWizard(); и убери свой закос сылку
Код:
procedure OnCloseQuery(Sender: TObject; var CanClose: Boolean);
begin
  CanClose:= Close;
if WizardForm.NextButton.Caption=SetupMessage(msgButtonYes) then
begin
  WizardForm.BackButton.Visible:= Visible;
  WizardForm.CancelButton.Caption:= SetupMessage(msgButtonCancel);
  WizardForm.NextButton.Caption:= Next;
  NewIconImage1.Hide;
  Label5.Hide;
  WizardForm.WizardBitmapImage.Show;
  WizardForm.NextButton.SetBounds(468, 375, 108, 28);

  Bevel3.Hide;
  Bevel4.Hide;
  Bevel5.Hide;
end else begin
  Next:= WizardForm.NextButton.Caption;
  Visible:= WizardForm.BackButton.Visible;
  WizardForm.BackButton.Hide;
  Bevel3.Show;
  Bevel4.Show;
  Bevel5.Show;
  WizardForm.CancelButton.Caption:= SetupMessage(msgButtonNo);
  WizardForm.NextButton.SetBounds(354, 375, 108, 28);
  WizardForm.NextButton.Caption:= SetupMessage(msgButtonYes);

  WizardForm.WizardBitmapImage.Hide;
 

sergey3695

Ветеран
Модератор
А как сделать чтобы при открытии сообщения, скрывалось все что есть на странице, а когда нажимаешь нет, то появлялось обратно...
Hide - скрыть, Show - показать. И так Show - сообщение о выходе. Hide - if CurPageId=то-тото (var CurPageId: integer) и так далее. Ничего сложного. В чем могли возникнуть по-моему мнению проблемы я сделал в примере.
 

EvilAlex

Старожил
Проблема в том что хайд скрывает и другие компоненты, а отмена вылазит или под компонентами или между ними... А когда нажимаешь чтобы продолжить установку а не выйти. то компоненты остаются на страницах или заменяют страницы полностью...

Просьба, чтобы понять, скомпилируйте его, и увидите в чем у меня возникла проблема...
 
Последнее редактирование:

nik1967

Old Men
Проверенный
EvilAlex, создай панель, на ней всё размести (кнопки, лебелы), а потом только показывай, скрывай её (панель). Вот и всё. Никаких сложностей.
 
Последнее редактирование:

EvilAlex

Старожил
EvilAlex, создай панель, на ней всё размести (кнопки, лебелы), а потом только показывай, скрывай её (панель). Вот и всё. Никаких сложностей.
Спасибо большое, вот что значит хорошая мысля приходит опосля))) Все испробовал. а панель не дагодался!
 
Сверху