Assigner Glyph hexadécimal dynamiquement

Résolu
zwyx Messages postés 146 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 mars 2016 - 15 oct. 2009 à 17:58
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 - 16 oct. 2009 à 22:22
Bonjour à tous,

Je souhaite créer un BitBtn, pendant l'exécution du programme et lui affecter une image dont je connais déjà la valeur hexadécimale, récupérée du fichier *.dfm.

Dans un fichier *.dfm, on trouve une description comme suit:
object BitBtn1: TBitBtn
  Left = 10
  Top = 10
  Width = 50
    Height = 25
    Glyph.Data = {0E060000424D0E0600000000000036000000280000001D000000110000000100180000000000D8050000C40E0000C40E00000000000000000000FFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000      0000000000000000000000000000FFFFFF00000000EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE900000000000000FFFFFF00000000000000000000000000000000    0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EDEAE900000000000000FFFFFF000000000000000000AAAAAAAAAAAA929292000000000000000000AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA0000000000000000      00000000000000000000000000000000000000EDEAE900000000000000FFFFFF000000000000000000AAAAAA000000929292000000000000000000000000000000000000000000000000000000000000040404FFFFFFFFFFFFDADADADADADAFFFFFFDADADADADADA000000EDEAE900000000000000FFFFFF000000AAAAAAAAAA      AA929292000000929292929292929292000000FFFFFFFFFFFFDADADADADADAFFFFFFDADADADADADA000000FFFFFF0000F80000F8DADADA0000F80000F8DADADA000000EDEAE900000000000000FFFFFF000000AAAAAA000000000000000000000000000000AAAAAA000000FFFFFF000000000000FFFFFF000000000000FFFFFF      000000FFFFFF0000F80000F8FFFFFF0000F80000F8FFFFFF000000EDEAE900000000000000FFFFFF000000AAAAAAAAAAAAAAAAAA000000929292AAAAAAAAAAAA000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF000000EDEAE900000000000000FFFFFF      000000000000000000AAAAAA000000AAAAAA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EDEAE900000000000000FFFFFF000000000000000000AAAAAAAAAAAAAAAAAA000000000000000000AAAAAAAAAAAAAAAAAAAAAAAAAA  AAAAAAAAAAAAAAAA000000000000000000000000000000000000000000000000000000EDEAE900000000000000FFFFFF000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000EDEAE90000     0000000000FFFFFF000000000000000000000000000000000000000000000000000000AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA000000000000000000000000000000000000000000000000000000EDEAE900000000000000FFFFFF0000000000000000000000000000000000000000000000000000000000000000      00000000000000000000000000000000000000000000000000000000000000000000000000000000000000EDEAE900000000000000FFFFFF000000000000000000000000000000000000000000000000000000AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA000000000000000000000000000000000000000000000000      000000EDEAE900000000000000FFFFFFEDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE9EDEAE900000000000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF      FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFF00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000FFFFFF00}
end


Seulement quand je crée le bouton dynamiquement, dans une fonction de mon *.pas, je ne peux assigner le glyphe sous cette forme, puisque les accolades constituent un commentaire.

Voilà, c'est tout bête, mais je suis bloqué par un commentaire.

Merci à ceux qui sauront lever le mystère.

7 réponses

zwyx Messages postés 146 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 mars 2016
16 oct. 2009 à 17:58
Comme tu dis, passer par un tableau d'octets devient vraiment compliqué pour pas grand chose.

J'ai donc choisis d'ajouter à ma fiche un BtnModele: TBitBtn, non visible, avec en guise de glyphe, l'image qui m'intéresse, ainsi codé en bitmap.

Au moment de créer un BitBtn dynamiquement, j'écris simplement:
BtnNouveauBouton.Glyph := BtnModele.Glyph;


(tiens, je me suis étonné de ne pas avoir l'auto-complétion de ".Glyph" pendant la rédaction de ce message)

Mon problème, qui n'en étais pas vraiment un, est donc résolu par une solution, qui n'en est pas vraiment une. Merci d'avoir orienté mes recherches Bacterius.
3
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
16 oct. 2009 à 09:35
Pourquoi ne pas convertir le glyphe en image depuis l'héxadécimal ? Par contre, pour savoir quelle est la hauteur/largeur du glyphe, faudra se renseigner sur le format des DFM ...

Cordialement, Bacterius !
0
zwyx Messages postés 146 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 mars 2016
16 oct. 2009 à 10:55
Merci pour ta réponse Bacterius,

Je ne comprends pas trop ce que tu entends par "convertir le glyphe en image". Tout ce que je sais, c'est que l'image n'est pas codé dans le *.dfm, puisque le bouton est exclusivement construit dynamiquement, et que j'aimerais me passer d'un fichier de ressource ou image à côté de mon unité *.pas.

Donc en gros, je voudrais faire tenir l'image en dur dans mon *.pas.

Cordialement
0
zwyx Messages postés 146 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 mars 2016
16 oct. 2009 à 11:17
Quoique, une idée me vient à l'esprit.

Je peux peut-être placer sur ma fiche *.dfm une image invisible, contenant le glyphe. Ainsi, je pourrait l'assigner sur mes boutons dès leur création.
0

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

Posez votre question
zwyx Messages postés 146 Date d'inscription jeudi 22 novembre 2007 Statut Membre Dernière intervention 21 mars 2016
16 oct. 2009 à 12:13
Bon, je ne sais pas si je pars dans la bonne direction, mais voilà où j'en suis.

J'ai placé sur ma fiche un TImage invisible dont la Picture contient l'image que je veux mettre en glyphe sur mes BitBtn.

Donc à la construction de mes dits-bouton, je voudrais écrire quelque chose dans ce goût la:

btnMonBouton := TBitBtn.Create(Self);
btnMonBouton.Glyph{.Data ?} := imgMonImage.Picture{.Data ?};


Seulement la Picture est une image jpg, tandis que le Glyph est un bitmap. Les seuls méthode de conversion que je trouve propose d'ouvrir un fichier *.jpg pour l'exporter en *.bmp.

Pas glop !
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
16 oct. 2009 à 12:59
Ce que tu peux faire, c'est stocker dans un "const" ton image, sous forme de "array of byte". Mais pourquoi ne pas passer par un fichier de ressources ? C'est optimisé, facile à utiliser ...

Cordialement, Bacterius !
0
Bacterius Messages postés 3792 Date d'inscription samedi 22 décembre 2007 Statut Membre Dernière intervention 3 juin 2016 10
16 oct. 2009 à 22:22
Mais .. euh ... c'est pas bon de faire comme ça !!
Utilise une TImageList, au moins c'est fait pour ça, si tu veux éviter les fichiers ressource (pourquoi d'ailleurs ?? c'est encore mieux les fichiers ressources)

Cordialement, Bacterius !
0
Rejoignez-nous