AlexS
Новичок
Доброго времени суток.
Есть проблема с показом значка(который нужно получить из файла *.exe) в TNewIconImage.
Долго уже ковыряю функции LoadIcon и LoadImage, но реализовать не получается.
Задача в следующем:
на странице есть некое количество кнопок, по нажатию которых должны запускаться определенные исполняемые файлы.
Выбираются эти исполняемые файлы через форму настроек каждой кнопки.
Так вот, настраивая исполняемый файл кнопки, после выбора файла необходимо показать значок этого исполняемого файла рядом с кнопкой его запуска.
Прошу помощи, никак не разберусь с этими функциями...
Есть проблема с показом значка(который нужно получить из файла *.exe) в TNewIconImage.
Долго уже ковыряю функции LoadIcon и LoadImage, но реализовать не получается.
Задача в следующем:
на странице есть некое количество кнопок, по нажатию которых должны запускаться определенные исполняемые файлы.
Выбираются эти исполняемые файлы через форму настроек каждой кнопки.
Так вот, настраивая исполняемый файл кнопки, после выбора файла необходимо показать значок этого исполняемого файла рядом с кнопкой его запуска.
Прошу помощи, никак не разберусь с этими функциями...
Код:
[Setup]
AppName=Моя программа
AppVersion=1.0
DefaultDirName={pf}\Моя программа
DisableWelcomePage=yes
;[Files]
;DestName: "IconImage.ico"; Source: "Icon.ico"; Flags: dontcopy solidbreak
[code]
var
ToolsPage: TWizardPage;
AddProgForm: TSetupForm;
OKButton, CancelButton, BrowseButton: TNewButton;
BrowseEdit, NameEdit: TNewEdit;
ProgBtn: array[0..7] of TNewButton;
IconImg: array[0..7] of TNewIconImage;
SettingBtn: array[0..7] of TNewButton;
i: Integer;
procedure CancelButtonClick(CurPageID: Integer; var Cancel, Confirm: Boolean);
begin
Confirm:=false;
end;
procedure FileChoose(Sender: TObject);
var
SelFileNameStr: String;
begin
if GetOpenFileName('', SelFileNameStr, ExpandConstant('{src}'),
'Исполняемые файлы (*.exe;*.bat;*.cmd;*.vbs)|*.exe;*.bat;*.cmd;*.vbs|Все файлы (*.*)|*.*', 'exe') then
BrowseEdit.Text:= SelFileNameStr;
end;
procedure ShowCustomForm(Sender: TObject);
begin
AddProgForm := CreateCustomForm();
try
AddProgForm.BorderStyle := bsDialog;
AddProgForm.ClientWidth := ScaleX(380);
AddProgForm.ClientHeight := ScaleY(337);
AddProgForm.Caption := 'Настройка';
AddProgForm.CenterInsideControl(WizardForm, False);
OKButton := TNewButton.Create(AddProgForm);
OKButton.Parent := AddProgForm;
OKButton.SetBounds(ScaleX(205),ScaleY(305),ScaleX(75),ScaleY(23));
OKButton.Caption := SetupMessage(msgButtonOK);
OKButton.ModalResult:= mrOk;
CancelButton := TNewButton.Create(AddProgForm);
CancelButton.Parent := AddProgForm;
CancelButton.SetBounds(ScaleX(290),ScaleY(305),ScaleX(75),ScaleY(23));
CancelButton.Caption := SetupMessage(msgButtonCancel);
CancelButton.ModalResult := mrCancel;
BrowseButton := TNewButton.Create(AddProgForm);
BrowseButton.Parent := AddProgForm;
BrowseButton.SetBounds(ScaleX(290),ScaleY(35),ScaleX(75),ScaleY(22));
BrowseButton.Caption := SetupMessage(msgButtonBrowse);
BrowseButton.OnClick := @FileChoose;
BrowseEdit:= TNewEdit.Create(AddProgForm);
BrowseEdit.SetBounds(ScaleX(15),ScaleY(36),ScaleX(265),ScaleY(30));
BrowseEdit.AutoSelect:=False;
BrowseEdit.Parent:= AddProgForm;
NameEdit:= TNewEdit.Create(AddProgForm);
NameEdit.SetBounds(ScaleX(15),ScaleY(66),ScaleX(350),ScaleY(30));
NameEdit.AutoSelect:=False;
NameEdit.Parent:= AddProgForm;
if AddProgForm.ShowModal() = mrOk then
AddProgForm.Close;
//ProgBtn[0].Caption := NameEdit.Text;
finally
AddProgForm.Free();
end;
end;
procedure InitializeWizard();
begin
begin
WizardForm.Caption := '';
WizardForm.MainPanel.Hide;
WizardForm.InnerPage.Color := $00ffffff;
WizardForm.BorderStyle := bsDialog;
WizardForm.ClientHeight := ScaleY(360);
WizardForm.ClientWidth := ScaleX(500);
WizardForm.OuterNotebook.Width := ScaleX(500);
WizardForm.OuterNotebook.Height := ScaleY(360);
WizardForm.InnerNotebook.SetBounds(ScaleX(0),ScaleY(0),ScaleX(500),ScaleY(500));
end;
begin
ToolsPage := CreateCustomPage(wpWelcome, '', '');
end;
//******************\\
for i:=0 to 7 do begin
SettingBtn[i]:=TNewButton.Create(nil);
with SettingBtn[i] do begin
SetBounds(ScaleX(464), ScaleY(110+30*i), ScaleX(25), ScaleY(25));
Parent:=ToolsPage.Surface;
Caption := '...';
OnClick:=@ShowCustomForm;
end;
end;
//******************\\
for i:=0 to 7 do begin
ProgBtn[i]:=TNewButton.Create(nil);
with ProgBtn[i] do begin
SetBounds(ScaleX(45), ScaleY(110+30*i), ScaleX(411), ScaleY(25));
Parent:=ToolsPage.Surface;
Caption :='Кнопка' + #32 + IntToStr(i);
end;
end;
//******************\\
for i:=0 to 7 do begin
IconImg[i]:=TNewIconImage.Create(nil);
with IconImg[i] do begin
SetBounds(ScaleX(10), ScaleY(110+30*i), ScaleX(25), ScaleY(25));
Parent:=ToolsPage.Surface;
// ExtractTemporaryFile('IconImage.ico');
// Icon.LoadFromFile(ExpandConstant('{tmp}\IconImage.ico'));
end;
end;
end;