Вопрос Как сделать свою форму выбора папки установки

malcolmfreeman

Мимокрокодил
Всем привет.
Нужно сделать чтоб была своя форма выбора папки установки.

путь в edit берется из #define MyApp, и чтоб можно было выбрать кнопкой Button папку куда устанавливать.

Код:
Всем привет.
Нужно сделать чтоб была своя форма выбора папки установки.

путь в edit берется из #define MyApp, и чтоб можно было выбрать кнопкой Button папку куда устанавливать.

#define MyApp "{pf}\My Prog"

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program
OutputDir=.
SolidCompression=yes
ChangesAssociations=true


[Files]
Source: compiler:Examples\MyProg.exe; DestDir: {app}; Flags: ignoreversion


[*Code]
var
ISCP: TWizardPage;
Edit: TNewEdit;
Button: TNewButton;

procedure EditChange(Sender: TObject);
begin
{#MyAppName}
end;

procedure RedesignWizardForm;
begin
{ Creates custom wizard page }
ISCP := CreateCustomPage(wpSelectDir, 'ISCP_Caption', 'ISCP_Description');

{ Edit }
Edit := TNewEdit.Create(WizardForm);
with Edit do
begin
Parent := ISCP.Surface;
Left := ScaleX(8);
Top := ScaleY(104);
Width := ScaleX(313);
Height := ScaleY(21);
Text := 'Edit';
OnChange := @EditChange;
end;

{ Button }
Button := TNewButton.Create(WizardForm);
with Button do
begin
Parent := ISCP.Surface;
Left := ScaleX(328);
Top := ScaleY(104);
Width := ScaleX(75);
Height := ScaleY(25);
Caption := 'Button';
OnClick := @EditChange;
end;
end;


procedure InitializeWizard();
begin
RedesignWizardForm;
end;
 

malcolmfreeman

Мимокрокодил
Nemko, Спасибо, пример видел, но ладу не могу дать как к своей TNewEdit прикрутить, у меня когда то был шаблон, но потерял, там стандартный только выбор папки был а не как в примере который ты дал, пожалуйста помоги.
 

Nemko

Дилетант
Модератор
malcolmfreeman, извините "моя твоя не совсем понял", так что ли:

Код:
#define AppName "My Prog"
#define AppDirectory "{pf}"

[Setup]
AppVersion=1.5
AppName={#AppName}
DefaultDirName={#AppName}
ChangesAssociations=true
SolidCompression=yes
OutputDir=.

[Code]
var
  ISCP: TWizardPage;
  Edit: TNewEdit;
  Button: TNewButton;

procedure EditChange(Sender: TObject);
begin
case Sender of
  Edit: WizardForm.DirEdit.Text:=Edit.Text;
  Button: WizardForm.DirBrowseButton.OnClick(nil);
  WizardForm.DirEdit: Edit.Text:=WizardForm.DirEdit.Text;
 end;
end;

procedure InitializeWizard;
begin
ISCP:=CreateCustomPage(wpWelcome, 'ISCP_Caption', 'ISCP_Description');
Edit:=TNewEdit.Create(WizardForm);
with Edit do begin
  Parent:=ISCP.Surface;
  SetBounds(ScaleX(8), ScaleY(104), ScaleX(313), ScaleY(21));
  Text:=AddBackslash(ExpandConstant('{#AppDirectory}'))+'{#AppName}';
  OnChange:=@EditChange;
end;

Button:=TNewButton.Create(WizardForm);
with Button do begin
  Parent:=ISCP.Surface;
  SetBounds(ScaleX(328), ScaleY(103), ScaleX(80), ScaleY(23));
  Caption:=WizardForm.DirBrowseButton.Caption;
  OnClick:=@EditChange;

  WizardForm.DirEdit.Text:=AddBackslash(ExpandConstant('{#AppDirectory}'))+'{#AppName}';
  WizardForm.DirEdit.OnChange:=@EditChange;
 end;
end;
 
Последнее редактирование:

ZVSRus

Участник
Nemko, Доброго времени суток.
Попутный вопрос, как что либо разместить на стандартном диалоговом окне Обзор папок.
Точнее как называется стандартная процедура или функция для данного окна
 

Nemko

Дилетант
Модератор
ZVSRus, мне кажется, но по моему интерпретация данного окна происходит из самого InnoSetup, то бишь эта встроено в саму программу. Поэтому для изменения внешнего вида, люди создают окно сами. А обработка события скорее всего происходит во встроенном DirBrowseButtonClick.

malcolmfreeman, рад слышать.
 

Xabib2302

Новичок
Доброе время суток. Попутный вопрос. Как изменить дерево папок как у NSIS?
 

Xabib2302

Новичок
thebig1825, я просил как изменить вид дерева папок как у nsis. т.е. чтобы сразу можно было выбрать каталог рабочего стола. а вы мне что ответили?
 

Nemko

Дилетант
Модератор
Xabib2302, можно попробовать так, но не знаю как контролировать размер окна:

Код:
#define AppName "My Application"

[Setup]
AppName={#AppName}
AppVersion=1.5
DefaultDirName={sd}\{#AppName}

[Code]
procedure DirOnClick(Sender: TObject);
var
  res: Boolean;
  UserSelectDir: String;
begin
UserSelectDir:=WizardForm.DirEdit.Text;
res:=BrowseForFolder('Выберите папку для установки', UserSelectDir, True);
if res then
  begin
    WizardForm.DirEdit.Text:=AddBackslash(UserSelectDir)+AddBackslash('{#AppName}');
  end;
end;

procedure InitializeWizard;
begin
with WizardForm.DirBrowseButton do
begin
  OnClick:=@DirOnClick;
 end;
end;
 
Сверху