Lors de l'ouverture d'un formulaire contenant un timageliste héréditaire dans Delphi (2010 dans ce cas, mais il peut le faire pour d'autres versions), l'IDE invariablement (je ne trouve aucune rime ni rythme) ajoute les données d'image à nouveau à la forme héritée. Cela augmente alors la taille de l'exécutable. Quelqu'un sache pourquoi et comment je peux l'arrêter? Je répète, l'image a pas fort> changé. P>
4 Réponses :
Ma recommandation: Ne conservez jamais d'images dans les fichiers .dfm. Mettez-les toujours dans des fichiers de ressources et retrouver le contrôle de votre application. P>
Ceci est un problème connu avec Timagelist, et il n'ya pas grand chose que vous pouvez faire à ce sujet, sauf pour continuer à supprimer les données des ordures à nouveau. (BeyondCompare peut être très utile ici, notamment en association avec le contrôle de la source.) si vous voulez. Pour le constater, veuillez voter pour le rapport de QC sur celui-ci. P>
Ce n'est pas une "solution" au problème, mais plus une explication de ce qui se passe. Les données d'image d'une liste d'images donnée sont stockées sous forme de blob binaire de données. Ce blob de données est obtenu à partir de la mise en œuvre de l'imageur sous-jacente à partir du comcl32.dll. p>
Qu'est-ce qui se passe probablement est que, pour une raison quelconque, la mise en œuvre de Windows dans le comcl32.dll diffuse des données d'image différemment entre l'instance "ancêtre" et l'instance "descendante". Pour Windows, il n'y a pas de relation entre ces deux cas. p>
La manière dont la forme-héritage fonctionne est qu'il fait une comparaison immobilière entre le "descendant" et "ancêtre" tout en streaming pour déterminer si un bien donné doit être écrit sur le formulaire. Étant donné que les données d'image sont une blob opaque de goo, tout ce que nous pouvons faire est une comparaison d'octets-octets entre ce que l'instance Timagelist sur l'ancêtre écrit et ce que l'instance Timagelist sur le descendant écrit. Si un seul octet était différent, le système de diffusion de streaming n'a pas d'autre choix que d'écrire les données de l'instance de descendance sur la présomption que quelque chose fort> a changé. Par exemple (et je ne connais pas vraiment les détails car il est opaque), si le blob de goo contenait un horodatage, il est concevable que chaque fois qu'il soit écrit, les données soient différentes. P>
Ce que je fais est mis l'imageur sur un module de données, puis l'ajoutez à la clause Utilisé des formulaires. Le concepteur de formulaire sera capable de voir la liste d'images p>
Dans la plupart de mes projets, j'ai une ou plusieurs données de données de ressources contenant ces types de listes d'images.
Ce que je fais, c'est mettre la liste des images sur un module de données et l'ajouter à votre clause utilise vos formulaires. Le concepteur devrait pouvoir le voir
@Jeen Pluimers - ajouté
Il était très prudent de vous de répéter que l'image n'a pas changé, car le premier enregistrement de celui-ci est maintenant probablement perdu ou corrompu. :)