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

Langage Delphi Discussion :

[TIniFile] Associer une clé et sa valeur dans un TMenuItem


Sujet :

Langage Delphi

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    47
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 47
    Points : 39
    Points
    39
    Par défaut [TIniFile] Associer une clé et sa valeur dans un TMenuItem
    Je souhaite lire le contenu d'un fichier ini pour créer des sous-menus déroulants.

    J'envisagais de stocker la valeur de chaque clé (un chemin vers un dossier) dans chaque menuItem.Tag mais apparemment le Tag n'accepte que des valeurs numériques.

    Comment feriez vous pour associer chaque clé à sa valeur dans chaque sous-menu ?
    - Quelle méthode utiliseriez vous ? 2 valeurs TStrings différentes (mais comment associer le premier sous-menu à la première valeur de clé, etc. ?) ou 'ReadSectionValues' qui renvoie 'clef=valeur' dans une chaine unique puis la parser a partir du signe '=' ?
    - Peut on associer un pointeur (vers une string) a chaque sous menu comme dans les TLisItem pour y stocker chaque Chemin ?


    Ce code fonctionne mais la ligne NewItem.Tag est refusée :

    FileIni:=IniFile.Create(ExtractFilePath(Application.ExeName)+'\conf.ini');
    Keys := TStringList.Create;

    // Lit tous les noms de clés de la section spécifiée :
    FileIni.ReadSection('Shortcut', Keys);
    for I := 0 to Keys.Count - 1 do //boucle des clés
    begin
    NewItem := TMenuItem.Create(Self); {Créer une nouvelle instance de sous-menu}
    NewItem.Caption := Keys.Strings[i]; //nom des sous-menus
    // NewItem.Tag := FileIni.ReadString('Shortcut', Keys[i], 'No Value'); //Affiche les valeurs de chaque clé dans le tag

    MainMenu1.Items.Items[2].Add(NewItem);

    ...
    D'avance merci,

    Daniel

  2. #2
    Expert éminent
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    3 906
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 906
    Points : 8 539
    Points
    8 539
    Par défaut
    SAlut
    A tu place je prendrais le probleme a l'inverse(enfin facon de dire).

    Lors de la creation des Menuitem (partir du fichier ini) je ferai pointer leurs evenement OnClick sur une procedure (la meme procedure pour tous)

    Ensuite dans la procedure, en fonction du Sender, qui represente le Menu ou sousMenu sur lequel tu as cliqué, j'en retirerais son nom et fonction de celui-ci je rechercherais dans le fichier ini la valeur correspondante.

    Ainsi ta procedure utilisera une valeur differente pour chaque menu/sousmenu, valeur que tu aura defini dans ton fichier ini.
    A++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/08/2013, 17h06
  2. Réponses: 1
    Dernier message: 30/07/2010, 10h15
  3. Réponses: 4
    Dernier message: 21/07/2009, 14h08
  4. Comment tracer une courbe chart avec valeurs dans fichier ?
    Par petitclem dans le forum C++Builder
    Réponses: 16
    Dernier message: 07/05/2008, 15h07
  5. Réponses: 2
    Dernier message: 19/04/2007, 15h26

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