Custom forms Inno setup [Résolu]

Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Dernière intervention
6 avril 2012
- - Dernière réponse : Cirec
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
- 20 nov. 2006 à 12:54
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
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
3
Merci
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" />

Merci Cirec 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de Cirec
Messages postés
4304
Date d'inscription
samedi 16 octobre 2004
Dernière intervention
9 mars 2018
3
Merci
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)

Merci f0xi 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 100 internautes ce mois-ci

Commenter la réponse de f0xi
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Dernière intervention
6 avril 2012
0
Merci
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
Commenter la réponse de jrivet
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
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" />
Commenter la réponse de Cirec
Messages postés
7401
Date d'inscription
mercredi 23 avril 2003
Dernière intervention
6 avril 2012
0
Merci
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
Commenter la réponse de jrivet
Messages postés
4229
Date d'inscription
vendredi 23 juillet 2004
Dernière intervention
3 août 2018
0
Merci
ben j'étais pas très loin la première fois

 
@+
Cirec

<hr size="2" />
Commenter la réponse de Cirec

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.