Assigner Glyph hexadécimal dynamiquement [Résolu]

zwyx 152 Messages postés jeudi 22 novembre 2007Date d'inscription 21 mars 2016 Dernière intervention - 15 oct. 2009 à 17:58 - Dernière réponse : Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention
- 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.
Afficher la suite 

Votre réponse

7 réponses

zwyx 152 Messages postés jeudi 22 novembre 2007Date d'inscription 21 mars 2016 Dernière intervention - 16 oct. 2009 à 17:58
+3
Utile
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.
Cette réponse vous a-t-elle aidé ?  
Commenter la réponse de zwyx
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 16 oct. 2009 à 09:35
0
Utile
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 !
Commenter la réponse de Bacterius
zwyx 152 Messages postés jeudi 22 novembre 2007Date d'inscription 21 mars 2016 Dernière intervention - 16 oct. 2009 à 10:55
0
Utile
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
Commenter la réponse de zwyx
zwyx 152 Messages postés jeudi 22 novembre 2007Date d'inscription 21 mars 2016 Dernière intervention - 16 oct. 2009 à 11:17
0
Utile
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.
Commenter la réponse de zwyx
zwyx 152 Messages postés jeudi 22 novembre 2007Date d'inscription 21 mars 2016 Dernière intervention - 16 oct. 2009 à 12:13
0
Utile
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 !
Commenter la réponse de zwyx
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 16 oct. 2009 à 12:59
0
Utile
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 !
Commenter la réponse de Bacterius
Bacterius 3869 Messages postés samedi 22 décembre 2007Date d'inscription 3 juin 2016 Dernière intervention - 16 oct. 2009 à 22:22
0
Utile
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 !
Commenter la réponse de Bacterius

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.