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 :

Ajout d'un menu et d'un sous menu


Sujet :

Langage Delphi

  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2005
    Messages
    529
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 529
    Points : 464
    Points
    464
    Par défaut Ajout d'un menu et d'un sous menu
    Salut,
    j'ai ajouté un menu et un sous menu en usant un code, même qu'il existe un exemple livré avec delphi.
    mon problème est le suivant, si je ferme mon application et je la réouvre je ne trouve plus le menus que j'ai créé.
    je souhaiterai une aide.
    Merci
    Deux, n'apprendront pas; le timide et l'arrogant

  2. #2
    Membre chevronné Avatar de philnext
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    1 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 1 552
    Points : 1 780
    Points
    1 780
    Par défaut
    Montre ton code...

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

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    Ben c'est normal, ton .exe ne se modifi pas, tu retrouve donc ton appli exactement comme tu l'a créé, sans le menu supplementaire.
    Tu dois faire un fichier externe, un fichier ini par exemple ou un simple txt que tu formatera a ta guise et stocker les infos relative a ton menu.
    MenuParent:....
    Caption:....
    OnClickProcedure:....

    et au chargement de ton appli tu lit ton fichier et tu recré les menu. Je ne sais pas si c'est la meilleur solution, mais j'ai deja fait un truc du genre et ca marche tres bien.

    Voila 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

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Je continue sur ce que dit Qwazerty, mais soit tu peux regénérer les menus via une Base de données, ou via un Fichier mais il te faut une source, donc si ton utilisateur ajoute des menus, et qu'il veut les revoir, il faut les sauvegarder ... ou alors, tu lance ce fameux code systématiquement

    Sinon, si cela intéresse, une Astuce pour enregistrer un Menu et le chargement ultra simplement via un fichier qui sera ni plus ni moins un bout de DFM !

    Tu sauvegarde le noeud qui contient les item à sauvegarder, le mieux c'est que ce noeud soit lui même générer par code, si il y n'y a pas de fichier

    Donc écriture du Noeud
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    WriteDFMStringInFile(ComponentToString(RootMenu), 'FichierTruc.DFM');
    Puis à la seconde execution tu fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ASuperMenu.Add(StringToComponent(ReadDFMStringFromFile('FichierTruc.DFM')) as TMenuItem);
    en sachant que ASuperMenu aurait du être le Parent de RootMenu, mais comme il y a un fichier il ne faut pas créer RootMenu, car celui-ci va se créer via le fichier ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    procedure WriteDFMStringInFile(const AString, FileName: string);
    var
       FLNC: File;
    begin
      AssignFile(FLNC, FileName);
      Rewrite(FLNC, 1);
      try
         BlockWrite(FLNC, AString[1], Length(AString));
      finally
         CloseFile(FLNC);
      end;
    end;
    FileSize(var F)
     
    function ReadDFMStringFromFile(const FileName: string): string;
    var
       FLNC: File;
    begin
      AssignFile(FLNC, FileName);
      Reset(FLNC, 1);
      try
         SetLength(Result, FileSize(FLNC));
         BlockWrite(FLNC, Result[1], Length(Result));
      finally
         CloseFile(FLNC);
      end;
    end;
    bon, il faudrait faire une variante de ComponentToString/StringToComponent, en utilisant un TFileStream, je les ai quelques part, mais je sais pas où ...

    code de l'Aide Delphi, ben oui, ce n'est que dans l'aide, étrange car utile ...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
      function ComponentToString(Component: TComponent): string;
       var
          BinStream: TMemoryStream;
          StrStream: TStringStream;
          s: string;
       begin
          BinStream := TMemoryStream.Create;
          try
             StrStream := TStringStream.Create(s);
             try
                BinStream.WriteComponent(Component);
                BinStream.Seek(0, soFromBeginning);
                ObjectBinaryToText(BinStream, StrStream);
                StrStream.Seek(0, soFromBeginning);
                Result := StrStream.DataString;
             finally
                StrStream.Free;
             end;
          finally
             BinStream.Free
          end;
       end;
     
       function StringToComponent(const Value: string): TComponent;
       var
         StrStream:TStringStream;
         BinStream: TMemoryStream;
       begin
         StrStream := TStringStream.Create(Value);
         try
           BinStream := TMemoryStream.Create;
           try
             ObjectTextToBinary(StrStream, BinStream);
             BinStream.Seek(0, soFromBeginning);
             Result := BinStream.ReadComponent(nil);
           finally
             BinStream.Free;
           end;
         finally
           StrStream.Free;
         end;
       end;
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

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

    Informations forums :
    Inscription : Avril 2002
    Messages : 3 898
    Points : 8 529
    Points
    8 529
    Par défaut
    SAlut
    Ben ton astuce pour sauvegarder les composants va peut etre bien m'etre utile pour tout autre chose
    Merci bien!!
    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. [AC-2000] Menu accordéon et/ou sous-menu
    Par philben dans le forum IHM
    Réponses: 2
    Dernier message: 24/05/2009, 22h18
  2. Ajouter un sous-menu avec flèche dans un menu
    Par beegees dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 21/01/2009, 13h35
  3. Display un sous menu : affichage progressif des sous rubriq.
    Par sokette dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 27/12/2005, 16h15
  4. Menu principal et click sous menu
    Par angiosfr dans le forum Agents de placement/Fenêtres
    Réponses: 3
    Dernier message: 22/11/2005, 21h38

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