[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;
А можно пожалуйста подробнее, я просто новичок((( или готовый примерMaxvell, вот пример, только не с TForm, а с TPanel:
Код:[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;
[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;
Maxvell, ок, снизу Spoiler, там измененный пример с комментариями:
Код:[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:=paCenter; 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;
Maxvell, используйте расширенную версию Inno Setup -> http://krinkels.org/resources/innoultra.240/
Или заменить значение на taCenter - моя ошибка