Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Inno Setup: Edit1.OnChange und Custom_nextbuttonClick (https://www.delphipraxis.net/61635-inno-setup-edit1-onchange-und-custom_nextbuttonclick.html)

Almond 24. Jan 2006 09:10


Inno Setup: Edit1.OnChange und Custom_nextbuttonClick
 
Ich komme da nicht weiter:

1) Ich möchte gerne den Next-Button deaktivieren (Delphi: enabled:= false), bis der user eine Eingabe macht

sowas wie mit Edit1.onChange ()
bzw.
procedure TForm1.Edit1Change(Sender: TObject);
begin
end;

[code=delphi]; Script generated by the Inno Setup Script Wizard.
; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES!

[Setup]
AppName=Almond_mail
AppVerName=Almond_mail 1.12
AppPublisher=Almond
DefaultDirName={pf}\Almond_mail
DefaultGroupName=Almond_mail
OutputBaseFilename=setup
Compression=lzma
SolidCompression=yes

[Languages]
Name: "english"; MessagesFile: "compiler:Default.isl"

[Tasks]
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked

[Files]
Source: "E:\Tools\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; Flags: ignoreversion
; NOTE: Don't use "Flags: ignoreversion" on any shared system files

[Icons]
Name: "{group}\My Program"; Filename: "{app}\MyProg.exe"
Name: "{userdesktop}\My Program"; Filename: "{app}\MyProg.exe"; Tasks: desktopicon

[Run]
Filename: "{app}\MyProg.exe"; Description: "{cm:LaunchProgram,My Program}"; Flags: nowait postinstall skipifsilent


[CustomMessages]
CustomFormCaption=CustomForm Caption
CustomFormDescription=CustomForm description

Code:
  var
    NewStaticText1: TNewStaticText;
    Edit1: TEdit;

  procedure CustomForm_Activate(Page: TWizardPage);
  begin
  end;
  //       ///////////////////////////////////////////////////////
    procedure Edit1_change(Page: TWizardPage);
    begin
          If Edit1.text <> '' then
                  CustomForm_NextButton_click.enabled := false;        //          <<< HIER
    end;
  //       ///////////////////////////////////////////////////////

  function CustomForm_ShouldSkipPage(Page: TWizardPage): Boolean;
  begin
    Result := False;
  end;

  function CustomForm_BackButtonClick(Page: TWizardPage): Boolean;
  begin
    Result := True;
  end;

  function CustomForm_NextButtonClick(Page: TWizardPage): Boolean;
  begin
    Result := True;
  end;

  procedure CustomForm_CancelButtonClick(Page: TWizardPage; var Cancel, Confirm: Boolean);
  begin
  end;

  function CustomForm_CreatePage(PreviousPageId: Integer): Integer;
  var
    Page: TWizardPage;
  begin
    Page := CreateCustomPage(
      PreviousPageId,
      ExpandConstant('{cm:CustomFormCaption}'),
      ExpandConstant('{cm:CustomFormDescription}')
    );

    { NewStaticText1 }
    NewStaticText1 := TNewStaticText.Create(Page);
    with NewStaticText1 do
    begin
      Parent := Page.Surface;
      Left := ScaleX(40);
      Top := ScaleY(32);
      Width := ScaleX(173);
      Height := ScaleY(14);
      Caption := 'Geben Sie einen Accountnamen ein:';
      TabOrder := 0;
    end;

    { Edit1 }
    Edit1 := TEdit.Create(Page);
    with Edit1 do
    begin
      Parent := Page.Surface;
      Left := ScaleX(80);
      Top := ScaleY(88);
      Width := ScaleX(209);
      Height := ScaleY(21);
      TabOrder := 1;
      Text := '';
    end;


    with Page do
    begin
      OnActivate := @CustomForm_Activate;
      OnShouldSkipPage := @CustomForm_ShouldSkipPage;
      OnBackButtonClick := @CustomForm_BackButtonClick;
      OnNextButtonClick := @CustomForm_NextButtonClick;
        //       ///////////////////////////////////////////////////////
              CustomForm_NextButtonClick.enabled := false;                    //          <<< HIER
        //       ///////////////////////////////////////////////////////
      OnCancelButtonClick := @CustomForm_CancelButtonClick;
    end;

    Result := Page.ID;
  end;

  procedure InitializeWizard();
  begin
    CustomForm_CreatePage(wpWelcome);
  end;

thklingler 24. Jan 2006 09:32

Re: Inno Setup: Edit1.OnChange und Custom_nextbuttonClick
 
Warum So kompliziert ?
Wenn du es so machst:
[code=delphi]
Code:
var
  UserPage: TInputQueryWizardPage;
procedure InitializeWizard;
begin
 UserPage := CreateInputQueryPage(wpWelcome,
             ExpandConstant('{cm:CustomFormCaption}'), ExpandConstant('{cm:CustomFormDescription}'),'');
UserPage.Add('Geben Sie einen Accountnamen ein:', False);
end;
function NextButtonClick(CurPageID: Integer): Boolean;
begin
result:=true;
if (curPageID=100) and (UserPage.Values[0]='')
 then
  begin
  MsgBox('Bitte geben Sie ein Account ein',MBError,MB_OK);
  result:=false;
  end
dann denkt ich erreichst du genau das was du willst aber mit dem halben aufwand.

Almond 24. Jan 2006 09:41

Re: Inno Setup: Edit1.OnChange und Custom_nextbuttonClick
 
stimmt auch, obwohl ich das andere eleganter fände...

müßte aber doch auch irgendwie zu schreiben sein, oder?


EDIT:
man muß doch auch die Eigenschaften der Inno-Eigenen /vorgegebenen Bedienelemente ändern können...

thklingler 24. Jan 2006 10:48

Re: Inno Setup: Edit1.OnChange und Custom_nextbuttonClick
 
Sicher gehen tut (fast)alles :???:
Dann nimm das:
[code=delphi]
Code:
var
  UserPage: TInputQueryWizardPage;

procedure Pchange (Sender: TObject);
begin
if (UserPage.Values[0]<>'')
 then Wizardform.NextButton.enabled:=true
 else Wizardform.NextButton.enabled:=false;
end;

procedure InitializeWizard;
begin
UserPage := CreateInputQueryPage(wpWelcome,
             ExpandConstant('{cm:CustomFormCaption}'), ExpandConstant('{cm:CustomFormDescription}'),'');
UserPage.Add('Geben Sie einen Accountnamen ein:', False);
Userpage.edits[0].OnChange:=@Pchange;
end;

procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=100 Then
 Wizardform.NextButton.enabled:=false;
end;
Ich hoffe jetzt gefällte es dir ;-)

MathiasSimmack 24. Jan 2006 11:49

Re: Inno Setup: Edit1.OnChange und Custom_nextbuttonClick
 
Eine Kleinigkeit:
Zitat:

Zitat von thklingler
Delphi-Quellcode:
procedure CurPageChanged(CurPageID: Integer);
begin
if CurPageID=100 Then
 Wizardform.NextButton.enabled:=false;
end;

Zum einen würde ich nicht den Wert "100" nehmen sondern "UserPage.ID". Der Wert mag zwar 100 sein, aber warum sich so was angewöhnen? Die andere Sache ist die, dass in deinem Fall der Weiter-Button immer deaktiviert wird. Auch, wenn man was ins Eingabefeld geschrieben hat, zum nächsten Fenster ging (Weiter >) und von da aus wieder zurückkam (< Zurück). ;) Besser wäre also ein schlichtes:
Delphi-Quellcode:
if CurPageID = UserPage.ID then
  Pchange(nil);
Und wenn wir schon dabei sind:
Delphi-Quellcode:
procedure Pchange (Sender: TObject);
begin
  WizardForm.NextButton.Enabled := UserPage.Values[0] <> '';
end;
:stupid:

thklingler 24. Jan 2006 13:16

Re: Inno Setup: Edit1.OnChange und Custom_nextbuttonClick
 
Es ist immer ein freude von dir verbessert zu werden in welchem Forum auch immer ;-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz