Вопрос Как вывести новый StatusLabel?

Хамик

Старожил
Помогите, пожалуйста, создать новый statuslabel в процедуре MiniInstall. И чтобы текст менялся в зависимости от выбранной радиокнопки, например: Радиокнопка1=Установка, Радиокнопка2=Распаковка. Спасибо!
Код:
[Setup]
AppName=MiniInstall
AppVersion=1.0
DefaultDirName={pf}\MiniInstall

[Files]
Source: {win}\help\*; DestDir: {app}\Files; Flags: external recursesubdirs createallsubdirs;

[Code]
function GetSystemMetrics(nIndex:Integer):integer; external 'GetSystemMetrics@user32.dll stdcall delayload';

procedure MiniInstall;
begin
  with WizardForm do
  begin
    Bevel.Hide;
    Bevel1.Hide;
    MainPanel.Hide;
    AutoScroll := False;
    ClientHeight := ScaleY(105);
    InnerNotebook.Align := alClient;
    ProgressGauge.Left := ScaleX(40);
    CancelButton.Top := ScaleY(70);
    CancelButton.BringToFront;
// ----- Позиция инсталлятора ----- \\
    Left:=GetSystemMetrics(16)-Width;  // Справа
//    Left:=0;  // Слева
    Top:=GetSystemMetrics(17)-Height;  // Внизу
//    Top:=0;  // Вверху
//----------------------------------\\
  end;
end;

procedure RestoreInstall;
begin
  with WizardForm do
  begin
    Bevel.Show;
    ClientHeight := ScaleY(360);
    Position:=poScreenCenter;
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  case CurPageID of
    wpInstalling: MiniInstall;
    wpFinished: RestoreInstall;
  end;
end;
 

Mailchik

Старожил
Проверенный
код...
 

Хамик

Старожил
А возможно этому statuslabel присвоить несколько caption. Чтобы менялось через определенное время?
 

Хамик

Старожил
Что нету способа???
Mailchik Вот есть код, как его прикрутить к вашему?
Код:
[Files]
Source: "myapp.exe"; DestDir: {app}; BeforeInstall: ChangeLabel('files')

[Registry]
Root: "HKLM"; Subkey:"Software\MyApp"; ValueType: string; ValueName: "path"; ValueData: "{app}"; BeforeInstall: ChangeLabel('reg')

[Сode]
var StatusLbl: TLabel; //новый статус-лэйбл

procedure ChangeLabel(param:string);
begin
case param of
'files': StatusLbl.Caption:='Копирование файлов';
'reg': StatusLbl.Caption:='Создание записи в реестре';
end;
 
Последнее редактирование:

sergey3695

Ветеран
Модератор
Код:
[Setup]
AppName=MiniInstall
AppVersion=1.0
DefaultDirName={pf}\MiniInstall

[Components]
Name: install; Description: Установка; Flags: exclusive;
Name: extract; Description: Распаковка; Flags: exclusive;

[Files]
Source: "myapp.exe"; DestDir: {app}; BeforeInstall: ChangeLabel('files')

[Registry]
Root: "HKLM"; Subkey:"Software\MyApp"; ValueType: string; ValueName: "path"; ValueData: "{app}"; BeforeInstall: ChangeLabel('reg')

[Code]
function GetSystemMetrics(nIndex:Integer):integer; external 'GetSystemMetrics@user32.dll stdcall delayload';

var
   NewStatusLabel: TLabel;

procedure ChangeLabel(param:string);
begin
case param of
// 'files': NewStatusLabel.Caption:='Копирование файлов'; // можно так
'files': begin
    with NewStatusLabel do
    begin
      if IsComponentSelected('install') then
         Caption := 'Установка.....';
      if IsComponentSelected('extract') then
         Caption := 'Распаковка.....';
    end;
end;
'reg': NewStatusLabel.Caption:='Создание записи в реестре';
end;
end;

procedure MiniInstall;
begin
  with WizardForm do
  begin
    Bevel.Hide;
    Bevel1.Hide;
    MainPanel.Hide;
    AutoScroll := False;
    ClientHeight := ScaleY(105);
    InnerNotebook.Align := alClient;
    ProgressGauge.Left := ScaleX(40);
    CancelButton.Top := ScaleY(70);
    CancelButton.BringToFront;
    StatusLabel.Hide;
    NewStatusLabel := TLabel.Create(WizardForm);
    with NewStatusLabel do
    begin
      Parent := StatusLabel.Parent;
      SetBounds(StatusLabel.Left, StatusLabel.Top, StatusLabel.Width, StatusLabel.Height);
    end;
// ----- Позиция инсталлятора ----- \\
    Left:=GetSystemMetrics(16)-Width;  // Справа
//    Left:=0;  // Слева
    Top:=GetSystemMetrics(17)-Height;  // Внизу
//    Top:=0;  // Вверху
//----------------------------------\\
  end;
end;

procedure RestoreInstall;
begin
  with WizardForm do
  begin
    Bevel.Show;
    ClientHeight := ScaleY(360);
    Position:=poScreenCenter;
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  case CurPageID of
    wpInstalling: MiniInstall;
    wpFinished: RestoreInstall;
  end;
end;

// Так как NewStatusLabel.StatusLabel.Parent то это не актуально
// Оставил для IsDone чтоб сам немного сделал.
//procedure CurStepChanged(CurStep: TSetupStep);
//begin
//if CurStep = ssPostInstall then begin
//    with NewStatusLabel do
//    begin
//      if IsComponentSelected('install') then
//         Caption := 'Установка.....';
//      if IsComponentSelected('extract') then
//         Caption := 'Распаковка.....';
//    end;
//end;
//end;
 
Сверху