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

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

Тема в разделе "Inno Setup", создана пользователем Хамик, 15 апр 2014.

  1. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    313
    Симпатии:
    54
    Пол:
    Мужской
    Помогите, пожалуйста, создать новый statuslabel в процедуре MiniInstall. И чтобы текст менялся в зависимости от выбранной радиокнопки, например: Радиокнопка1=Установка, Радиокнопка2=Распаковка. Спасибо!
    Код (Text):
    [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;
     
  2. Ветеран Проверенный

    Регистрация:
    19 дек 2011
    Сообщения:
    351
    Симпатии:
    401
    код...
     
    Хамик нравится это.
  3. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    313
    Симпатии:
    54
    Пол:
    Мужской
    А возможно этому statuslabel присвоить несколько caption. Чтобы менялось через определенное время?
     
  4. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    313
    Симпатии:
    54
    Пол:
    Мужской
    Что нету способа???
    Mailchik Вот есть код, как его прикрутить к вашему?
    Код (Text):
    [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;
     
    Последнее редактирование: 18 апр 2014
  5. Ветеран Модератор

    Регистрация:
    26 июн 2011
    Сообщения:
    896
    Симпатии:
    613
    Код (Text):
    [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;
     
     
    Хамик нравится это.

Поделиться этой страницей