IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Outils Delphi Discussion :

[Inno Setup] Désactiver une checkbox


Sujet :

Outils Delphi

  1. #1
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut [Inno Setup] Désactiver une checkbox
    Hello tout le monde

    Dans mon script, je crée une TInputOptionWizardPage avec CreateInputOptionPage et j'ajoute 3 checkbox.
    Ensuite, j'ai besoin de désactiver une ou plusieurs checkbox selon différents critères.

    Question : Est-ce possible et si oui comment ?

    Merci d'avance de vos idées sur le sujet

  2. #2
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 683
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 683
    Points : 13 092
    Points
    13 092
    Par défaut
    Une CheckListBox est créée automatiquement par ce type de page (mais ça tu le sais sans doute) et tu peux agir sur chaque élément de cette liste par leur index.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    var
      Opt1 :integer;
     
    MyPage := CreateInputOptionPage(...);
     
    with MyPage.CheckListBox do
    begin
      AddGroup('Premier groupe', '', 0, nil);                                   // Index 0
      Opt1 := AddCheckBox('Une option', '', 1, FALSE, TRUE, FALSE, FALSE, nil); // Index 1
     
      if not Condition then
        CheckItem(Opt1, coUncheck);
    end;
    Et à moins de vouloir repartir à zéro à chaque mise à jour, tu peux utiliser GetPreviousData/SetPreviousData.

  3. #3
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut
    Merci grand chef ! Je n'avais pas vu que je pouvais accéder à certaines propriétés de cette façon .
    C'est exactement ce qu'il me manquait.

    Par contre, bien qu'ayant trouvé l'aide sur les previousdata, je ne vois pas encore comment les utiliser mais je regarderai plus en détail.

  4. #4
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 683
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 683
    Points : 13 092
    Points
    13 092
    Par défaut
    Perso, je crée les checkbox désactivés et les initialise par GetPreviousData (qui accepte un paramètre par défaut) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    ...
    with MyPage.CheckListBox do
    begin
      AddGroup('Premier groupe', '', 0, nil);
      Opt1 := AddCheckBox('Une option', '', 1, FALSE, TRUE, FALSE, FALSE, nil);
     
      if GetPreviousData('Option1', 'No') = 'Yes' then
        CheckItem(Opt1, coCheck);
    end;
    Pour la sauvegarde :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    procedure RegisterPreviousData(PreviousDataKey: Integer);
    begin
      with MyPage.CheckListBox do
      begin
        //N'écrit ici que si différent de la valeur par défaut (No)
        //Sinon elle est automatiquement supprimée.
        //On peut bien sûr l'écrire dans tous les cas.
        if Checked[Opt1] then
          SetPreviousData(PreviousDataKey, 'Option1', 'Yes');
      end; 
    end;
    La donnée Inno Setup CodeFile: Option1 est inscrite dans la BdR sous la clé de désinstallation relative au AppId de ton script HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{AppId}_is1 et est supprimée à la désinstallation du soft.

  5. #5
    Membre émérite

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2007
    Messages
    3 385
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 385
    Points : 2 999
    Points
    2 999
    Par défaut
    Merci pour ces exemples qui m'ont appris beaucoup de choses !
    J'ai ajouté un AppId à mon script et je vais tester tout ça.
    J'ai d'ailleurs eu un peu de mal à comprendre comment récupérer sa valeur sous forme de chaîne mais j'ai fini par y arriver.

    En fait, je me rends compte qu'Innosetup est bien plus puissant que je ne le pensais.

+ Répondre à la discussion
Cette discussion est résolue.

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo