La meilleure façon de faire une icône de composant de Delphi XE en utilisant uniquement les outils intégrés

En Delphi 7, une image de l'éditeur de programme est inclus, qui peut lire et écrire .dcr des fichiers, qui ne sont que des binaires, les fichiers de ressources (.res fichiers) avec une extension différente, qui, par convention indique que l' .dcr fichier contient un compilé de ressources avec le nommé bitmap ressources qui ont des noms correspondant à votre noms des composants (une ressource bitmap nommé TMYCOMPONENT pour un composant nommé TMyComponent). Ces images sont où les "icônes" utilisé pour mettre l'icône dans la palette de composants delphi, et sur votre formulaire ou de données-module lorsque vous déposez un non-composant visuel sur elle, viennent.

Fast forward 10 ans de Delphi XE, et je suis en train de créer un composant icônes à l'aide d'un fichier image et un fichier RC, et ont à un .Fichier DCR, dans le cadre de l'Delphi IDE.

Il devrait être tout simplement une question de l'ajout d'un .Fichier Rc et une déclaration de ce genre .dpk (paquet source) fichier, comme ceci:

{$R mypackageicons.rc mypackageicons.dcr}

Un échantillon .rc fichier contenant une icône de composant:

 // COMPONENT ICON RESOURCES
 TMYCOMPONENT BMP "TMYCOMPONENT.BMP"

Cependant je ne peux pas obtenir que cela fonctionne. Il semble que vous obtenez une étrange RLINK32 erreurs, et les IDE se bloque dans borlandmm.dll, quand je l'ai essayer:

[DCC Error] E2161 Error: RLINK32: Unsupported 16bit resource in file "C:\temp\compicon\COMPONENTICONS.rc"
[DCC Fatal Error] F2084 Internal Error: AV21515155-W06000D07-1

Le fichier bitmap en question est un simple fichier bmp 256 couleurs taille de 24x24 pixels, et j'ai aussi essayé de 16 images bitmap en couleurs, avec pas de chance. Il me semble que la ImageEdit programme est la seule façon que je sais que je peux utiliser pour créer Delphi composant icônes.

Que suis-je manquer?

Mise à jour: Les outils externes sont une solution sympa pour les gens qui n'ont pas accès à l'Delphi 7 éditeur d'image, et peut en fait être supérieur, mais je préfère le faire en utilisant uniquement ce qui est livré avec Delphi, parce qu'il semble qu'il devrait être possible en utilisant seulement un {$R} déclaration, d'un fichier texte et un fichier bmp fait avec un pinceau. Sûrement qu'ils n'ont pas omettre de faire un chemin pour créer un composant icônes, avec cette grande 1,5 gigaoctet outil de développeur! .. update2: Et il y a un moyen; Rudy V. trouvé.

  • Fichiers de ressources de composant besoin de contenir de 24x24 pixels, 16 couleur VGA images. Vous n'avez pas à lui donner le dcr extension, il suffit d'ajouter le{$R YourRes.res} à la source du package fichier contenant la Register procédure.
  • Je pensais qu'il y avait une certaine raison, il devait être nommé .dcr.
  • Register procédures peuvent être n'importe où, je pense. La composante ressource doit être dans une .dpk? Ou faire j'ai mal compris?
  • Ouvrir un .dcr fichier produit par ImageEditor dans un éditeur de ressources et de voir ce qui est là. Vous devriez être en mesure d'obtenir le construit dans le compilateur de ressources pour le compiler pour vous. Cependant, je n'ai jamais le faire parce que le construit dans le compilateur de ressources ne gère pas correctement les 256px Vista icônes, donc j'utilise mon propre script de création de ressources. Ne serait-il pas le savoir!
  • DANS ce cas, le fichier RC a seulement 1 fichier bitmap 16 couleurs 24x24 BMP ressources, et pourtant si je le construire à partir de la {$R foo.rc foo.dcr} la directive, il est invalide en quelque sorte.
  • Je crois que la ressource doit être de type "BITMAP", pas de 'BMP'.
  • J'ai essayé aussi. Ce qui est bizarre, c'est que RES (DCR) les fichiers créés avec D7 éditeur d'Image créer BMP entrées, pas de BITMAP d'entrées.
  • Est-ce que votre .dcr ont le même nom que l'unité qui effectue l'enregistrement du composant? Il devrait avoir. Dans le gestionnaire de projet, si vous ajoutez un .pas de fichier à un paquet et il y a un .dcr avec le même nom dans le même répertoire, il sera automatiquement inclus. Mon programme d'installation des composants (Delphi XE IDE) en fait de même.
  • Je suis sûr que j'ai compris .dcr fichiers qui n'ont pas le même nom que l'unité qui fait de l'inscription. Je suis sûr que j'ai juste inclus ensuite dans le fichier dpk.
  • Compiler avec >brcc32 mypackageicons.rc -fomypackageicons.dcr, et à inclure dans {$R mypackageicons.dcr}. Au moins tous seront avec les outils inclus.
  • Probablement un éditeur de graphique que vous utilisez enregistre les bitmaps sans palette de 16 ou 32 bits de couleur des images bitmap. Donc, il ne importe comment beaucoup de couleurs sont en fait en bitmap - compilateur de ressources ne prend pas en charge ces formats bitmap.
  • L' .dcr extension utilisé pour pré-versions modernes) auto-inclure la ressource. Ce qui a changé dans les versions plus récentes (IIRC, D6/Kylix, mais je peux me tromper) afin de lui permettre d'être dans un fichier de ressources. Delphi 7 mentionne le faire avec un non-dcr fichier de ressources, par exemple.
  • Oui, le Registre proc peut être n'importe où, mais il a aussi pour charger le package. Vous avez probablement raison; il doit probablement être dans le paquet source. J'utilise le Registre dans un autre moment de la conception de package qui enregistre les composants contenus dans un package d'exécution, et la palette des bitmaps ne sont nécessaires au moment de la conception, de sorte que j'ai l'habitude de les mettre dans le même lieu.
  • Cela semble fonctionner: ajouter " mypackageicons.la rc fichier au projet (ce qui produit le " mypackageicons.res' au moment de la compilation), puis {$R mypackageicons.res mypackageicons.dcr} ne produit pas un .dcr mais définit l'icône du composant. Testé avec une 256 couleur "BITMAP" de ressources.
  • Sertak - mettre que dans une réponse. Mais vous n'obtenez pas de compilateur interne AVs lorsque vous quittez ce qu'il y à et de reconstruire un peu de temps?
  • Je n'ai pas, mais je ne peux pas tester avec DXE - D2007 ici..
  • Voir la mise à jour de ma réponse. Il est possible d'ajouter un glyphe bitmap et l'ont utilisé, à partir de l'intérieur de l'IDE. Vous devez créer un bitmap avec un outil externe, si.
  • C'est ce que je voulais. Parfait. Je n'avais même pas remarqué que l'élément de menu!
  • Le nouveau dialogue éditeur de ressources (également par Anders Melander, IIRC, mais j'ai peut-être mal) a été mentionné dans delphi.non-tech à quelques reprises. Je me suis souvenu que et il l'a trouvé. Je n'avais jamais utilisé avant.
  • "16 image en couleur" et "image VGA" sont mutuellement exclusifs
  • C'est directement à partir de la D7 fichier d'aide. Parlez-en à Borland.
  • Blanc, que dois-je leur dire? Ce que vous déchiré cette phrase hors de son contexte? La Documentation parle spécifiquement à propos de l'Image de l'Éditeur de boîte de dialogue (qui est en dehors de la portée de l'OP de la question). PS: quelle est l'image de l'éditeur de moyens est 4bpp de couleur indexée, mais j'ai vu plus grande profondeur de couleur(s) dans les DPAO IDEs (aucune preuve n'est actuellement disponible).
  • Apparemment je n'ai pas supprimer ce projet, BDS IDEs (au moins depuis D207) ne sont pas très pointilleux au niveau des composants du bitmap format de pixel. Il y a en outre 24bpp vrai et 8bpp de couleur indexée parmi ceux qui palette de composants peut s'afficher correctement.
  • Pour l'enregistrement, j'ai extrait imagedit.exe et imged32.dll de Delphi 7 CD, et a ajouté un élément personnalisé dans XE2 du menu Outils pour cela.

InformationsquelleAutor Warren P | 2011-08-09