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

Окно информации

Тема в разделе "Inno Setup", создана пользователем Maxvell, 12 фев 2019.

  1. Новичок

    Регистрация:
    25 сен 2018
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    Без имени-1.jpg

    Как сделать так, чтоб после наведения на dlc всплывало окно с текстом? Помогите пожалуйста.
     
    Последнее редактирование модератором: 13 фев 2019
  2. Старожил Супер модератор

    Регистрация:
    5 мар 2016
    Сообщения:
    410
    Симпатии:
    432
    Пол:
    Мужской
    Maxvell, вот пример, только не с TForm, а с TPanel:

    Код (Inno):
    [Setup]
    AppName=Test
    AppVersion=1
    CreateAppDir=no

    [Components]
    Name: text; Description: Язык субтитров; Types: full; Flags: fixed
    Name: text\rus; Description: Русский; Flags: exclusive; ExtraDiskSpaceRequired: 100000000
    Name: text\eng; Description: Английский; Flags: exclusive; ExtraDiskSpaceRequired: 200000000
    Name: voice; Description: Язык озвучки; Types: full; Flags: fixed
    Name: voice\rus; Description: Русский; Flags: exclusive; ExtraDiskSpaceRequired: 500000000
    Name: voice\eng; Description: Английский; Flags: exclusive; ExtraDiskSpaceRequired: 600000000

    [Code]
    var
      infPanel: TPanel;
      infLabel: TLabel;

    procedure CreateInfo;
    begin
      infPanel:=TPanel.Create(nil);
      infPanel.SetBounds(ScaleX(32), ScaleY(200), ScaleX(413), ScaleY(50));
      infPanel.ParentBackground:=False;
      infPanel.Color:=clGray;
      infPanel.BorderStyle:=bsNone;
      infPanel.BevelOuter:=bvNone;
      infPanel.Parent:=WizardForm;
      infPanel.Visible:=False;

      infLabel:=TLabel.Create(nil);
      infLabel.AutoSize:=False;
      infLabel.WordWrap:=False;
      infLabel.SetBounds(ScaleX(0), ScaleY(0), ScaleX(infPanel.Width), ScaleY(infPanel.Height));
      infLabel.Alignment:=paCenter;
      infLabel.Layout:=tlCenter;
      infLabel.Parent:=infPanel;
    end;

    procedure ShowInfoText(Index: Byte);
    var
      cap: String;
    begin
    case Index of
      0: cap:='0 - ';
      1: cap:='1 - ';
      2: cap:='2 - ';
      3: cap:='3 - ';
      4: cap:='4 - ';
      5: cap:='5 - ';
      else begin
        if infPanel.Visible then infPanel.Visible:=False;
        Exit;
      end;
    end;
      infLabel.Caption:=cap + WizardForm.ComponentsList.Items.Strings[Index];
      if not infPanel.Visible then infPanel.Visible:=True;
    end;

    procedure cmp_MouseEnter(Sender: TObject; X: Integer; Y: Integer; Index: Integer; Area: TItemArea);
    begin
      ShowInfoText(Index);
    end;

    procedure cmp_MouseLeave(Sender: TObject);
    begin
      infPanel.Visible:=False;
    end;

    procedure InitializeWizard;
    begin
      with WizardForm do begin
        NextButton.Width:=ScaleX(0);
        OuterNotebook.Hide;
        Bevel.Hide;

      with ComponentsList do begin
        Left:=ScaleX(30);
        Height:=ScaleY(Height+47);
        Parent:=WizardForm;
        OnItemMouseMove:=@cmp_MouseEnter;
        OnMouseLeave:=@cmp_MouseLeave;
      end;
      CreateInfo;
     end;
    end;
     
  3. Новичок

    Регистрация:
    25 сен 2018
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    А можно пожалуйста подробнее, я просто новичок((( или готовый пример
     
  4. Старожил Супер модератор

    Регистрация:
    5 мар 2016
    Сообщения:
    410
    Симпатии:
    432
    Пол:
    Мужской
    Maxvell, ок, снизу Spoiler, там измененный пример с комментариями:

    Код (Inno):
    [Setup]
    AppName=Test
    AppVersion=1.5
    DefaultDirName={sd}\Test

    [Components]
    Name: dlc_1; Description: Дополнение №1;
    Name: dlc_2; Description: Дополнение №2;
    Name: dlc_3; Description: Дополнение №3;
    Name: dlc_4; Description: Дополнение №4;

    [Code]
    /////////////////////////////////////////////////////////////////////////////////////////////////////////
    var // Объявляем переменные
      infPanel: TPanel;
      infLabel: TLabel;

    procedure CreateInfo; // Создание TPanel и TLabel
    begin
      infPanel:=TPanel.Create(nil);
      infPanel.SetBounds(ScaleX(42), ScaleY(225), ScaleX(413), ScaleY(50));
      infPanel.ParentBackground:=False;
      infPanel.Color:=clGray;
      infPanel.BorderStyle:=bsNone;
      infPanel.BevelOuter:=bvNone;
      infPanel.Parent:=WizardForm;
      infPanel.Visible:=False;

      infLabel:=TLabel.Create(nil);
      infLabel.AutoSize:=False;
      infLabel.WordWrap:=False;
      infLabel.SetBounds(ScaleX(0), ScaleY(0), ScaleX(infPanel.Width), ScaleY(infPanel.Height));
      infLabel.Alignment:=taCenter;
      infLabel.Layout:=tlCenter;
      infLabel.Parent:=infPanel;
    end;

    procedure ShowInfoText(Index: Byte); // Процедура вывода текста в объект TLabel и последующие проявление TPanel
    var
      cap: String;
    begin
    case Index of
      0: cap:='Установить 1-е DLC'; // здесь указываем текст для компонентов из списка
      1: cap:='Установить 2-е DLC'; // исчисление списка идет с 0 позиции
      2: cap:='Установить 3-е DLC';
      3: cap:='Установить 4-е DLC';
      else begin
        if infPanel.Visible then infPanel.Visible:=False; // если мы не указали выше компонент, то
        Exit;                                             // здесь выполняется скрытие TPanel и выход  из процедуры
      end;
    end;
      infLabel.Caption:=cap;                               // если успешно, производится вывод
      if not infPanel.Visible then infPanel.Visible:=True; // и появление TPanel
    end;

    procedure cmp_MouseEnter(Sender: TObject; X: Integer; Y: Integer; Index: Integer; Area: TItemArea);
    begin
      ShowInfoText(Index); // Передача Index'а текущего компонента при наведении
    end;

    procedure cmp_MouseLeave(Sender: TObject);
    begin
      infPanel.Visible:=False; // Скрытие TPanel, при покидании курсора ComponentsList'a
    end;
    /////////////////////////////////////////////////////////////////////////////////////////////////////////
    procedure InitializeWizard;
    begin
      WizardForm.ComponentsList.OnItemMouseMove:=@cmp_MouseEnter; // Подключаем наше событие
      WizardForm.ComponentsList.OnMouseLeave:=@cmp_MouseLeave;    // Подключаем наше событие
      CreateInfo; // Создаем наши компоненты
    end;
     
    Последнее редактирование: 12 фев 2019
  5. Новичок

    Регистрация:
    25 сен 2018
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
     

    Вложения:

    • aawd.jpg
      aawd.jpg
      Размер файла:
      342,9 КБ
      Просмотров:
      28
  6. Старожил Супер модератор

    Регистрация:
    5 мар 2016
    Сообщения:
    410
    Симпатии:
    432
    Пол:
    Мужской
    Последнее редактирование: 12 фев 2019
  7. Новичок

    Регистрация:
    25 сен 2018
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
     

    Вложения:

    • aawd.jpg
      aawd.jpg
      Размер файла:
      425,1 КБ
      Просмотров:
      25
  8. Старожил Супер модератор

    Регистрация:
    5 мар 2016
    Сообщения:
    410
    Симпатии:
    432
    Пол:
    Мужской
    Maxvell, закомментируйте данную строку(с выравниванием текста), либо устанавливайте Расширенную UNICODE версию Inno Setup, ибо у меня пашет:

    12.png
     
  9. Новичок

    Регистрация:
    25 сен 2018
    Сообщения:
    8
    Симпатии:
    0
    Пол:
    Мужской
    Все работает, большое спасибо))) Еще вопрос как убрать этот отступ между буквами??
     

    Вложения:

    • aawd.jpg
      aawd.jpg
      Размер файла:
      824,7 КБ
      Просмотров:
      29

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