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 :

XE7 - Gestion des composants


Sujet :

Delphi

  1. #1
    Invité
    Invité(e)
    Par défaut XE7 - Gestion des composants
    Bonjour,

    Comme le faisait "miroiter" Serge dans une autre discussion, pas besoin de recompiler Delphi pour qu'un nouveau composant s'installe... Alors qu'il faut le faire en Lazarus.

    Oui, mais ceci dit, comment gère-t-on un composant "en devenir" ? Chronologiquement, voici comment je procède :

    1. Je crée mon composant lzgrid... dans \DelphiPojects\components\lzGrid. Il s'intègre dans Delphi quasi-automatiquement. Je ressors de Delphi. Je suis obligé parce qu'à la fin de l'intégration, j'ai systématiquement une erreur qui ferme Delphi.
    2. Pour tester, j'ouvre à nouveau Delphi, je crée un projet : \DelphiProjects\components\lzGrid\example\example.dpr. J'y intégre mon nouveau composant appelé lzGrid1 dans Form1. Je place l'inspecteur d'objet sur lzGrid1. Je laisse cette session de Delphi ouverte.
    3. Au choix, j'ouvre une autre session de Delphi ou Notepad++ et modifie le code du composant lzGrid.pas : je crée une nouvelle propriété NewProp en published associée à FNewprop et aux méthodes déclarées en Read et Write. Je sauvegarde. Je quitte.
    4. Dans la session de Delphi restée ouverte sur le projet de test, je demande une reconstruction... au terme de laquelle... la nouvelle propriété n'apparaît toujours pas dans l'IO de lzGrid1.


    Pour la faire apparaître, je suis obligé à partir du projet de test ouvert de désintaller le composant, puis de le réinstaller...

    Je n'ai pas la bonne approche visiblement.

    Il y a un pro des composants Delphi dans le coin ? Comment fait-on pour modifier un composant et le tester en parallèle dans un projet, de manière la plus économe possible en temps et en manipulations ?



    PS :
    1. Il se peut que mon Delphi soit déstabilisé. Mais compte tenu du nombre d'installations limité, je ne tente pas la désinstallation. Est-il normal que dès le départ (i.e. après l'installation de mon premier composant), j'ai obtenu cette erreur 1400 ? Puis périodiquement - en général à chaque fois que je "chatouille" un de mes composants-, que j'ai un un problème de chargement d'un module rtl120.bpl au démarrage de Delphi ? Evidemment ce n'est pas normal mais la question est "est-ce que ce problème est rencontré par d'autres utilisateurs qui créent leurs propres composants ?"
    2. Testé en parallèle sous Lazarus 1.26 - Win 64 SVN 46529 -> RAS. Le code de la nouvelle propriété est correct. C'est une simple string, classique. Et sa création apparaît "normalement" (i.e. comme j'ai l'habitude sous Lazarus) dans l'Inspecteur d'Objet du projet de test.
    Dernière modification par Invité ; 22/11/2014 à 10h49. Motif: Reformulation : incompréhensible à la relecture !

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 455
    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 455
    Points : 24 867
    Points
    24 867
    Par défaut
    Personnellement, je le faisais dans un groupe de projet
    le DPK - BPL de RunTime
    le DPK - BPL de Conception (package souvent nommé "dcl..." qui est juste une enveloppe du BPL de Runtime avec RegisterClasses pour l'installation dans l'EDI)
    le DPROJ - EXE
    Et je confirme, c'est parfois pénible
    Il est préférable de fermer la fenêtre de test de l'EXE (surtout au moins lors de désinstaller/réinstaller le package)
    Pense qu'il n'est pas nécessaire de réinstaller le package à chaque fois si tu ne change pas les published property !

    Tant que tu ne touches pas à la partie publiée, tu peux juste compiler le BPL de RunTime et lancer l'EXE
    Si tu changes ou ajoutent une property publiée, ferme la fenêtre de test, désintalle le BPL et réinstalle le (le mieux c'est d'avoir la fenêtre qui dit "composant installées : TTruc, TBidule ..."), puis de rouvrir la fenêtre de test

    Pense aussi au chemin partagé par l'IDE et ton EXE
    Soit tu utilises le dossier Windows\System32, c'est moche mais ça marche
    Soit tu copies ton BPL de RunTime dans le dossier de l'EXE et le dossier vu par Delphi avec l'autre package DCL (voir les options de post-construction pour automatiser cela)
    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

Discussions similaires

  1. Réponses: 2
    Dernier message: 23/11/2014, 12h24
  2. XE7 : Gestion des styles. Premières questions.
    Par Invité dans le forum Composants FMX
    Réponses: 12
    Dernier message: 22/09/2014, 09h07
  3. Gestion des composants
    Par FunkyBreizh dans le forum JSF
    Réponses: 2
    Dernier message: 09/06/2009, 11h38
  4. Gestion des composants en MFC
    Par dot-_-net dans le forum MFC
    Réponses: 0
    Dernier message: 17/03/2009, 20h17
  5. Gestion des transactions avec les composants DOA
    Par lper dans le forum Bases de données
    Réponses: 2
    Dernier message: 01/12/2008, 16h06

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