Вопрос Скрыть\показать кнопки

Awalder

Новичок
Доброго времени! Подскажите, каким образом можно скрыть\показать группу кнопок (на ботве) используя для этого другую (отдельную, родительскую...) кнопку? Можно ли сделать две и более таких независимых друг от друга группы, с управлением от "своих" кнопок, при этом чтобы активируя одну группу - закрывалась другая и наоборот. Видел что то подобное в примере на ботве, там с помощью кнопки скрывается\показывается чеклистбокс. Спасибо!
 

SBalykov

Старожил
Доброго времени! Подскажите, каким образом можно скрыть\показать группу кнопок (на ботве) используя для этого другую (отдельную, родительскую...) кнопку? Можно ли сделать две и более таких независимых друг от друга группы, с управлением от "своих" кнопок, при этом чтобы активируя одну группу - закрывалась другая и наоборот. Видел что то подобное в примере на ботве, там с помощью кнопки скрывается\показывается чеклистбокс. Спасибо!
Можно создать процедуру:
Код:
[code]
var
Button : array [0..4] of HWND;

procedure ChangeButton(hBtn: HWND);
begin
if BtnGetChecked(Button[0]) then begin
   BtnSetVisibility(Button[1], True);
   BtnSetVisibility(Button[2], True);
   BtnSetVisibility(Button[3], False);
   BtnSetVisibility(Button[4], False)
   end else begin
   BtnSetVisibility(Button[1], False);
   BtnSetVisibility(Button[2], False)
   BtnSetVisibility(Button[3], True);
   BtnSetVisibility(Button[4], True);
   end;
end;

...
   BtnSetEvent(Button[0], 1, CallbackAddr('ChangeButton'));
...
 

Avengerz13

Участник
Допустим, создаем наши кнопки на botva2
Код:
var
Main1, Main2, Main3: HWND; // это главные кнопки
Sub1, Sub2, Sub3: HWND; // эти кнопки будут отображаться при клике на Main1
Sub4, Sub5, Sub6: HWND; // эти кнопки будут отображаться при клике на Main2
// а Main3 будет скрывать всё
Создаем процедуру для этих кнопок, чего они должны делать.
Код:
procedure Main1Click(h:HWND); // процедура для Main1
begin
 BtnSetVisibility(Sub1,True);  // BtnSetVisibility - что бы кнопка скрывалась или показывалась
 BtnSetVisibility(Sub2,True);
 BtnSetVisibility(Sub3,True);
 BtnSetVisibility(Sub4,False);  
 BtnSetVisibility(Sub5,False);
 BtnSetVisibility(Sub6,False);
 ImgSetVisibility(Something,True); // то же самое что и BtnSetVisibility только для картинок
 Label.Show; // Например можно не только кнопки отображать 
 ImgApplyChanges(WizardForm.Handle);
end;

procedure Main2Click(h:HWND); // процедура для Main2
begin
 BtnSetVisibility(Sub1,False);  
 BtnSetVisibility(Sub2,False);
 BtnSetVisibility(Sub3,False);
 BtnSetVisibility(Sub4,True);  
 BtnSetVisibility(Sub5,True);
 BtnSetVisibility(Sub6,False);
 ImgApplyChanges(WizardForm.Handle);
end;

procedure Main3Click(h:HWND); // процедура для Main3
begin
 BtnSetVisibility(Sub1,False);  
 BtnSetVisibility(Sub2,False);
 BtnSetVisibility(Sub3,False);
 BtnSetVisibility(Sub4,False);  
 BtnSetVisibility(Sub5,False);
 BtnSetVisibility(Sub6,False);
 ImgApplyChanges(WizardForm.Handle);
end;
Код:
// пишем обычный код кнопок
 Main1:=BtnCreate(WizardForm.Handle,ScaleX(100),ScaleY(100ScaleX(100),ScaleY(100),ExpandConstant('{tmp}\Buttons.png'),1,False)
 BtnSetEvent(Main1,BtnClickEventID,WrapBtnCallback(@Main1Click,1));

 Main2:=BtnCreate(WizardForm.Handle,ScaleX(100),ScaleY(100),ScaleX(100),ScaleY(100),ExpandConstant('{tmp}\Buttons.png'),1,False)
 BtnSetEvent(Main2,BtnClickEventID,WrapBtnCallback(@Main2Click,1));

 Main3:=BtnCreate(WizardForm.Handle,ScaleX(100),ScaleY(100),ScaleX(100),ScaleY(100),ExpandConstant('{tmp}\Buttons.png'),1,False)
 BtnSetEvent(Main3,BtnClickEventID,WrapBtnCallback(@Main3Click,1));
// и так далее для остальных кнопок
Код:
procedure CurPageChanged(CurPageID: Integer); // здесь указываем что бы кнопки изначально были скрыты
 begin                                            
 BtnSetVisibility(Sub1,False);  
 BtnSetVisibility(Sub2,False);
 BtnSetVisibility(Sub3,False);
 BtnSetVisibility(Sub4,False);  
 BtnSetVisibility(Sub5,False);
 BtnSetVisibility(Sub6,False);
end;
 

Awalder

Новичок
Допустим, создаем наши кнопки на botva2
Код:
var
Main1, Main2, Main3: HWND; // это главные кнопки
Sub1, Sub2, Sub3: HWND; // эти кнопки будут отображаться при клике на Main1
Sub4, Sub5, Sub6: HWND; // эти кнопки будут отображаться при клике на Main2
// а Main3 будет скрывать всё
Создаем процедуру для этих кнопок, чего они должны делать.
Код:
procedure Main1Click(h:HWND); // процедура для Main1
begin
BtnSetVisibility(Sub1,True);  // BtnSetVisibility - что бы кнопка скрывалась или показывалась
BtnSetVisibility(Sub2,True);
BtnSetVisibility(Sub3,True);
BtnSetVisibility(Sub4,False);
BtnSetVisibility(Sub5,False);
BtnSetVisibility(Sub6,False);
ImgSetVisibility(Something,True); // то же самое что и BtnSetVisibility только для картинок
Label.Show; // Например можно не только кнопки отображать
ImgApplyChanges(WizardForm.Handle);
end;

procedure Main2Click(h:HWND); // процедура для Main2
begin
BtnSetVisibility(Sub1,False);
BtnSetVisibility(Sub2,False);
BtnSetVisibility(Sub3,False);
BtnSetVisibility(Sub4,True);
BtnSetVisibility(Sub5,True);
BtnSetVisibility(Sub6,False);
ImgApplyChanges(WizardForm.Handle);
end;

procedure Main3Click(h:HWND); // процедура для Main3
begin
BtnSetVisibility(Sub1,False);
BtnSetVisibility(Sub2,False);
BtnSetVisibility(Sub3,False);
BtnSetVisibility(Sub4,False);
BtnSetVisibility(Sub5,False);
BtnSetVisibility(Sub6,False);
ImgApplyChanges(WizardForm.Handle);
end;
Код:
// пишем обычный код кнопок
Main1:=BtnCreate(WizardForm.Handle,ScaleX(100),ScaleY(100ScaleX(100),ScaleY(100),ExpandConstant('{tmp}\Buttons.png'),1,False)
BtnSetEvent(Main1,BtnClickEventID,WrapBtnCallback(@Main1Click,1));

Main2:=BtnCreate(WizardForm.Handle,ScaleX(100),ScaleY(100),ScaleX(100),ScaleY(100),ExpandConstant('{tmp}\Buttons.png'),1,False)
BtnSetEvent(Main2,BtnClickEventID,WrapBtnCallback(@Main2Click,1));

Main3:=BtnCreate(WizardForm.Handle,ScaleX(100),ScaleY(100),ScaleX(100),ScaleY(100),ExpandConstant('{tmp}\Buttons.png'),1,False)
BtnSetEvent(Main3,BtnClickEventID,WrapBtnCallback(@Main3Click,1));
// и так далее для остальных кнопок
Код:
procedure CurPageChanged(CurPageID: Integer); // здесь указываем что бы кнопки изначально были скрыты
begin                                         
BtnSetVisibility(Sub1,False);
BtnSetVisibility(Sub2,False);
BtnSetVisibility(Sub3,False);
BtnSetVisibility(Sub4,False);
BtnSetVisibility(Sub5,False);
BtnSetVisibility(Sub6,False);
end;
Доброго времени суток! Большое спасибо за пример, отлично работает. Вопрос - как можно использовать здесь функцию BtnSetChecked? То есть хотел бы сделать "проверку" состояния кнопок. например при запуске инсталлятора - если рядом "видит" файл 1.txt, то кнопка 1 недоступна, если файла 1.txt нет, но видит файл 2.txt - то соответственно кнопка 1 доступна, а кн2 нет. И какие кнопки для этого нужно рисовать - для 4 положений или 8?
Я разобрался как сделать, чтобы во время "работы" инсталла кнопки переключались:
procedure Ui2Click(hBtn: HWND);
var
Res: Integer;
begin
sndPlaySound(ExpandConstant('{tmp}\click.wav'), $0001);
BtnSetEnabled(Ui1, True)
BtnSetEnabled(Ui3, True)
BtnSetEnabled(Ui2, False)
end;
но как сделать проверку кнопки с поиском файла, чего то не могу сообразить )))
Спасибо
 
Последнее редактирование:

SBalykov

Старожил
Доброго времени суток! Большое спасибо за пример, отлично работает. Вопрос - как можно использовать здесь функцию BtnGetChecked? То есть хотел бы сделать "проверку" состояния кнопок. например при запуске инсталлятора - если рядом "видит" файл 1.txt, то кнопка 1 недоступна, если файла 1.txt нет, но видит файл 2.txt - то соответственно кнопка 1 доступна, а кн2 нет. И какие кнопки для этого нужно рисовать - для 4 положений или 8?
Я разобрался как сделать, чтобы во время "работы" инсталла кнопки переключались:
procedure Ui2Click(hBtn: HWND);
var
Res: Integer;
begin
sndPlaySound(ExpandConstant('{tmp}\click.wav'), $0001);
BtnSetEnabled(Ui1, True)
BtnSetEnabled(Ui3, True)
BtnSetEnabled(Ui2, False)
end;
но как сделать проверку кнопки с поиском файла, чего то не могу сообразить )))
Спасибо
Есть такая функция "FileExists":
Прототип функции
int FileExists(str)
Описание
Возвращает значение отличное от нуля, если указанный файл существует.
Можно сделать примерно так ...
Код:
[code]
if FileExists(ExpandConstant('{app}\1.txt')) then
BtnSetEnabled(Ui1, False) else BtnSetEnabled(Ui1, True);
if FileExists(ExpandConstant('{app}\2.txt')) then
BtnSetEnabled(Ui2, False) else BtnSetEnabled(Ui2, True);
 

Awalder

Новичок
Есть такая функция "FileExists":
Прототип функции
int FileExists(str)
Описание
Возвращает значение отличное от нуля, если указанный файл существует.
Можно сделать примерно так ...
Код:
[code]
if FileExists(ExpandConstant('{app}\1.txt')) then
BtnSetEnabled(Ui1, False) else BtnSetEnabled(Ui1, True);
if FileExists(ExpandConstant('{app}\2.txt')) then
BtnSetEnabled(Ui2, False) else BtnSetEnabled(Ui2, True);
Как раз читаю это в примере к ботве, не пойму как это должно быть полностью:
Ui1 := BtnCreate(WizardForm.Handle, ScaleX(307), ScaleY(460), ScaleX(278), ScaleY(37), ExpandConstant('{tmp}\Buttons.png'), 0, False);
begin
if not FileExists(FileName ) then begin /// Здесь получается мне указать?
BtnSetEvent(Ui1, BtnClickEventID, WrapBtnCallback(@Ui1Click, 1));
BtnSetFontColor(Ui1, $ffffff, $ffffff, $ffffff, $ffffff);
BtnSetText(Ui1, ('Стандартное меню'));
BtnSetFont(Ui1, Font1.Handle);
BtnSetCursor(Ui1, GetSysCursorHandle(32649));
 

zavul0n

Новичок
Awalder, можно избавиться от лишнего кода в процедуре вынеся функцию проверки в общий скрипт. Например:
Код:
function CheckTxt1: boolean; begin if FileExists(ExpandConstant('{app}\1.txt') then Result:= True; end;
function CheckTxt2: boolean; begin if FileExists(ExpandConstant('{app}\2.txt') then Result:= True; end;
function CheckTxt3: boolean; begin if FileExists(ExpandConstant('{app}\3.txt') then Result:= True; end;
Потом в процедуре InitializeWizard (или в своей) вызываешь проверку.
Код:
if CheckTxt1 then BtnSetEnabled(Ui1, False) else BtnSetEnabled(Ui1, True);
if CheckTxt2 then BtnSetEnabled(Ui2, False) else BtnSetEnabled(Ui2, True);
if CheckTxt3 then BtnSetEnabled(Ui3, False) else BtnSetEnabled(Ui3, True);
 

SBalykov

Старожил
Как раз читаю это в примере к ботве, не пойму как это должно быть полностью:
Ui1 := BtnCreate(WizardForm.Handle, ScaleX(307), ScaleY(460), ScaleX(278), ScaleY(37), ExpandConstant('{tmp}\Buttons.png'), 0, False);
begin
if not FileExists(FileName ) then begin /// Здесь получается мне указать?
BtnSetEvent(Ui1, BtnClickEventID, WrapBtnCallback(@Ui1Click, 1));
BtnSetFontColor(Ui1, $ffffff, $ffffff, $ffffff, $ffffff);
BtnSetText(Ui1, ('Стандартное меню'));
BtnSetFont(Ui1, Font1.Handle);
BtnSetCursor(Ui1, GetSysCursorHandle(32649));
Как-то так ...
Код:
[code]
procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpWellcome: begin
if FileExists(ExpandConstant('{app}\1.txt')) then
BtnSetEnabled(Ui1, False) else BtnSetEnabled(Ui1, True);
if FileExists(ExpandConstant('{app}\2.txt')) then
BtnSetEnabled(Ui2, False) else BtnSetEnabled(Ui2, True);
end;
end;
end;
 

Awalder

Новичок
Awalder, можно избавиться от лишнего кода в процедуре вынеся функцию проверки в общий скрипт. Например:
Код:
function CheckTxt1: boolean; begin if FileExists(ExpandConstant('{app}\1.txt') then Result:= True; end;
function CheckTxt2: boolean; begin if FileExists(ExpandConstant('{app}\2.txt') then Result:= True; end;
function CheckTxt3: boolean; begin if FileExists(ExpandConstant('{app}\3.txt') then Result:= True; end;
Потом в процедуре InitializeWizard (или в своей) вызываешь проверку.
Код:
if CheckTxt1 then BtnSetEnabled(Ui1, False) else BtnSetEnabled(Ui1, True);
if CheckTxt2 then BtnSetEnabled(Ui2, False) else BtnSetEnabled(Ui2, True);
if CheckTxt3 then BtnSetEnabled(Ui3, False) else BtnSetEnabled(Ui3, True);
Почему то Ваш пример не смог скомпилить, нашёл решение, на основе варианта от SBalykov -

procedure CurPageChanged(CurPageID: Integer);
begin
BtnSetEnabled(Ui1,not FileExists(ExpandConstant('{src}\1.txt')) );
BtnSetEnabled(Ui2,not FileExists(ExpandConstant('{src}\2.txt')) );
BtnSetEnabled(Ui3,not FileExists(ExpandConstant('{src}\3.txt')) );
 
Последнее редактирование:

Awalder

Новичок
Подскажите, возможно ли на клик кнопки "прикрутить" функцию CopyDir от модуля SHFileOperation.iss ? НЕ знаю, правильно ли выразился - нажатием кнопки скопировать папку с подпапками и файлами целиком в другую директорию или в несуществующую. Использовать FileCopy затруднительно
 
Последнее редактирование:

SBalykov

Старожил
Подскажите, возможно ли на клик кнопки "прикрутить" функцию CopyDir от модуля SHFileOperation.iss ? НЕ знаю, правильно ли выразился - нажатием кнопки скопировать папку с подпапками и файлами целиком в другую директорию или в несуществующую. Использовать FileCopy затруднительно
То же самое. Создаете кнопку (н.п. "CopyDirButton), процедуру ее использования и
Код:
procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpInstalling : begin
if BtnGetChecked(CopyDirButton) then
CopyDir(ExpandConstant('{app}\game'), ExpandConstant('{app}\game_Backup'));
end;
end;
end;
 

Awalder

Новичок
То же самое. Создаете кнопку (н.п. "CopyDirButton), процедуру ее использования и
Код:
[spoiler]
Code
procedure CurPageChanged(CurPageID: Integer);
begin
case CurPageID of
wpInstalling : begin
if BtnGetChecked(CopyDirButton) then
CopyDir(ExpandConstant('{app}\game'), ExpandConstant('{app}\game_Backup'));
end;
end;
end;
Этот вариант наверное не подойдёт, мне бы на эту функцию ниже - копирование папки задействовать :
сейчас код очень громоздкий, это только 1 кнопка))

procedure Ui1Click(hBtn: HWND);
var
Res: Integer;
begin
sndPlaySound(ExpandConstant('{tmp}\click.wav'), $0001);
BtnSetEnabled(Ui2, True)
BtnSetEnabled(Ui3, True)
BtnSetEnabled(Ui1, False)
DeleteFile(ExpandConstant('{src}\MultiTools\2.txt'));
DeleteFile(ExpandConstant('{src}\MultiTools\3.txt'));
DeleteFile(ExpandConstant('{src}\data\uiarmybanners.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uicommandpanelnew.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uicommandpanelnewmin.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uihomecitycommandpanel.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uihomecitydeck.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uihomecitytransportpanelheader.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uimainnew.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uiminimappanelnew.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uiminimappanelnewmin.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uinativecommandpanel2.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uinativecommandpanel2min.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uiplayersummarydlg.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uipostgamescreen.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uitraderoutepanel2.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uitraderoutepanel2min.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uitrainsandcontains.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uitrainsandcontainsmin.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uiunitselection.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uiunitselectionmin.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uiunitstatpanel3.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uiunitstatpanel3min.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uiunittrainingpanel.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uiunittrainingpanelmin.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uiwonderpowerpanel.xml.xmb'));
DeleteFile(ExpandConstant('{src}\data\uiwonderpowerpanelmin.xml.xmb'));

DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_all_active.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_all_active_ypack.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_all_depressed.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_all_depressed_ypack.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_all_normal.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_all_normal_ypack.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_econ_active.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_econ_active_ypack.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_econ_depressed.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_econ_depressed_ypack.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_econ_normal.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_econ_normal_ypack.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_military_active.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_military_active_ypack.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_military_depressed.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_military_depressed_ypack.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_military_normal.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\ingame_minimap_military_normal_ypack.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\Resource.ddt'));
DeleteFile(ExpandConstant('{src}\art\ui\ingame\Select.ddt'));

ForceDirectories(ExpandConstant('{src}\art\ui\ingame'));
FileCopy(ExpandConstant('{src}\MultiTools\Markers\1.txt'), ExpandConstant('{src}\MultiTools\1.txt'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_all_active_ypack.(0,1,8,1).tga'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_all_active_ypack.(0,1,8,1).tga'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_all_active_ypack.ddt'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_all_active_ypack.ddt'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_all_depressed_ypack.(0,1,8,1).tga'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_all_depressed_ypack.(0,1,8,1).tga'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_all_depressed_ypack.ddt'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_all_depressed_ypack.ddt'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_all_normal_ypack.(0,1,8,1).tga'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_all_normal_ypack.(0,1,8,1).tga'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_all_normal_ypack.ddt'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_all_normal_ypack.ddt'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_econ_active_ypack.(0,1,8,1).tga'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_econ_active_ypack.(0,1,8,1).tga'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_econ_active_ypack.ddt'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_econ_active_ypack.ddt'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_econ_depressed_ypack.ddt'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_econ_depressed_ypack.ddt'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_econ_normal_ypack.(0,1,8,1).tga'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_econ_normal_ypack.(0,1,8,1).tga'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_econ_normal_ypack.ddt'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_econ_normal_ypack.ddt'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_military_active_ypack.(0,1,8,1).tga'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_military_active_ypack.(0,1,8,1).tga'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_military_active_ypack.ddt'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_military_active_ypack.ddt'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_military_depressed_ypack.(0,1,8,1).tga'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_military_depressed_ypack.(0,1,8,1).tga'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_military_depressed_ypack.ddt'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_military_depressed_ypack.ddt'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_military_normal_ypack.(0,1,8,1).tga'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_military_normal_ypack.(0,1,8,1).tga'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_minimap_military_normal_ypack.ddt'), ExpandConstant('{src}\art\ui\ingame\ingame_minimap_military_normal_ypack.ddt'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\ingame_ui_small_02.ddt'), ExpandConstant('{src}\art\ui\ingame\ingame_ui_small_02.ddt'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\Resource.(0,4,8,1).tga'), ExpandConstant('{src}\art\ui\ingame\Resource.(0,4,8,1).tga'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\art\ui\ingame\Resource.ddt'), ExpandConstant('{src}\art\ui\ingame\Resource.ddt'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uiarmybanners.xml'), ExpandConstant('{src}\data\uiarmybanners.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uicommandpanelnew.xml'), ExpandConstant('{src}\data\uicommandpanelnew.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uicommandpanelnewmin.xml'), ExpandConstant('{src}\data\uicommandpanelnewmin.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uihomecitycommandpanel.xml'), ExpandConstant('{src}\data\uihomecitycommandpanel.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uihomecitydeck.xml'), ExpandConstant('{src}\data\uihomecitydeck.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uihomecitytransportpanelheader.xml'), ExpandConstant('{src}\data\uihomecitytransportpanelheader.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uimainnew.xml'), ExpandConstant('{src}\data\uimainnew.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uiminimappanelnew.xml'), ExpandConstant('{src}\data\uiminimappanelnew.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uiminimappanelnewmin.xml'), ExpandConstant('{src}\data\uiminimappanelnewmin.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uinativecommandpanel2min.xml'), ExpandConstant('{src}\data\uinativecommandpanel2min.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uiplayersummarydlg.xml'), ExpandConstant('{src}\data\uiplayersummarydlg.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uitraderoutepanel2min.xml'), ExpandConstant('{src}\data\uitraderoutepanel2min.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uitrainsandcontainsmin.xml'), ExpandConstant('{src}\data\uitrainsandcontainsmin.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uiunitselection.xml'), ExpandConstant('{src}\data\uiunitselection.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uiunitselectionmin.xml'), ExpandConstant('{src}\data\uiunitselectionmin.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uiunitstatpanel3min.xml'), ExpandConstant('{src}\data\uiunitstatpanel3min.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uiunittrainingpanelmin.xml'), ExpandConstant('{src}\data\uiunittrainingpanelmin.xml'), False);
FileCopy(ExpandConstant('{src}\MultiTools\InstallFiles\James\data\uiwonderpowerpanelmin.xml'), ExpandConstant('{src}\data\uiwonderpowerpanelmin.xml'), False);
 
Последнее редактирование:

SBalykov

Старожил
Этот вариант наверное не подойдёт, мне бы на эту функцию ниже - копирование папки задействовать :
сейчас код очень громоздкий, это только 1 кнопка))[/spoiler]
А как Вы себе представляете замену файлов на диске во время установки, применяя константу {src}?
Попробуйте так:
Код:
[code]
procedure BeforeInstall1;
begin
CopyDir(ExpandConstant('{app}\MultiTools\InstallFiles\James\art\ui\ingame'), ExpandConstant('{app}\MultiTools\InstallFiles\James\art\ui\ingame_Backup'));
CopyDir(ExpandConstant('{app}\MultiTools\InstallFiles\James\data'), ExpandConstant('{app}\MultiTools\InstallFiles\James\data_Backup'));

FileCopy(ExpandConstant('{app}\MultiTools\Markers\1.txt'), ExpandConstant('{app}\MultiTools\1.txt'), False);

DeleteFile(ExpandConstant('{app}\MultiTools\2.txt'));
DeleteFile(ExpandConstant('{app}\MultiTools\3.txt'));
DeleteFile(ExpandConstant('{app}\data\uiarmybanners.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uicommandpanelnew.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uicommandpanelnewmin.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uihomecitycommandpanel.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uihomecitydeck.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uihomecitytransportpanelheader.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uimainnew.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uiminimappanelnew.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uiminimappanelnewmin.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uinativecommandpanel2.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uinativecommandpanel2min.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uiplayersummarydlg.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uipostgamescreen.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uitraderoutepanel2.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uitraderoutepanel2min.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uitrainsandcontains.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uitrainsandcontainsmin.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uiunitselection.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uiunitselectionmin.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uiunitstatpanel3.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uiunitstatpanel3min.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uiunittrainingpanel.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uiunittrainingpanelmin.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uiwonderpowerpanel.xml.xmb'));
DeleteFile(ExpandConstant('{app}\data\uiwonderpowerpanelmin.xml.xmb'));

DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_all_active.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_all_active_ypack.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_all_depressed.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_all_depressed_ypack.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_all_normal.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_all_normal_ypack.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_econ_active.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_econ_active_ypack.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_econ_depressed.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_econ_depressed_ypack.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_econ_normal.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_econ_normal_ypack.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_military_active.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_military_active_ypack.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_military_depressed.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_military_depressed_ypack.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_military_normal.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\ingame_minimap_military_normal_ypack.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\Resource.ddt'));
DeleteFile(ExpandConstant('{app}\art\ui\ingame\Select.ddt'));
end;

procedure UiButtonClick(hBtn: HWND);
begin
sndPlaySound(ExpandConstant('{tmp}\click.wav'), $0001);
  case hBtn of
  Ui1 : begin
  BtnSetChecked(Ui1, True);
  BtnSetChecked(Ui2, False);
  BtnSetChecked(Ui3, False);
  end;
  Ui2 : begin
  BtnSetChecked(Ui1, False);
  BtnSetChecked(Ui2, True);
  BtnSetChecked(Ui3, False);
  end;
  Ui3 : begin
  BtnSetChecked(Ui1, False);
  BtnSetChecked(Ui2, False);
  BtnSetChecked(Ui3, True);
  end;
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  case CurPageID of
  wpInstalling : begin
  if BtnGetChecked(Ui1) then BeforeInstall1;
...
  end;
  end;
end;
 
Последнее редактирование:
Сверху