Aurel184
Messages postés21Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention 9 juin 2010
-
4 avril 2007 à 18:22
Aurel184
Messages postés21Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention 9 juin 2010
-
5 avril 2007 à 14:39
Bonjour,
j'utilise dans une application Delphi Win32 des TBitBtn pour afficher des images sur mes boutons.
Le problème est que quand je desactive mon bouton, l'image disparait. Donc je rajoute un mot dans la propriété Caption. Mais ç ce moment là, le mot est décalé car il réserve la place de l'image dans le bouton.
Donc ce que je fais :
- Quand je désactive mon bouton je supprime l'image, je met un caption
BitBtnh.Glyph.FreeImage();
BitBtnh.Glyph := nil;
BitBtnh.Caption := 'Mot';
BitBtnh.Enabled:= false;
- quand j'active mon bouton, je recharge l'image, je supprime le caption
BitBtnh.Glyph.LoadFromResourceName(HInstance, 'Image');
BitBtnh.Caption := '';
BitBtnh.Enabled:= true;
Ca marche bien, mais j'ai des fuites mémoire, et mon appli prend des handles supplémentaires à chaque activation/desactivation.....
japee
Messages postés1727Date d'inscriptionvendredi 27 décembre 2002StatutModérateurDernière intervention 6 novembre 20218 5 avril 2007 à 14:35
Salut,
J'ai testé le code que tu nous soumets, et je n'ai pas constaté de
fuites de mémoire ni de handles créés à l'occasion de
l'activation/désactivation du BitBtn.
Il se pourrait que ça se produise à l'occasion des évènements associés à cet évènement, mais ailleurs.
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 20093 5 avril 2007 à 09:19
salut,
"quand je desactive mon bouton" = = "enabled := false" je suppose. dons, le moyen correct de gérer ça, c'est de fournire un glyph avec plusieurs états:
Je supose que l'image ne disparait pas, mais devient gris clair (grisée) et tu ne la voit plus.
voir l'aide de Delphi sous:
TBitBTN.Glyph et .NumGlyphs
extrait:
You can provide up to four images within a single bitmap. All
images must be the same size and next to each other in a row. Bit buttons
display one of these images depending on their state.
[...]
Second: Disabled: This image usually appears dimmed to indicate that the
button can't be selected.----
bon dessin, :-)
Loda
<hr size ="2" width="100%" />Se poser les bonnes questions est le premier pas pour trouver les bonnes réponses.
Aurel184
Messages postés21Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention 9 juin 20101 5 avril 2007 à 14:24
Salut.
Le TBitBtn n'affiche aucune image quand il est desactivé si tu ne lui a attribué qu'une seule image. En effet tu peux mettre la propriété Numglyphs à 2 et lui attribuer une image double. Le TBitBtn affichera alors la deuxième image quand il sera désactivé. Mais cette image ne sera pas grisée. Ce n'est pas grave, on peut griser l'image de droite à la main...
Mais j'ai aussi besoin de pouvoir modifier l'image du bouton à n'importe quel moment. J'ai donc quand même besoin d'utiliser un loadfrom... du glyph...
Mais j'ai l'impression de m'être trompé. Ma fuite mémoire ne doit pas venir de là...
Aurel184
Messages postés21Date d'inscriptiondimanche 14 mars 2004StatutMembreDernière intervention 9 juin 20101 5 avril 2007 à 14:39
Merci. Je pensais initialement que le fait lors du rechargement du glyph depuis mon fichier de ressources, l'ancienne image restait en mémoire, ou tout du moins son handle.... Mais après quelques autres tests, il semblerait que ce soit lors de la fermeture/ réouverture d'un socket.