TBitBtn et occupation mémoire

Résolu
Aurel184 Messages postés 21 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 9 juin 2010 - 4 avril 2007 à 18:22
Aurel184 Messages postés 21 Date d'inscription dimanche 14 mars 2004 Statut Membre Derniè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.....

Des idées ?

 

5 réponses

japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
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.


Bonne prog'
3
cs_Loda Messages postés 814 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 30 juillet 2009 3
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.
0
Aurel184 Messages postés 21 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 9 juin 2010 1
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à...

Merci

Aurel
0
japee Messages postés 1727 Date d'inscription vendredi 27 décembre 2002 Statut Modérateur Dernière intervention 6 novembre 2021 8
5 avril 2007 à 14:38
Salut Aurel184,

Comme tu peux le constater, j'ai un problème de connexion/rafraichissement.

Il semblerait qu'on arrive à la même conclusion...

Bonne prog'
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Aurel184 Messages postés 21 Date d'inscription dimanche 14 mars 2004 Statut Membre Dernière intervention 9 juin 2010 1
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.

Aurel
0
Rejoignez-nous