Приветствую! Помогите пожалуйста!
Есть игра, запакованная в программу установки. Необходимо, чтобы перед последним окном (в котором есть единственная кнопка - "Завершить", и в которое через секцию [Run] можно вписать пункт запуска программы) в окне инсталлятора (не в отдельном окне!) появлялась форма ввода имени с надписью "Введите желаемое имя", и чтобы кнопка "Далее" не была доступна, пока не будет введёт хотя бы один символ, а введенное имя вписывалось в файл .ini секции [steamclient], параметр PlayerName=, т.е. введёшь в форму слово "Призрак" - и в файле .ini вписалось PlayerName=Призрак.
На прошлых страницах выкладывался скрипт, в котором я чуть подредактировал сообщения и файл, в который имя должно быть записано, однако он не подходит потому, что окно появляется уже после последнего окна установщика (о котором я писал в прошлом абзаце), а нужно, чтобы оно появлялось перед ним, и чтобы его размеры и оформление было такое же, как и у остальных окон установщика.
Кусок скрипта, секция [code]:
читать дальше »
[code]
var
Form: TSetupForm;
procedure ButtonClick(Sender: TObject);
begin
Form.Close;
end;
function GetNickName: string;
var
edt: TEdit;
begin
try
Form := CreateCustomForm;
with Form do
begin
ClientWidth := ScaleX(200);
ClientHeight := ScaleY(100);
Center;
Caption := 'Выбор имени игрока';
end;
with TLabel.Create(Form) do
begin
Parent := Form;
AutoSize := True;
Left := ScaleX(12);
Top := ScaleY(12);
Font.Size := 9;
Caption := 'Введите желаемое имя:';
end;
edt := TEdit.Create(Form);
with edt do
begin
Parent := Form;
SetBounds(ScaleX(10), ScaleY(35), Form.ClientWidth - ScaleX(20), ScaleY(17));
end;
with TButton.Create(Form) do
begin
Parent := Form;
SetBounds((Form.Width - Width) div 2, ScaleY(65), ScaleX(75), ScaleY(23));
Caption := 'OK';
OnClick := @ButtonClick;
end;
Form.ShowModal;
finally
Result := edt.Text;
Form.Free;
Form := nil;
end;
end;
procedure CurStepChanged(CurStep: TSetupStep);
begin
if CurStep = ssDone then
SetIniString('steamclient', 'PlayerName', GetNickName, ExpandConstant('{app}\rev.ini'))
end;
Также, если это возможно, то пусть под формой ввода имени будет пункт "Сохранить в UTF-8", на котором можно было бы поставить галочку, и если он выбран, то пусть введённое имя сохраняется в файл INI в кодировке UTF-8, не меняя при этом общую кодировку файла (ANSI).
Буду признателен за помощь!