LouisVuittonЦитата: Подскажите, пожалуйста, реально ли сделать что бы здесь текст был без фона, то есть поверх картинки.
Посмотри, как сделано здесь:
http://victor-dobrov.narod.ru/NSIS_ImageHeader.rar YurCompMan2Цитата: ...вместо descctrl.dll использовать возможности расширенной версии Inno Setup Compiler
Вот пример: [more]
[Setup]
AppName=My Program
AppVerName=My Program version 1.5
DefaultDirName={pf}\My Program
DefaultGroupName=My Program
UninstallDisplayIcon={app}\MyProg.exe
[Types]
Name: compact; Description: Оптимальный выбор
Name: full; Description: Выбрать все компоненты
Name: deselect; Description: Сбросить все компоненты
Name: custom; Description: Пользовательский режим; Flags: iscustom
[Components]
Name: program; Description: program; Types: full compact custom; Flags: fixed
Name: help; Description: help; Types: full
Name: readme; Description: readme; Types: full
Name: readme\en; Description: en; Flags: exclusive
Name: readme\ru; Description: ru; Flags: exclusive
[Languages]
Name: ru; MessagesFile: compiler:Languages\Russian.isl
[CustomMessages]
ru.desc=Наведите курсор мыши на компонент, чтобы прочитать его описание.
[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Components: program
Source: compiler:Examples\MyProg.chm; DestDir: {app}; Components: help
[Icons]
Name: {group}\My Program; Filename: {app}\MyProg.exe
[Code]
var
Info: TNewStaticText;
InfoCaption: TNewStaticText;
InfoPanel: TPanel;
Descriptions: String;
CompHints: array of String;
Function StringToArray(Text, Cut: String): array of String; var t, i, k: Integer; Begin { создать массив из текста}
SetArrayLength(Result, 0);
Repeat SetArrayLength(Result, GetArrayLength(Result) + 1); t:= 1; k:= Pos(Cut, Text);
if k > 0 then t:= Length(Cut) else k:= Pos(#10, Text); i:= GetArrayLength(Result) - 1;
if k > 0 then begin Result[i]:= Copy(Text, 1, k - 1); Text:= Copy(Text, k + t, Length(Text)) end else begin Result[i]:= Text; SetLength(Text, 0) end;
Until Length(Text) = 0;
End;
Procedure CompMouseMove(Sender: TObject; X, Y: Integer; Index: Integer; Area: TItemArea);
Begin
if (Index < 0) or (Index + 1 > GetArrayLength(CompHints)) then Info.Caption:= ExpandConstant('{cm:desc}') else Info.Caption:= CompHints[Index]
End;
procedure InitializeWizard();
begin
WizardForm.ComponentsList.Height := ScaleY(181) - WizardForm.TypesCombo.Top - WizardForm.TypesCombo.Height;
WizardForm.ComponentsList.Top := WizardForm.TypesCombo.Top+24;
WizardForm.ComponentsList.Width := ScaleX(417);
InfoPanel := TPanel.Create(WizardForm);
InfoPanel.Parent := WizardForm.SelectComponentsPage;
InfoPanel.Caption := '';
InfoPanel.Top := ScaleY(192);
InfoPanel.Left := ScaleX(0);
InfoPanel.Width := ScaleX(417);
InfoPanel.Height := ScaleY(40);
InfoPanel.BevelInner := bvRaised;
InfoPanel.BevelOuter := bvLowered;
InfoCaption := TNewStaticText.Create(WizardForm);
InfoCaption.Parent := WizardForm.SelectComponentsPage;
InfoCaption.Caption := 'Описание';
InfoCaption.Left := ScaleX(7);
InfoCaption.Top := InfoPanel.Top - ScaleY(6);
InfoCaption.Font.Color := clActiveCaption;
Info := TNewStaticText.Create(WizardForm);
Info.Parent := InfoPanel;
Info.AutoSize := False;
Info.Left := ScaleX(6);
Info.Width := ScaleX(403);
Info.Top := ScaleY(12);
Info.Height := ScaleY(24);
Info.WordWrap := true;
Info.Caption:= ExpandConstant('{cm:desc}')
Descriptions:=
'Основные файлы;' +
'Файлы справки;' +
'Файл readme;' +
'readme на английском;' +
'readme на русском;'
CompHints:= StringToArray(Descriptions,';')
WizardForm.ComponentsList.OnItemMouseMove:= @CompMouseMove;
end;
[/more]
Только у этого способа есть недостатки: размер списка компонентов меньше, чем стандартный и в панель описаний входит меньше текста, чем в отдельной всплывающей подсказке.