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

Composants VCL Delphi Discussion :

[Création de compo] Stocker une TList de records dans un dfm


Sujet :

Composants VCL Delphi

  1. #1
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut [Création de compo] Stocker une TList de records dans un dfm
    Bonjour,

    J'ai réaliser un composant dont une est propriété est un pointer sur une TList (Contrainte permettant un éditeur de composant).
    Je peux donc modifier facilement en conception mon composant, cependant, à l'exécution, ma TList est de nouveau vide.

    Je suis donc allé regarder dans le DFM créé lors d'une nouvelle application et je découvre que la seule information de ma TList c'est un pointer (donc stockage inutil mais par défault).

    Je souhaiterais donc pouvoir enregistrer dans le DFM, le contenu de ma TList qui n'est en fait que des records.

    Structure d'un record :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
      TMonType = (PEB_text,PEB_image,PEB_textimage,PEB_progressbar, PEB_Perso);
      TMonRecord = record
        Top,Left,Bottom,Right : integer;
        Style : TMonType;
      end;
    Est-ce réalisable ? comment ?

    merci,

  2. #2
    Inactif  

    Inscrit en
    Juillet 2004
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 46
    Points : 135
    Points
    135
    Par défaut DFM
    un fichier DFM ce n'est pas esclusivement du texte?
    Sans le code c'est assez abscon.

    John

  3. #3
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 99
    Points : 126
    Points
    126
    Par défaut
    Il faut implémenter une classe TWriter qui sera chargé d'écrire les données dans le flux ainsi qu'une classer TReader qui sera chargée des les lire.

    réfère toi à l'aide de Delphi , tu peux aussi aller voir par ici, il ya quelques infos:

    http://groups.google.fr/groups?hl=fr&lr=&threadm=8f7d22%242jh4%40bornews.borland.com&rnum=2&prev=/groups%3Fq%3DTWriter%2520tutorial%26hl%3Dfr%26lr%3D%26sa%3DN%26tab%3Dwg

  4. #4
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    Merci,

    En fait je tente de me servir de TWriter et Treader mais impossible de comprendre le fonctionnement... (Ou les déclencher, comment les utiliser).
    L'aide delphi n'est pas très explicite sur le fonctionnement et je ne peux pas utiliser la technique proposée dans ton lien (dont la solution est TCollection).

    Je continue les recherches...

    [Edit]
    J'ai déjà réaliser deux procedures qui mémorise ma TList:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        procedure WriteInfoList(Writer : TWriter);
        procedure ReadInfoList(Reader : TReader);
    Mais a partir d'ou je dois les lancer et comment initialiser les Writer et le Reader ?

    Merci
    [/Edit]

  5. #5
    Membre habitué

    Profil pro
    Inscrit en
    Avril 2002
    Messages
    99
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2002
    Messages : 99
    Points : 126
    Points
    126
    Par défaut
    Il y a une courte introduction à DefineProperties / DefineProperty qui pourrait t'aider:

    http://www.informit.com/articles/article.asp?p=28278

    C'est vrai que ce n'est pas très bien documenté, mais il y a tout de même un petit exemple dans l'aide de Delphi (6).

  6. #6
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    Super Merci beaucoup !

    Je vois ca et je vous tiens au courant...

  7. #7
    Membre expert

    Homme Profil pro
    Responsable de service informatique
    Inscrit en
    Janvier 2004
    Messages
    2 123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Responsable de service informatique

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 123
    Points : 3 256
    Points
    3 256
    Par défaut
    Excellent, ca fonction a merveille !!!
    Merci encore

    Voici comment stocker les informations concernant un composant de manière dynamique (fonction sur toute classe dérivant de TComponent):

    On définit tout d'abord 3 procédures :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    type
      TMonCompo = ....
      ....
      protected
        // appelé automatiquement par le composant
        procedure DefineProperties(Filer: TFiler); override;
     
        // procédures de lecture et d'écriture dans le composant
        procedure ReadInfoList(Reader : TReader);
        procedure WriteInfoList(Writer : TWriter);
    puis on les implémentes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    procedure TMonCompo.DefineProperties(Filer: TFiler);
    begin
      // appel de l'ancêtre pour mise à jour du composant MonCompo
      inherited DefineProperties(Filer);
     
      // On définit ici respectivement : le nom de la variable à mettre en Dfm, 
      // la procédure de chargement, la procédure d'enregistrement,
      // (pas trouvé pour le dernier mais il faut mettre True)
      // maintenant, on sait que nos procédures seront appelés.
      Filer.DefineProperty('PanelsBackup',ReadInfoList,WriteInfoList,True);
     
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    procedure ReadInfoList(Reader : TReader);
    var
      i,j : integer;
      s : string;
    begin
      Reader.ReadListBegin; // commence l'énumération
     
      i := Reader.ReadInteger;
      j := Reader.ReadInteger;
      s := Reader.ReadString;
     
      Reader.ReadListEnd; // fin de l'énumération
    end;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    procedure WriteInfoList(Reader : TReader);
    begin
      Write.WriteListBegin; // commence l'énumération
     
      Writer.WriteInteger(4);
      Writer.WriteInteger(3);
      Writer.WriteString('toto');
     
      Write.WriteListEnd; // fin de l'énumération
    end;
    Voila,
    En espérant que cela servira à d'autre...
    A+

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 09/11/2010, 12h44
  2. Stocker une image + du texte dans un fichier
    Par TheBlackReverand dans le forum C#
    Réponses: 5
    Dernier message: 03/06/2008, 13h48
  3. [1.1][C#] Stocker une information de font dans un fichier
    Par maitrebn dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/10/2006, 09h42
  4. Réponses: 2
    Dernier message: 29/10/2003, 23h47
  5. Stocker un record dans un fichier
    Par ushu dans le forum Langage
    Réponses: 7
    Dernier message: 13/12/2002, 15h51

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