Custom forms Inno setup

Résolu
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 - 17 nov. 2006 à 15:00
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 - 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

6 réponses

Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
17 nov. 2006 à 15:36
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" />
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 37
17 nov. 2006 à 23:51
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)
3
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
17 nov. 2006 à 15:52
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
17 nov. 2006 à 17:40
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" />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7393 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
20 nov. 2006 à 10:17
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
0
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
20 nov. 2006 à 12:54
ben j'étais pas très loin la première fois

 
@+
Cirec

<hr size="2" />
0
Rejoignez-nous