Je reviens encore une fois à la charge avec mon composant PicButton. Dans le précédent fil de discussion, j'ai finalement pu faire marcher ce composant dans les 3 environnements distincts:
- création en désign-time dans l'IDE
- création en run-time dans l'unité Unit1
- création en run-time dans une DLL
Il est fonctionnel, s'affiche bien et réagit aux clics. Il reste un point à éclaircir qui concerne le comportement en survol du composant.
Je m'explique. Il s'agit d'un composant dérivé de TButton, mais qui peut afficher des bitmaps pour les différents états. Les 4 états suivants m'intéressent:
- bouton "sorti" - état normal
- bouton "enfoncé" - état cliqué
- bouton "éclairé" - état survol
- bouton "désactivé" - état désactivé
Dans les 3 environnements, j'arrive à faire fonctionner cet objet pour ces 4 états, sauf dans un cas de figure particulier: si je crée mon bouton dans la DLL (environnement 3), le bouton ne réagit pas au survol (état 3). Je ne m'explique pas la différence entre une création dynamique dans l'unité Unit1 et une création dans une DLL (pas de changement d'image lors du survol), alors que les autres changements d'images (sorti->enfoncé->sorti->désactivé...) fonctionnent parfaitement dans les deux situations.
Je joins un fichier ZIP contenant deux projets: la DLL et le programme de démo. Il y a également toutes les sources, tous les binaires. Il suffit au départ de lancer le programme PicButtonProblem.exe et de cliquer une fois sur les boutons "Créer PicButton dynamique" et "Créer PicButton par DLL". On a alors 3 boutons en principe identiques (celui du haut est créé en "design-time" par l'IDE). Deux des boutons réagissent au survol de la souris, mais pas le troisième. Pourquoi ?
Je précise que je suis sous Windows 8.1 avec Delphi 6 Personal Edition.
Si vous pouviez me donner encore un coup de main, ça me soulagerait vraiment. Merci beaucoup !
Partager