1. Уважаемые гости и пользователи форума.
    Администрация настоятельно рекомендует не регистрировать несколько аккаунтов для одного пользователя. При выявлении наличия мультиаккаунтов будут заблокированы все учетные записи данного пользователя.
    Аккаунты, зарегистрированные на временную почту будут также заблокированы.

Вопрос Как записать текст из TNewEdit в переменную и передать его в реестр?

Тема в разделе "Inno Setup", создана пользователем AlexS, 4 авг 2018.

  1. Пользователь

    Регистрация:
    1 фев 2017
    Сообщения:
    13
    Симпатии:
    0
    Пол:
    Мужской
    Доброго времени суток! Мужики помогите пожалуйста решить вопрос.
    Есть на кастомной странице TNewEdit, по умолчанию текст в его поле берется и отображается из константы {username}, в дальнейшем текст из TNewEdit записывается в реестр...
    Не могу никак сделать, чтобы при изменении текста в поле, в реестр записывался новый (введенный вместо {username}) текст.
    Понимаю, что это дело реализуется через запись текста из поля в переменную и вписывается затем в реестр, но вот с переменными у меня отношения не задались...

    Код (Text):

    [Setup]
    AppName=MyProg
    AppVersion= 1.5
    CreateAppDir=no
    OutputBaseFilename=setup

    [Registry]
    Root: HKCU; SubKey: Software\My Program; Flags: uninsdeletekey
    Root: HKCU; SubKey: Software\My Program\Settings; ValueType: string; ValueName: Registered; ValueData: {code:edtText}; Flags: uninsclearvalue

    [Code]
    var
      Panel: TPanel;
      NewEdit: TNewEdit;

    procedure edtText (Sender: TObject);
    begin
    // Текст значения берется отсюда, но тут я споткнулся...
    // По умолчанию текст поля должен браться из константы {username} и соответственно записываемое значение в реестре тоже {username}.
    // Если вводится другой тест в поле NewEdit, то записываемое значение в реестре уже берется из нового текста...
    end;

    procedure InitializeWizard();
    begin
      begin
      Panel:= TPanel.Create(WizardForm);
      Panel.Parent:= WizardForm.ReadyPage;
      Panel.SetBounds(ScaleX(0),ScaleY(24),ScaleX(417),ScaleY(205));
      end;

      begin
      NewEdit:= TNewEdit.Create(WizardForm);
      NewEdit.Parent:= Panel;
      NewEdit.SetBounds(ScaleX(24),ScaleY(80),ScaleX(369),ScaleY(21));
      NewEdit.Text:= ExpandConstant('{username}');
      end;
    end;
     
     
  2. Ветеран

    Регистрация:
    27 мар 2014
    Сообщения:
    343
    Симпатии:
    74
    Пол:
    Мужской
    AlexS,
    Код (Inno):
    [Setup]
    AppName=MyProg
    AppVersion= 1.5
    CreateAppDir=no
    OutputBaseFilename=setup

    [Registry]
    Root: HKCU; SubKey: Software\My Program; Flags: uninsdeletekey
    Root: HKCU; SubKey: Software\My Program\Settings; ValueType: string; ValueName: Registered; ValueData: {code:edtText}; Flags: uninsclearvalue

    [Code]
    var
      Panel: TPanel;
      NewEdit: TNewEdit;

    function edtText(s: string):string;
    begin
      Result := NewEdit.Text;
    end;

    procedure InitializeWizard();
    begin
      begin
      Panel:= TPanel.Create(WizardForm);
      Panel.Parent:= WizardForm.ReadyPage;
      Panel.SetBounds(ScaleX(0),ScaleY(24),ScaleX(417),ScaleY(205));
      end;

      begin
      NewEdit:= TNewEdit.Create(WizardForm);
      NewEdit.Parent:= Panel;
      NewEdit.SetBounds(ScaleX(24),ScaleY(80),ScaleX(369),ScaleY(21));
      NewEdit.Text:= ExpandConstant('{username}');
      end;
    end;
     
    YURSHAT, Nemko и AlexS нравится это.
  3. Пользователь

    Регистрация:
    1 фев 2017
    Сообщения:
    13
    Симпатии:
    0
    Пол:
    Мужской
    Как же все просто оказалось. А я голову ломаю. Спасибо большое за помощь.
     

Поделиться этой страницей