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

Delphi Discussion :

Récupérer les infos RTTI sur les classes TBitmap,TStrings


Sujet :

Delphi

  1. #1
    Membre actif Avatar de petitprince
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2006
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juillet 2006
    Messages : 322
    Points : 267
    Points
    267
    Par défaut Récupérer les infos RTTI sur les classes TBitmap,TStrings
    Bonjour à tous!
    Comment puis-je récupérer les infos sur les classes TBitmap,TStrings par l'intermédiaire des RTTI?
    Tout marche impec sur des composants, ou sur des classes que je crée moi-même, mais pas sur les classes de delphi...
    Voici ce que je fais: Ex avec un TPanel
    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
    procedure TForm1.Button1Click(Sender: TObject);
    var
     PData   : PTypeData;
     PListe  : PPropList;
     NbProps,
     I       : Integer;
    begin
      PData := GetTypeData(PTypeInfo(TPanel.ClassInfo));
      NbProps := PData^.PropCount;
      New(PListe);
      GetPropInfos(PTypeInfo(TPanel.ClassInfo), PListe);
     
      with ListBox1 do
      begin
        Clear;
        for I := 0 to NbProps - 1 do
          Items.Add(PListe^[I]^.Name);
      end;
     
      Dispose(PListe);
     
     
    end;
    Voila...
    Merci!

  2. #2
    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
    un TStrings hérite de TPersistent mais il n'a AUCUNE propriété publiée donc cela ne sert à rien, il implémente par contre DefineProperties qui lui permet de simuler la gestion des flux ...

    Un TBitmap hérite de TPersitent, tu dois donc pouvoir énumérer ses propriétés mais comme la TStrings, pas de Published, ... mais hérite de DefineProperties de TGraphic ...

    Au final, pas de published donc le RTTI fonctionne mais ne renvoit aucune propriété !
    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

  3. #3
    Membre actif Avatar de petitprince
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2006
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juillet 2006
    Messages : 322
    Points : 267
    Points
    267
    Par défaut
    Ok, ça ne renvoyait rien en effet, mais alors comment faire ?

  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
    J'ignore ton besoin, mais tu peux soit faire des classes qui hérite d'un TBitmap ou d'une TStringList (partir de la TStrings serait plus complexe), et publiée les propriétés que tu veux accéder en RTTI ... ou sinon programmer plus simplement, et remplir/lire "à la main"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    MonObjet.Property1 := ...;
    MonObjet.Property2 := ...;
    MonObjet.Property3 := ...;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ... := MonObjet.Property1;
    ... := MonObjet.Property2;
    ... := MonObjet.Property3;
    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
    Membre actif Avatar de petitprince
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2006
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juillet 2006
    Messages : 322
    Points : 267
    Points
    267
    Par défaut
    Mon but est de faire un EDI en delphi avec SynEdit, pour que lorsque j'écrit par exemple "Memo1.", après le point, j'ai toute la liste de se qui va après, c-à-d toutes les propriétés de la classe Memo...
    Voilà...
    Mais je ne comprend pas trop ta méthode...
    En tout cas merci !

  6. #6
    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
    tu veux faire un EDI ? SynEdit c'est pour Web ? Bon Passons, ...

    j'ignorais ton besoin, donc je ne pouvais pas proposer de solution adéquate, donc si tu veux quelques choses de Dynamiques, tu ne peux pas utiliser ma proposition de manipuler les variables à la main ...

    Pour le TStrings et le TBitmpa, tu dois publier les propriétés, comme la TForm publie les propriétés de la TCustomForm, ...
    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

  7. #7
    Membre actif Avatar de petitprince
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2006
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juillet 2006
    Messages : 322
    Points : 267
    Points
    267
    Par défaut
    Sui je comprend bien je dois me retaper tout le boulot à la main ?
    Bon ben y a plus qu'à....
    Sinon Syn Edit c'est pas que pour le web..... Jette un coup d'oeil à cette librairie...
    Merci à plus

    P.S. je considère le sujet comme résolut, mais si il y a d'autre propositions, je suis preneur...

  8. #8
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Pour la complétion de Memo1. ça n'utilise pas les RTTI. Ca n'a rien à voir. Ca utilise le compilateur, qui compile en temps réel tes unités pour connaître les champs de chaque type.

    En plus il connaît beaucoup plus d'informations que ne peuvent te donner les RTTI.

    Bref oublie les RTTI pour ce que tu veux faire.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  9. #9
    Membre actif Avatar de petitprince
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2006
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juillet 2006
    Messages : 322
    Points : 267
    Points
    267
    Par défaut
    Comment faire alors? Tu dis que ca compile en temps réel, je veu bien utiliser le compilateur DCC32, mais comment récupérer ces infos alors, pour une utilisation avec SynEdit?

  10. #10
    Expert éminent sénior

    Avatar de sjrd
    Homme Profil pro
    Directeur de projet
    Inscrit en
    Juin 2004
    Messages
    4 517
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : Suisse

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2004
    Messages : 4 517
    Points : 10 154
    Points
    10 154
    Par défaut
    Tu dois compiler avec ton propre compilateur. DCC32 ne te livrera pas ses infos de compilation.
    sjrd, ancien rédacteur/modérateur Delphi.
    Auteur de Scala.js, le compilateur de Scala vers JavaScript, et directeur technique du Scala Center à l'EPFL.
    Découvrez Mes tutoriels.

  11. #11
    Membre actif Avatar de petitprince
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Juillet 2006
    Messages
    322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués

    Informations forums :
    Inscription : Juillet 2006
    Messages : 322
    Points : 267
    Points
    267
    Par défaut
    Sauf que mon compilateur c'est DCC32 et que je recompile des projets delphi, je refais donc une portion de l'EDi pour me faire un concepteur de composant à la delphi...
    D'ailleur, en publiant des propriétés dans la classe TBitmap, j'arrive bien à les obtenir par RTTI

Discussions similaires

  1. [XL-2007] trier et regrouper sur les lignes comme sur les colonnes
    Par pascual dans le forum Conception
    Réponses: 1
    Dernier message: 13/07/2012, 18h00
  2. Réponses: 3
    Dernier message: 06/07/2011, 14h35
  3. Double Incrémentation 1 sur les lignes 1 sur les colonnes
    Par MatMout dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 23/07/2010, 17h35
  4. Travailler sur les Bitmap, ou sur les loaders directement
    Par minimolo dans le forum ActionScript 3
    Réponses: 4
    Dernier message: 14/12/2008, 12h08

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