Bonsoir dames et messieurs,
Après chercher longtemps et essayer beaucoup, j'ai décidé d’utiliser la capacité totale des cerveaux des membres du forum. Peut-être il y a quelqu'un qui a une idée ou une suggestion.
D’abort, je vous raconterai l’histoire tout court, et puis je détaillerai la question, pour les gens qui voient encore la lumière à la fin du tunnel.
La question courte
Qui sait qu’es ce que je dois faire pour installer un composant de moi-même dans mon package pour obtenir exactement le même comportement (dans le IDE) comme les composants natales du VCL qui sont crées par notre amis de Borland
La question détaillée
J’ai fait (à titre d'exemple ) un composant, (qui ne fait pas tellement beaucoup), ceci a été déduit du classe TCustomLabel
Le composant a un published property Version avec seulement un Getter. Aussi, il y a un published method: MakeSound (avec seulement Beep ; )
Aussi, et ça c’est important, j’ai ajouté un method Register pour enrégistrer mon composant pour que je le puisse retrouver plus tard dans le component pallet.
Le composant est installé dans un package de soi-même, pas de problèmes, cela fonctionne comme un TGV au printemps. Le composant fait ce qu’il doit faire, mais …
Maintenant, je me demande:
Comment je doit installer le package et quels paramètres doivent être modifiés, effacés, remplis, effacés ( les parameters du DebugInfo, Delphi Settings, … ) et quels chemins doivent être remplies pour obtenir exactement le même comportement comme les composants du VCL. Et, ça c’est important, je doit avoir exactement la meme.
J’ai fait une petite liste des points que je considère personnellement comme des points qui ont le même comportement:
1. Le composant ne peut pas être compilé quand on fait un build du projet.
2. Quand on fait un CTRL+Click sur le nom de l'unité du composant dans le uses clause de mon projet, je dois sauter au fichier source.
3. Quand on fait un CTRL+Click sur le class name du composant dans le uses clause de mon projet dans la section interface, je dois sauter au fichier source.
4. Quand on fait un CTRL+Click sur un property ( p.e. Version ) du composant, je dois sauter au fichier source.
5. Quand on fait un CTRL+Click sur un method du composant, je dois sauter au fichier source.
6. Le debugger doit écouter "Use Debug DCU's" quand on se promène dans le code avec F7 et F8.
Ce que nous avons fait jusqu’à maintenant, et ce qui ne fonctionne (pas)
J’ai crée un package avec:
- "Debug Information": Qui
- "Local Symbols": Qui
- "Stack Frames": Qui
- Tout le reste: default
Les chemins du package sont:
- Output directory : $(USR)\Bpl
- Unit output directory : $(USR)\lib\Delphi10
- Search Path :
- Debug source path : $(USR)\Source
- DCP output directory : $(USR)\Bpl
Avec tout ça le package a été compilé et installé, j’ai aussi changé ( ajouté ) des chemins en Delphi, c’est à dire:
- Library path : $(USR)\Bpl + $(USR)\Lib\Delphi10
- Browsing path : $(USR)\Source
- Debug DCU path : $(USR)\Lib\Delphi10\Debug ( c'est le parking pour les unités compilées avec debuginfo (si lui "Use Debug DCU's" utilisé)
J’ai fait un petit projet de teste, j’ai jeté mon composant sur le form, et …
Après le build du projet, on peut dire que point nr. 1 fonctionne, effective, la source n'a pas été récompilée.
Les points 2, 3, 4 ne fonctionnent pas.
Il est bizarre mais, le point numéro 5 fonctionne bien
Le point 6 ne fonctionne pas aujourd'hui mais la cause est que le package est compilé avec Debug Info, alors on se l’occupe tout à l'heure.
Tous les points que j’ai prévu dans la liste fonctionnent, quand on utilise les composants de Borland, je les ai testés tous un TButton.
Qui voit la lumière, qui a une idée ou une suggestion?
Et si c’est possible. Je pense bien, par ce que les gens de Borland l’ont fait, peut-être avec un peu de magie dans leurs doigts, mais ils ont réussi.
Si-t-on nage un peu dans les pages concernant cette objet, on voit partout la même question, mais on ne voit jamais la réponse.
Pour répéter encore une fois : installer et enregistrer un package, ça fonctionne, mais il me manque un peu le magie d’un composant VCL.
Et, ce qu' il est vraiment important : on peut trouver cette histoire aussi chez les allemands, et j'ai parié que les Français sauraient plus rapide la réponse que les Allemands ....
Partager