Custom forms Inno setup [Résolu]

Signaler
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
-
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
-
Salut à tous,
[j'espere avoir posté au bon endroit= > sinon EXCUSEZ moi et si un admin pouvais déplacer au bon endroit]
D'habitude je travaille en VB6 mais là j'ai un souci qui est tout autre...
D'abord, (au cas où cela changerait qqch)
- W2K
- Innosetup 5.1.6
- IsTools 5.1.6
- Innosetrup Form Designer 2.0.4

Je suis en train d'essayer de faire un Setup d'installation (mise à jour) à l'aide d'inno setup.
Comme vous le savez sans doute, on peut faire ses propres Form dans la section code d'InnoSetup.
L'aide décrit que le code est en Pascal (SUPER), on m'a dit aussi que le delphi s'en approchait bcp (c'est d'ailleurs pour cette raison que j'ai décidé de poster ici.)=> moi et pascal et delphi ca fait.... 3

alors trêve de bavardage.
Comment assigner une procédure à l'événement Click (OnClick) d'un radio bouton , (Bouton, ....) dans la partie code d'innosetup.
J'ai essayer.

    procedure RdOUIClick();
    begin

    end;
[reste du code]
{ RdOUI } 
    RdOUI := TRadioButton.Create(Page); 
    with RdOUI do 
    begin 
      Parent := Panel1; 
      Left := ScaleX(40); 
      Top := ScaleY(40); 
      Width := ScaleX(113); 
      Height := ScaleY(25); 
      Caption :=  'Oui';
      Checked := True; 
      TabOrder := 0; 
      TabStop := True; 
      OnClick := @RdOUIClick();  {Avec ou sans @ cela ne fonctionne pas}
    end; 

Le compilateur ne cesse de m'insulter: "Access Violation at address 0670A5FA Read od address 0000000C " les valeurs varie parfois
Si l'un d'entre vous pouvais m'aiguiller (Lien, explication)
En attendant des réponses, Google is my friend (como siempre)
@+: =89254 Ju£i?n
Pensez: Réponse acceptée

6 réponses

Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
42
Salut,

tu devrais avoir plus haut dans ton code un truc du Style :

TForm1 = Class (TForm)
...
  Procedure rdOuiClick(Sender : TObject);
Private
Public
End;

...

Implementation
  Procedure TForm1.rdOuiClick(Sender : TObject);
Begin
   ...
End;

    RdOUI : = TRadioButton.Create(Page); 
    with RdOUI do 
    begin 
      Parent := Panel1; 
      Left := ScaleX(40); 
      Top := ScaleY(40); 
      Width := ScaleX(113); 
      Height := ScaleY(25); 
      Caption :=  'Oui';
      Checked := True; 
      TabOrder := 0; 
      TabStop := True; 
      OnClick := RdOUIClick; 
    end;

si c'est pas suffisement claire donne plus de ton code source

 
@+
Cirec

<hr size="2" />
Messages postés
4202
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
13 juin 2020
37
dans innosetup, repertoire Examples : codeclass.iss

tu y verras un exemple de creation de fiches avec ajout de bouttons ect...

<hr size="2" width="100%" />Croc (click me)
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Salut,
Merci [auteurdetail.aspx?ID=311214 cirec]
pour cette réponse rapide.
je ne suis pas du jour à ce que l'on me mâche le travail. Mais là je ne suis pas contre un peu d'aide.
Je vais te montrer la section [Code] ecrite dans Inno setup pour me permettre d'avoir cette feuille

NOTE AU ADMIN: Il serait bon de pouvoir vider nos images Uploader.....

Voici la section en question (tu noteras que rien ne montre TForm1...)
 var
    Panel1: TPanel;
    Label1: TLabel;
    RdOUI: TRadioButton;
    RdNON: TRadioButton;
    Panel2: TPanel;
    Label2: TLabel;
    RdAutomatique: TRadioButton;
    RdManuel: TRadioButton;
    TraiteDAT: Boolean;
    UseAutoChkpUtil: Boolean;
    DONTLAUNCH: Boolean;
    ResultCode: Integer;

    procedure DeinitializeSetup();
    Begin
    IF DONTLAUNCH = FALSE THEN
        IF UseAutoChkpUtil = TRUE THEN
                Exec(ExpandConstant('{app}\AutoChkpUtil.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
          ELSE
                Exec(ExpandConstant('{app}\ChkpUtil.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode)
    DeleteFile(ExpandConstant('{app}\AutoChkpUtil.exe'));
    End;

    Function GetDATDirectory(Param: String): String;
    begin
    If TraiteDAT = True then
        Result := 'NEWDAT'
    else
        Result := ''
    end;

    procedure RdOUIClick();
    begin

    end;

  procedure ChoixDAT_Activate(Page: TWizardPage);
  begin
  end;

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

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

  function ChoixDAT_NextButtonClick(Page: TWizardPage): Boolean;
  begin
    TraiteDAT := RdOUI.Checked;
    if TraiteDAT = TRUE THEN
        UseAutoChkpUtil := RdAutomatique.Checked
    else
        DONTLAUNCH := TRUE
    Result := True;
  end;

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

  function ChoixDAT_CreatePage(PreviousPageId: Integer): Integer;
  var
    Page: TWizardPage;
  begin
    Page := CreateCustomPage(
      PreviousPageId,
      ExpandConstant('{cm:ChoixDATCaption}'),
      ExpandConstant('{cm:ChoixDATDescription}')
    );

    { Panel1 }
    Panel1 := TPanel.Create(Page);
    with Panel1 do
    begin
      Parent := Page.Surface;
      Left := ScaleX(0);
      Top := ScaleY(4);
      Width := ScaleX(413);
      Height := ScaleY(89);
      Alignment := taLeftJustify;
      BevelOuter := bvNone;
      TabOrder := 0;
    end;

    { Label1 }
    Label1 := TLabel.Create(Page);
    with Label1 do
    begin
      Parent := Panel1;
      Left := ScaleX(16);
      Top := ScaleY(16);
      Width := ScaleX(279);
      Height := ScaleY(13);
      Caption := 'Voulez conserver la configuration?';
    end;

    { RdOUI }
    RdOUI := TRadioButton.Create(Page);
    with RdOUI do
    begin
      Parent := Panel1;
      Left := ScaleX(40);
      Top := ScaleY(40);
      Width := ScaleX(113);
      Height := ScaleY(25);
      Caption := 'Oui';
      Checked := True;
      TabOrder := 0;
      TabStop := True;
      OnClick := @RdOUIClick();
    end;

    { RdNON }
    RdNON := TRadioButton.Create(Page);
    with RdNON do
    begin
      Parent := Panel1;
      Left := ScaleX(40);
      Top := ScaleY(64);
      Width := ScaleX(105);
      Height := ScaleY(17);
      Caption := 'Non';
      TabOrder := 1;
    end;

    { Panel2 }
    Panel2 := TPanel.Create(Page);
    with Panel2 do
    begin
      Parent := Page.Surface;
      Left := ScaleX(0);
      Top := ScaleY(112);
      Width := ScaleX(417);
      Height := ScaleY(97);
      BevelOuter := bvNone;
      TabOrder := 1;
    end;

    { Label2 }
    Label2 := TLabel.Create(Page);
    with Label2 do
    begin
      Parent := Panel2;
      Left := ScaleX(40);
      Top := ScaleY(16);
      Width := ScaleX(98);
      Height := ScaleY(13);
      Caption := 'Mode de traitement:';
    end;

    { RdAutomatique }
    RdAutomatique := TRadioButton.Create(Page);
    with RdAutomatique do
    begin
      Parent := Panel2;
      Left := ScaleX(40);
      Top := ScaleY(40);
      Width := ScaleX(121);
      Height := ScaleY(17);
      Caption := 'Automatique';
      Checked := True
      TabOrder := 0;
      TabStop := True;
    end;

    { RdManuel }
    RdManuel := TRadioButton.Create(Page);
    with RdManuel do
    begin
      Parent := Panel2;
      Left := ScaleX(40);
      Top := ScaleY(64);
      Width := ScaleX(129);
      Height := ScaleY(25);
      Caption := 'Manuel';
      TabOrder := 1;
    end;

    with Page do
    begin
      OnActivate := @ChoixDAT_Activate;
      OnShouldSkipPage := @ChoixDAT_ShouldSkipPage;
      OnBackButtonClick := @ChoixDAT_BackButtonClick;
      OnNextButtonClick := @ChoixDAT_NextButtonClick;
      OnCancelButtonClick := @ChoixDAT_CancelButtonClick;
    end;

    Result := Page.ID;
  end;

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

@+: Ju£i?n
Pensez: Réponse acceptée
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
42
et il n'y a rien avant :
 var
    Panel1: TPanel;
    Label1: TLabel;
   ....

bon alors

essaye voir comme ça :

tu remplaces :
    procedure RdOUIClick();
    begin

    end;

Par:
    procedure RdOUIClick(Page: TWizardPage);
    begin

    end;

Et:
      OnClick := @RdOUIClick();
par:
      OnClick : = @RdOUIClick;

C'est pas grantie, parce que, malgré que ce soit du Pascal, il y une touche d'Inno avec, ce qui change un peut de la structure classique !
Et en plus je n'ai jamais utilisé Inno qui, au passage, est réalisé en Delphi

 
@+
Cirec

<hr size="2" />
Messages postés
7393
Date d'inscription
mercredi 23 avril 2003
Statut
Membre
Dernière intervention
6 avril 2012
56
Salut,
>[auteurdetail.aspx?ID= 311214 cirec], : Merci de t'être penché sur le sujet
[auteurdetail.aspx?ID=360948 >f0xi] : Merci beaucoup Voila exactement ce que je cherchais (Je cherchais des exemples de ce type mais dans l'aide d'inno setup form designer => alors qu il suffisait d'aller directement dans l'inno setup.

Un grand merci.

Donc pour répondre à la question:
Comment assigner une procédure à l'événement Click (OnClick) d'un radio bouton , (Bouton, ....) dans la partie code d'innosetup.

il mem manquait simplement dans la définition de la porcédure de mettre Sender: TObject

    procedure RdOUIClick(Sender: TObject);
    begin

    end;
[reste du code]
{ RdOUI } 
    RdOUI :=  TRadioButton.Create(Page); 
    with RdOUI do 
    begin 
      Parent := Panel1; 
      Left := ScaleX(40); 
      Top := ScaleY(40); 
      Width := ScaleX(113); 
      Height := ScaleY(25); 
      Caption :=  'Oui';
      Checked := True; 
      TabOrder := 0; 
      TabStop := True; 
      OnClick := @RdOUIClick;  
    end;
Encore un grand merci à vous deux

@+: =89254 Ju£i?n
Pensez: Réponse acceptée
Messages postés
3826
Date d'inscription
vendredi 23 juillet 2004
Statut
Modérateur
Dernière intervention
10 mai 2021
42
ben j'étais pas très loin la première fois

 
@+
Cirec

<hr size="2" />