Borland | Résolu | Créer un bouton avec une image à la place du texte

Borland | Résolu | Créer un bouton avec une image à la place du texte - C++ - Programmation

Marsh Posté le 28-02-2004 à 11:13:35    

Voila, je suis sous borland et j'essaye de faire une palette de dessin genre Paint.
Le problème c'est que j'y connait rien en interface graphique et malgrès toutes les docs que j'ai dl sur le net je n'arrive à rien.
 
Voila un bout de code qui doit peindre le bouton si j'ai bien compris  :

Code :
  1. Ligne->Brush->Bitmap->LoadFromFile("ico.bmp" );


Mais à la compilation, j'ai une erreur:

Citation :

Project Petri.exe raised class EAccessViolation 'Access violation at adress 00401B12 in module 'Petri.exe' Read of Adress 00000000'.Process stopped. Use Step or Run to continue.


 
Dois-je créer moi même mon propore composant dans ce cas là.
Si oui, de quelles classe doit-il dériver ?
Tbutton ?
TGraphic(s)Control? (je ne pense pas car apparement celui là n'interagit pas avec l'utilisateur ou tout du moins le clavier si j'ai bien compris la doc :D)
 
Merci de m'éclairer ;)
 
[SOLUTION]
1) Créer une image ou créer un image multiple (dans ce cas, vos images doivent être alignées horizontalement et être au nombre de 4 maximum. Ces 4 images correspondent aux 4 états que peuvent prendre un boutton. Pour dessinez vos 4 bouttons dans la même image, réferez vous à la doc pour connaître dans quels ordre dessiner les boutons.)
 
2) Sur les conseils de antp, j'ai crée un TBitBtn à la place de mon TButton.
 
3) Dans l'inspecteur d'objet, Propriété Glyph -> ... -> Load -> Image à charger.
 
4) Pour une image multiple, indiquez le nombre d'images contenue dans le bitmap en renseignant NumGlyphs.
C'est en appliquant la formule suivante que borland connaît le décallage a effectuer pour afficher l'image suivante : LargeurTotaleImage/NumGlyphs=ValeurDecallageImage.
NumGlyphs défini donc le nombre total d'image contenues dans le bitmap et doit etre compris entre 1 et 4 images.
 
J'espère pouvoir aider les débutants comme moi dans l'élaboration de leur interface graphique.
 
[url=http://www.oasis.com/support/downloads/systemdevtools/RC4most_man_E_V1.6-41.pdf]Un super Pdf qui m'as bien aidé dans tout ça :
[/url]
 
Merci antp ;)


Message édité par jeoff le 28-02-2004 à 16:12:52
Reply

Marsh Posté le 28-02-2004 à 11:13:35   

Reply

Marsh Posté le 28-02-2004 à 11:15:25    

Ligne c'est quoi comme type d'objet ?
Il y a TBitBtn et TSpeedButton pour des boutons avec image.
Le "Read of address 0000000" c'est probablement parce que un des objets dans ta chaîne de "->" est NULL.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 28-02-2004 à 11:34:00    

Ligne c'est mon TButton j'ai oublié de préciser :D
 
Merci :)

Reply

Marsh Posté le 28-02-2004 à 12:18:10    

Bon j'ai réussi à charger mon image mais la propriété NumGlyphs m'intéresse pas mal sauf que je ne comprends aps comment on l'exploite.
 
Voici 2 lignes de code avec Ligne qui est cette fois un TBitBtn :D.
 

Code :
  1. Ligne->Glyph->LoadFromFile("bitmap.bmp" );
  2. Ligne->NumGlyphs=4;


 
Ca veut dire que bitmap.bmp contient 4 images déssinée dans un ordre préci, ou que les 4 images sont bitmap1.bmp,bitmap2.bmp,bitmap3.bmp et bitmap4.bmp, ou je n'ai rien compris :'(.
 
Dans l'aide de borland il est question de tableau d'image.:??:
 
Merci de m'éclairer encore une fois :)

Reply

Marsh Posté le 28-02-2004 à 14:37:30    

Ça veut dire que ton bitmap contient 4 images
par ex un bitmap de 64x16 pixels, tu mets numglyphs à 4, ça veut dire que chaque image fait 16x16.
Mais je ne sais pas si 4 c'est utile, en général on en met 2, une pour enabled et une pour disabled il me semble.


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
Reply

Marsh Posté le 28-02-2004 à 15:28:21    

Je viens d'essayer avec 4 images dans le même bmp mais j'y arrive pas, j'ai bien compris le principe mais ça se décalle pas du bon nombre de cases alors que mes images font toutes 25*25 soit un bmp de 25*100 (hauteur*largeur).
Je réitère avec 2 images vu que dans mon cas je n'ai besoin que de Enable et Disable pour mes boutons :)

Reply

Marsh Posté le 28-02-2004 à 16:08:53    

Bon j'ai testé avec 2 images/bitmap et ça fonctionne.
J'ai par la même occasion compris pourquoi ça ne fonctionnait pas avec mes 4 images/bitmap.
 
Dans ma tête je voyais la propriété NumGlyphs comme désignant le n° de l'image à afficher; du coup lorsque je modifiait cette propriété, j'élargissait ou je réduisait la taille de l'image courante.
Car en réalité, NumGlyphs c'est le nombre total d'image dans le bitmap. D'où LargeurBmp/NumGlyphs=ValeurDécallageImage.
 
Ce sont les autres propriétés ou évènement qui modifie l'image à afficher et pas NumGlyphs comme je l'avait compris.
 
Par exemple : NumGlyphs=2 et Enable=true, provoque l'affichage de la première image.
NumGlyphs=2 et Enable=false, provoque l'affichage de la seconde image.
 
Donc je suis un gros gros boulay [:ddr555]

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed