Вопрос Launcher [Nick name, ip...] (Решено)

Xenium

Новичок
Всем добрый вечер, я снова с вопросами.. Просмотрел весь форум, нашел несколько похожих тем, но все же не то.
Делаю лаунчер, в котором подгружается .ini файл со своими строками.

В чем проблема - Не понимаю как сделать изменение полученных срок в ini, когда в форме в поле BtnTxtEd1.Text(string) вводим новое значение.

//Загружаем строки из .ini
Код:
function GetIniValue(const Value: String): String;
var
    IniFile: String;
begin
    IniFile := ExpandConstant('{src}\IS_Files\UX\Inno\dll\Setup.ahk');
    case Value of
        'MESSAGE_01': Result := GetIniString('Settings', 'Nickname', '', IniFile);
        'MESSAGE_02': Result := GetIniString('Settings', 'IP', '', IniFile);
        'MESSAGE_03': Result := GetIniString('Settings', 'Language', '', IniFile);
        'MESSAGE_04': Result := GetIniString('Display', 'Brightness', '', IniFile);
        'MESSAGE_05': Result := GetIniString('Display', 'VSync', '', IniFile);
        'MESSAGE_06': Result := GetIniString('Display', 'Width', '', IniFile);
        'MESSAGE_07': Result := GetIniString('Display', 'Height', '', IniFile);
        'MESSAGE_08': Result := GetIniString('Graphics', 'TextureQuality', '', IniFile);
        'MESSAGE_09': Result := GetIniString('Graphics', 'AntiAliasing', '', IniFile);
        'MESSAGE_10': Result := GetIniString('Graphics', 'Bloom', '', IniFile);
    end;
end;
Собственно, поля ввода в коде имеют следующий вид:

Код:
  BtnTxt1.FCreate(Page2.Handle);
  BtnTxt1.FontSetting('Segoe UI',12,ALWhite);
  BtnTxt1.SetBounds(35,360,80,15);
  BtnTxt1.AutoSize(true);
  BtnTxt1.TextSetting(false,Center,Center);
  BtnTxt1.Text('Enter NickName');

  BtnTxtEd1.FCreate(Page2.Handle);
  BtnTxtEd1.FontSetting('Segoe UI',12,ALWhite);
  BtnTxtEd1.SetBounds(105,360,150,55);
  BtnTxtEd1.Text(ExpandConstant('{code:GetIniValue|MESSAGE_01}'));
Так же есть функция OnChange.
//BtnTxtEd1.OnChange();

Буду рад любой помощи, особенно с примерами)
Спасибо.
 

Krinkels

Он где то тут
Администратор
Берём из ini строку и прибавляем к ней текст из BtnTxtEd1?
 

Krinkels

Он где то тут
Администратор
Ну через OnChange выводи новое значение, а при нажатии "Далее" записывай в ini
 

Xenium

Новичок
Ну через OnChange выводи новое значение, а при нажатии "Далее" записывай в ini
Ну это я понимаю.. Я не понимаю как вывести новое значение.
Т.е как мне переменной или что использовать, чтобы получить новое значение?
 

Krinkels

Он где то тут
Администратор
Пример из интернета
code_language.pascal:
var
  Page: TInputQueryWizardPage;

procedure EditChange(Sender: TObject);
begin
  Page.Values[2] := 'string' + Page.Values[0] + 'string' + Page.Values[1];
end;

procedure InitializeWizard();
begin
  Page := CreateInputQueryPage(...);

  Page.Add('Server:', False);
  Page.Add('NAME:', False);
  Page.Add('LOCATION:', False);

  Page.Values[0] := 'test0';
  Page.Values[1] := 'test1';

  Page.Edits[0].OnChange := @EditChange;
  Page.Edits[1].OnChange := @EditChange;
  { Reflect the initial values }
  EditChange(nil);
end;

u9CTh.png
 

Xenium

Новичок
Пример из интернета
code_language.pascal:
var
  Page: TInputQueryWizardPage;

procedure EditChange(Sender: TObject);
begin
  Page.Values[2] := 'string' + Page.Values[0] + 'string' + Page.Values[1];
end;

procedure InitializeWizard();
begin
  Page := CreateInputQueryPage(...);

  Page.Add('Server:', False);
  Page.Add('NAME:', False);
  Page.Add('LOCATION:', False);

  Page.Values[0] := 'test0';
  Page.Values[1] := 'test1';

  Page.Edits[0].OnChange := @EditChange;
  Page.Edits[1].OnChange := @EditChange;
  { Reflect the initial values }
  EditChange(nil);
end;

Посмотреть вложение 6276
Спасибо) Понял все, в моем случае осложнено тем, что это FMX))
Так что буду тогда на обычном inno писать.
 

Xenium

Новичок
Пример из интернета
code_language.pascal:
var
  Page: TInputQueryWizardPage;

procedure EditChange(Sender: TObject);
begin
  Page.Values[2] := 'string' + Page.Values[0] + 'string' + Page.Values[1];
end;

procedure InitializeWizard();
begin
  Page := CreateInputQueryPage(...);

  Page.Add('Server:', False);
  Page.Add('NAME:', False);
  Page.Add('LOCATION:', False);

  Page.Values[0] := 'test0';
  Page.Values[1] := 'test1';

  Page.Edits[0].OnChange := @EditChange;
  Page.Edits[1].OnChange := @EditChange;
  { Reflect the initial values }
  EditChange(nil);
end;

Посмотреть вложение 6276
В общем посмотрел я, попытался, так и не получилось у меня привязать к нужной форме и задать расположение элементов.

Какие есть еще варианты, чтобы можно было изменять расположение элементов, размеры и тд?
 

Xenium

Новичок
@Krinkels что-то в таком роде делаю.
Но на выходе пустая форма.

Код:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
SolidCompression=yes
Compression=lzma/ultra 
PrivilegesRequired=none
OutputDir=userdocs:Inno Setup Examples Output

[Files]


[code]
var
    Header: THeaderControl;
  NBook: TNewNotebook;
  sbLabel: TLabel;
  sb: TScrollBar;
  stLabel: TLabel;
  st: TTrackBar;
    RevEmuPage: TInputQueryWizardPage;

procedure SectionOnClick(HeaderControl: THeaderControl; Section: THeaderSection);
begin
  NBook.ActivePage := NBook.Pages[Section.Index];
end;

procedure InitializeWizard();
var
  GBox: TNewGroupBox;
    i: Integer;
  ud: TUpDown;
  udEdt: TNewMemo;
  hk: THotKey;
  tc: TTabControl;
  pc: TPageControl;
  pcts: TTabSheet;
begin
    WizardForm.OuterNotebook.Hide;
    WizardForm.NextButton.Hide;

  RevEmuPage := CreateInputQueryPage(wpWelcome, 'Игровая информация', '', 'Пожалуйста, введите введите свой ник и Clan-tag и нажмите Далее.');


  { TPageControl }
  pc := TPageControl.Create(RevEmuPage);
  pc.Parent := RevEmuPage.Surface;
  pc.SetBounds(ScaleX(10), ScaleY(40), SCaleX(20), ScaleY(200));

  pcts := TTabSheet.Create(RevEmuPage);
  pcts.PageControl := pc;
  pcts.Caption := 'Page 1';
  with TNewEdit.Create(RevEmuPage) do
  begin
    Parent := pcts;
    Text := 'Edit';
    SetBounds(ScaleX(40), ScaleY(90), ScaleX(80), ScaleY(30));
  end;

  pcts := TTabSheet.Create(RevEmuPage);
  pcts.PageControl := pc;
  pcts.Caption := 'Page 2';
  with TNewEdit.Create(RevEmuPage) do
  begin
    Parent := pcts;
    Text := 'Edit';
    SetBounds(ScaleX(40), ScaleY(90), ScaleX(80), ScaleY(30));
  end;

  pcts := TTabSheet.Create(RevEmuPage);
  pcts.PageControl := pc;
  pcts.Caption := 'Page 3';
  with TNewEdit.Create(RevEmuPage) do
  begin
    Parent := pcts;
    Text := 'Edit';
    SetBounds(ScaleX(40), ScaleY(90), ScaleX(80), ScaleY(30));
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  Application.Title := 'VCL Demo';
  WizardForm.Caption := 'VCL Demo';
  WizardForm.NextButton.Hide;
  WizardForm.CancelButton.Caption := 'Close';
end;

function NextButtonClick(CurPageID: Integer): Boolean;
begin
  Result := False;
end;
Что предполагаю увидеть:

 
Последнее редактирование:

Krinkels

Он где то тут
Администратор
Только с позиционированием проблемы, но так всё работает, при нажатии "Далее" открывается страничка с контролом

code_language.pascal:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
SolidCompression=yes
Compression=lzma/ultra
PrivilegesRequired=none
OutputDir=userdocs:Inno Setup Examples Output

[Files]


[code]
var
    Header: THeaderControl;
  NBook: TNewNotebook;
  sbLabel: TLabel;
  sb: TScrollBar;
  stLabel: TLabel;
  st: TTrackBar;
    RevEmuPage: TInputQueryWizardPage;

procedure SectionOnClick(HeaderControl: THeaderControl; Section: THeaderSection);
begin
  NBook.ActivePage := NBook.Pages[Section.Index];
end;

procedure InitializeWizard();
var
  GBox: TNewGroupBox;
    i: Integer;
  ud: TUpDown;
  udEdt: TNewMemo;
  hk: THotKey;
  tc: TTabControl;
  pc: TPageControl;
  pcts: TTabSheet;
begin

  RevEmuPage := CreateInputQueryPage(wpWelcome, 'Игровая информация', '', 'Пожалуйста, введите введите свой ник и Clan-tag и нажмите Далее.');


  { TPageControl }
  pc := TPageControl.Create(RevEmuPage);
  pc.Parent := RevEmuPage.Surface;
  pc.SetBounds(ScaleX(10), ScaleY(40), SCaleX(20), ScaleY(200));

  pcts := TTabSheet.Create(RevEmuPage);
  pcts.PageControl := pc;
  pcts.Caption := 'Page 1';
  with TNewEdit.Create(RevEmuPage) do
  begin
    Parent := pcts;
    Text := 'Edit';
    SetBounds(ScaleX(40), ScaleY(90), ScaleX(80), ScaleY(30));
  end;

  pcts := TTabSheet.Create(RevEmuPage);
  pcts.PageControl := pc;
  pcts.Caption := 'Page 2';
  with TNewEdit.Create(RevEmuPage) do
  begin
    Parent := pcts;
    Text := 'Edit';
    SetBounds(ScaleX(40), ScaleY(90), ScaleX(80), ScaleY(30));
  end;

  pcts := TTabSheet.Create(RevEmuPage);
  pcts.PageControl := pc;
  pcts.Caption := 'Page 3';
  with TNewEdit.Create(RevEmuPage) do
  begin
    Parent := pcts;
    Text := 'Edit';
    SetBounds(ScaleX(40), ScaleY(90), ScaleX(80), ScaleY(30));
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  Application.Title := 'VCL Demo';
  WizardForm.Caption := 'VCL Demo';
  WizardForm.CancelButton.Caption := 'Close';
end;
 

Xenium

Новичок
Только с позиционированием проблемы, но так всё работает, при нажатии "Далее" открывается страничка с контролом

code_language.pascal:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
SolidCompression=yes
Compression=lzma/ultra
PrivilegesRequired=none
OutputDir=userdocs:Inno Setup Examples Output

[Files]


[code]
var
    Header: THeaderControl;
  NBook: TNewNotebook;
  sbLabel: TLabel;
  sb: TScrollBar;
  stLabel: TLabel;
  st: TTrackBar;
    RevEmuPage: TInputQueryWizardPage;

procedure SectionOnClick(HeaderControl: THeaderControl; Section: THeaderSection);
begin
  NBook.ActivePage := NBook.Pages[Section.Index];
end;

procedure InitializeWizard();
var
  GBox: TNewGroupBox;
    i: Integer;
  ud: TUpDown;
  udEdt: TNewMemo;
  hk: THotKey;
  tc: TTabControl;
  pc: TPageControl;
  pcts: TTabSheet;
begin

  RevEmuPage := CreateInputQueryPage(wpWelcome, 'Игровая информация', '', 'Пожалуйста, введите введите свой ник и Clan-tag и нажмите Далее.');


  { TPageControl }
  pc := TPageControl.Create(RevEmuPage);
  pc.Parent := RevEmuPage.Surface;
  pc.SetBounds(ScaleX(10), ScaleY(40), SCaleX(20), ScaleY(200));

  pcts := TTabSheet.Create(RevEmuPage);
  pcts.PageControl := pc;
  pcts.Caption := 'Page 1';
  with TNewEdit.Create(RevEmuPage) do
  begin
    Parent := pcts;
    Text := 'Edit';
    SetBounds(ScaleX(40), ScaleY(90), ScaleX(80), ScaleY(30));
  end;

  pcts := TTabSheet.Create(RevEmuPage);
  pcts.PageControl := pc;
  pcts.Caption := 'Page 2';
  with TNewEdit.Create(RevEmuPage) do
  begin
    Parent := pcts;
    Text := 'Edit';
    SetBounds(ScaleX(40), ScaleY(90), ScaleX(80), ScaleY(30));
  end;

  pcts := TTabSheet.Create(RevEmuPage);
  pcts.PageControl := pc;
  pcts.Caption := 'Page 3';
  with TNewEdit.Create(RevEmuPage) do
  begin
    Parent := pcts;
    Text := 'Edit';
    SetBounds(ScaleX(40), ScaleY(90), ScaleX(80), ScaleY(30));
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  Application.Title := 'VCL Demo';
  WizardForm.Caption := 'VCL Demo';
  WizardForm.CancelButton.Caption := 'Close';
end;
Спасибо, а как быть со значениями?
Снова не совсем понимаю,как по примеру выше.
Код:
  RevEmuPage.Values[0] := 'test0';
  RevEmuPage.Values[1] := 'test1';

  RevEmuPage.Edits[0].OnChange := @EditChange;
  RevEmuPage.Edits[1].OnChange := @EditChange;
 

Krinkels

Он где то тут
Администратор

Krinkels

Он где то тут
Администратор
На Page1 3 Edit, берётся текст из первых двух и добавляется в третий
code_language.pascal:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
SolidCompression=yes
Compression=lzma/ultra
PrivilegesRequired=none
OutputDir=userdocs:Inno Setup Examples Output

[Files]


[code]
var
    Header: THeaderControl;
  NBook: TNewNotebook;
  sbLabel: TLabel;
  sb: TScrollBar;
  stLabel: TLabel;
  st: TTrackBar;

  Edit1: TNewEdit;
  Edit2: TNewEdit;
  Edit3: TNewEdit;

procedure SectionOnClick(HeaderControl: THeaderControl; Section: THeaderSection);
begin
  NBook.ActivePage := NBook.Pages[Section.Index];
end;

procedure EditChange(Sender: TObject);
begin
  Edit3.Text := 'string ' + Edit1.Text + ' string ' + Edit2.Text;
end;

procedure InitializeWizard();
var
  GBox: TNewGroupBox;
    i: Integer;
  ud: TUpDown;
  udEdt: TNewMemo;
  hk: THotKey;
  tc: TTabControl;
  pc: TPageControl;
  pcts: TTabSheet;
  RevEmuPage: TInputQueryWizardPage;

begin

  RevEmuPage := CreateInputQueryPage(wpWelcome, 'Игровая информация', '', 'Пожалуйста, введите введите свой ник и Clan-tag и нажмите Далее.');


  { TPageControl }
  pc := TPageControl.Create(RevEmuPage);
  pc.Parent := RevEmuPage.Surface;
  pc.SetBounds(ScaleX(10), ScaleY(40), SCaleX(400), ScaleY(180));

  pcts := TTabSheet.Create(RevEmuPage);
  pcts.PageControl := pc;
  pcts.Caption := 'Page 1';

  Edit1 := TNewEdit.Create(RevEmuPage);
  Edit1.Parent  := pcts;
  Edit1.SetBounds(ScaleX(40), ScaleY(30), ScaleX(80), ScaleY(30));

  Edit2 := TNewEdit.Create(RevEmuPage);
  Edit2.Parent  := pcts;
  Edit2.SetBounds(ScaleX(40), ScaleY(60), ScaleX(80), ScaleY(30));

  Edit3 := TNewEdit.Create(RevEmuPage);
  Edit3.Parent  := pcts;
  Edit3.SetBounds(ScaleX(40), ScaleY(90), ScaleX(200), ScaleY(30));

  Edit1.OnChange := @EditChange;
  Edit2.OnChange := @EditChange;

  pcts := TTabSheet.Create(RevEmuPage);
  pcts.PageControl := pc;
  pcts.Caption := 'Page 2';
  with TNewEdit.Create(RevEmuPage) do
  begin
    Parent := pcts;
    Text := 'Edit';
    SetBounds(ScaleX(40), ScaleY(90), ScaleX(80), ScaleY(30));
  end;

  pcts := TTabSheet.Create(RevEmuPage);
  pcts.PageControl := pc;
  pcts.Caption := 'Page 3';
  with TNewEdit.Create(RevEmuPage) do
  begin
    Parent := pcts;
    Text := 'Edit';
    SetBounds(ScaleX(40), ScaleY(90), ScaleX(80), ScaleY(30));
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  Application.Title := 'VCL Demo';
  WizardForm.Caption := 'VCL Demo';
  WizardForm.CancelButton.Caption := 'Close';
end;
 

Xenium

Новичок
На Page1 3 Edit, берётся текст из первых двух и добавляется в третий
code_language.pascal:
[Setup]
AppName=My Application
AppVersion=1.5
DefaultDirName={pf}\My Application
SolidCompression=yes
Compression=lzma/ultra
PrivilegesRequired=none
OutputDir=userdocs:Inno Setup Examples Output

[Files]


[code]
var
    Header: THeaderControl;
  NBook: TNewNotebook;
  sbLabel: TLabel;
  sb: TScrollBar;
  stLabel: TLabel;
  st: TTrackBar;

  Edit1: TNewEdit;
  Edit2: TNewEdit;
  Edit3: TNewEdit;

procedure SectionOnClick(HeaderControl: THeaderControl; Section: THeaderSection);
begin
  NBook.ActivePage := NBook.Pages[Section.Index];
end;

procedure EditChange(Sender: TObject);
begin
  Edit3.Text := 'string ' + Edit1.Text + ' string ' + Edit2.Text;
end;

procedure InitializeWizard();
var
  GBox: TNewGroupBox;
    i: Integer;
  ud: TUpDown;
  udEdt: TNewMemo;
  hk: THotKey;
  tc: TTabControl;
  pc: TPageControl;
  pcts: TTabSheet;
  RevEmuPage: TInputQueryWizardPage;

begin

  RevEmuPage := CreateInputQueryPage(wpWelcome, 'Игровая информация', '', 'Пожалуйста, введите введите свой ник и Clan-tag и нажмите Далее.');


  { TPageControl }
  pc := TPageControl.Create(RevEmuPage);
  pc.Parent := RevEmuPage.Surface;
  pc.SetBounds(ScaleX(10), ScaleY(40), SCaleX(400), ScaleY(180));

  pcts := TTabSheet.Create(RevEmuPage);
  pcts.PageControl := pc;
  pcts.Caption := 'Page 1';

  Edit1 := TNewEdit.Create(RevEmuPage);
  Edit1.Parent  := pcts;
  Edit1.SetBounds(ScaleX(40), ScaleY(30), ScaleX(80), ScaleY(30));

  Edit2 := TNewEdit.Create(RevEmuPage);
  Edit2.Parent  := pcts;
  Edit2.SetBounds(ScaleX(40), ScaleY(60), ScaleX(80), ScaleY(30));

  Edit3 := TNewEdit.Create(RevEmuPage);
  Edit3.Parent  := pcts;
  Edit3.SetBounds(ScaleX(40), ScaleY(90), ScaleX(200), ScaleY(30));

  Edit1.OnChange := @EditChange;
  Edit2.OnChange := @EditChange;

  pcts := TTabSheet.Create(RevEmuPage);
  pcts.PageControl := pc;
  pcts.Caption := 'Page 2';
  with TNewEdit.Create(RevEmuPage) do
  begin
    Parent := pcts;
    Text := 'Edit';
    SetBounds(ScaleX(40), ScaleY(90), ScaleX(80), ScaleY(30));
  end;

  pcts := TTabSheet.Create(RevEmuPage);
  pcts.PageControl := pc;
  pcts.Caption := 'Page 3';
  with TNewEdit.Create(RevEmuPage) do
  begin
    Parent := pcts;
    Text := 'Edit';
    SetBounds(ScaleX(40), ScaleY(90), ScaleX(80), ScaleY(30));
  end;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
  Application.Title := 'VCL Demo';
  WizardForm.Caption := 'VCL Demo';
  WizardForm.CancelButton.Caption := 'Close';
end;
Большое спасибо, пошел дальше шаманить, все работает как надо)
 
Сверху