[code]
Код:

type
TComponentDesc = record
Description: String;
ImageName: String;
Index: Integer;
end;
var
CompDescs: array of TComponentDesc;
CompDescPanel, CompDescImgPanel: TPanel;
CompDescText: array[1..2] of TLabel;
CompIndex, LastIndex: Integer;
CompDescImg: TBitmapImage;
ExecButton: TNewButton;
Procedure ExecButtonOnClick(Sender: TObject);
var
ResCode: Integer;
begin
Exec(ExpandConstant('Catalog.exe'), '', '', SW_SHOW, ewNoWait, ResCode);
end;
procedure ShowCompDescription(Sender: TObject; X, Y, Index: Integer; Area: TItemArea);
var
i: Integer;
begin
if Index = LastIndex then Exit;
CompIndex := -1;
for i := 0 to GetArrayLength(CompDescs) -1 do
begin
if (CompDescs[i].Index = Index) then
begin
CompIndex := i;
Break;
end;
end;
if (CompIndex >= 0) and (Area = iaItem) then
begin
if not FileExists(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName) then
ExtractTemporaryFile(CompDescs[CompIndex].ImageName);
CompDescImg.Bitmap.LoadFromFile(ExpandConstant('{tmp}\') + CompDescs[CompIndex].ImageName);
CompDescImg.Show;
CompDescText[2].Caption := CompDescs[CompIndex].Description;
CompDescText[2].Enabled := True;
end else
begin
CompDescText[2].Caption := CustomMessage('ComponentsInfo');
CompDescText[2].Enabled := False;
CompDescImg.Hide;
end;
LastIndex := Index;
end;
procedure CompListMouseLeave(Sender: TObject);
begin
CompDescImg.Hide;
CompDescText[2].Caption := CustomMessage('ComponentsInfo');
CompDescText[2].Enabled := False;
LastIndex := -1;
end;
procedure AddCompDescription(AIndex: Integer; ADescription: String; AImageName: String);
var
i: Integer;
begin
i := GetArrayLength(CompDescs);
SetArrayLength(CompDescs, i + 1);
CompDescs[i].Description := ADescription;
CompDescs[i].ImageName := AImageName;
CompDescs[i].Index := AIndex - 1
end;
procedure InitializeWizard();
begin
ExecButton := TNewButton.Create(WizardForm);
with ExecButton do
begin
Parent := WizardForm;
SetBounds(ScaleX(89), ScaleY(WizardForm.ComponentsList.Height + 105), ScaleX(60), ScaleY(22));
Caption := 'Каталог';
OnClick := @ExecButtonOnClick;
begin
WizardForm.SelectComponentsLabel.Hide;
WizardForm.TypesCombo.Hide;
WizardForm.ComponentsList.SetBounds(ScaleX(0), ScaleY(0), ScaleX(160), ScaleY(185));
WizardForm.ComponentsList.Color := $00ffffff;
WizardForm.ComponentsList.OnItemMouseMove:= @ShowCompDescription;
WizardForm.ComponentsList.OnMouseLeave := @CompListMouseLeave;
CompDescImgPanel := TPanel.Create(WizardForm);
with CompDescImgPanel do
begin
Parent := WizardForm.SelectComponentsPage;
SetBounds(ScaleX(180), ScaleY(0), ScaleX(225), ScaleY(120));
BevelInner := bvLowered;
end;
end;
end;
CompDescText[1] := TLabel.Create(WizardForm);
with CompDescText[1] do
begin
Parent := CompDescImgPanel;
SetBounds(ScaleX(5), ScaleY(5), CompDescImgPanel.Width - ScaleX(10), CompDescImgPanel.Height - ScaleY(10));
AutoSize := False;
WordWrap := True;
Enabled := False;
Caption := CustomMessage('ComponentsImgInfo');
end;
CompDescImg := TBitmapImage.Create(WizardForm);
with CompDescImg do
begin
Parent := CompDescImgPanel;
SetBounds(ScaleX(5), ScaleY(5), CompDescImgPanel.Width - ScaleX(10), CompDescImgPanel.Height - ScaleY(10));
Stretch := True;
Hide;
end;
CompDescPanel := TPanel.Create(WizardForm);
with CompDescPanel do
begin
Parent := WizardForm.SelectComponentsPage;
SetBounds(ScaleX(180), ScaleY(125), ScaleX(225), ScaleY(80));
BevelInner := bvLowered;
end;
CompDescText[2] := TLabel.Create(WizardForm);
with CompDescText[2] do
begin
Parent := CompDescPanel;
SetBounds(ScaleX(5), ScaleY(5), CompDescPanel.Width - ScaleX(10), CompDescPanel.Height - ScaleY(10));
AutoSize := False;
WordWrap := True;
Enabled := False;
Caption := CustomMessage('ComponentsInfo');
Font.Color := clActiveCaption;
end;
AddCompDescription(1, CustomMessage('CompDesc1'), 'CompDescImg1.bmp');
AddCompDescription(2, CustomMessage('CompDesc2'), 'CompDescImg2.bmp');
end;
Procedure CurPageChanged(CurPageID: Integer);
begin
ExecButton.Hide;
case CurPageID of
wpSelectComponents: ExecButton.Show;
end;
end;