Page 1 sur 2

ButtonImageGadget() image+Texte

Publié : jeu. 17/juin/2004 15:31
par julien
Serailt il possible d'avoir une fonction tout prête d'un bouton avec du texte+ une image ?

Pour le moment on ne peut qu'avoir du texte ou une image ! :(

Publié : sam. 19/juin/2004 16:19
par Le Soldat Inconnu
utilise la LIB ButtonImageGadgetEx qui est dispo sur mon site.

elle fait exactement ce que tu demandes ;)

Publié : jeu. 01/juil./2004 21:23
par julien
Dsl pour la réponse en retard,

T'as lib est très cool, je l'avais déja, mais la je cherche un moyen pour mettre une image sur un bouton classique fait avec la commande PB

Image

Je voudrai faire comme sur la capture

Publié : ven. 02/juil./2004 17:04
par Le Soldat Inconnu
ah ok, c pluis clair comme ça.

effectivement, ce serait bien mais doit y avoir une astuce, v voir

Publié : ven. 02/juil./2004 17:09
par fweil
Le + simple me paraît de faire une image qui contient le texte et l'image et de l'attacher au bouton :

Code : Tout sélectionner

  ImageID = CreateImage(0, 100, 20)
  StartDrawing(ImageOutput())
    LineXY(3, 3, 14, 14, #Yellow)
    LineXY(3, 14, 14, 3, #Yellow)
    DrawingMode(1)
    BackColor(0, 0, 0)
    FrontColor(255, 255, 255)
    Locate(20, 2)
    DrawText("Bouton")
  StopDrawing()
  
  If OpenWindow(0,0,0,120,100,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"ButtonImage") And CreateGadgetList(WindowID(0)) 
    ButtonImageGadget(0,10,10,100,20,ImageID) 
    Repeat : Until WaitWindowEvent()=#PB_Event_CloseWindow 
  EndIf 
Bien sur si tu disposes d'une image de base pour le bouton, il est facile de la charger et de rajouter le texte en mode dessin.

Slts

Publié : ven. 02/juil./2004 18:24
par Backup
............

Publié : ven. 02/juil./2004 19:07
par Le Soldat Inconnu
Dobro - FWeil : ça revient à ma lib, vos exemples :)
et ce n'est pas vraiment ce qu'on recherche, on veut garder le design du bouton XP et juste ajouter une icone à coté du texte

Publié : ven. 02/juil./2004 19:25
par julien
Delphi le fait... bou et PB allez Fred au boulot :D :D

J'ai cherché dans les API mais j'ai rien trouvé de concret

Publié : ven. 02/juil./2004 22:02
par Backup
bon ben on remballe !! :)

Publié : ven. 02/juil./2004 22:16
par nico
@Soldat Inconnu,

Tu doit utiliser les boutons Owner-Draw, je suis étonné que tu n'es pas rajouté la possibilité d'afficher le dessin du bouton avec les API.Je l'ai fait mais il y a un petit moment déjà et c'était avec mon ancien language que je n'utilise plus maintenant que j'ai Pure.

:)

Publié : ven. 02/juil./2004 22:19
par Le Soldat Inconnu
ben ... heu, on fait comment, tu m'intéresses :D

Publié : ven. 02/juil./2004 22:22
par nico
Bon ben bouge pas, je vais sur mon ancien Forum.......


Voilà, évidemment, y a des corrections à apporter, j'avais pas compris visiblement à quoi servait les masques "&" à l'époque. :?

Je te mets la procédure que j'utilisais:

Code : Tout sélectionner

SUB DRAWITEM

 		    hdcButton=di.hdc
 			SetBkMode(hdcButton, @transparent) 
			SetTextColor(hdcButton, rgb(57,128,244))
			RE.L=0:RE.T=0:RE.R=C:RE.B=D
			Dime.l1=50:Dime.T1=18:Dime.R1=100:Dime.B1=40			
				IF  di.itemAction=1
					DrawFrameControl(hdcButton, RE, @DFC_BUTTON, @DFCS_BUTTONPUSH)
					drawIconEx(hdcButton , 10, 10, Smile, 32, 32, 0, 0, @DI_NORMAL)
					DrawText(hdcButton, "Smile", -1, dime, @DT_LEFT )
				ENDIF

				IF di.itemState=17
					DrawFrameControl(hdcButton, RE, @DFC_BUTTON, @DFCS_BUTTONPUSH|@DFCS_PUSHED)
					drawIconEx(hdcButton , 12, 12, Anger, 32, 32, 0, 0, @DI_NORMAL)
					DrawText(hdcButton, "Anger", -1, dime, @DT_LEFT )
				ENDIF

				IF di.itemState=16 
					DrawFrameControl(hdcButton, RE, @DFC_BUTTON, @DFCS_BUTTONPUSH)
					drawIconEx(hdcButton , 10, 10, Smile, 32, 32, 0, 0, @DI_NORMAL)
					DrawText(hdcButton, "Smile", -1, dime, @DT_LEFT )
				ENDIF


				IF di.itemState=@ODS_FOCUS & p=1 
					drawIconEx(hdcButton , 10, 10, Laugh, 32, 32, 0, 0, @DI_NORMAL)
 					SetBkMode(hdcButton, @opaque) 
					DrawText(hdcButton, "Laugh", -1, dime, @DT_LEFT )
					Dime.l1=30  :Dime.T1=78:Dime.R1=228:Dime.B1=96
					SetTextColor(hdcButton, rgb(128,128,244))
					DrawText(hdcButton, "Return on the button", -1, dime, @DT_LEFT )
				ENDIF

RETURN
Comme ça, tu prends directement ce qui t'intéresse!

:)

[EDIT] Bien sûr, c'est DrawFrameControl qui permet d'afficher un bouton dans ses différents états!

Publié : sam. 03/juil./2004 11:24
par Chris
Voila un code qui fonctionne sur XP
J'ai pas mis toutes les constantes pour ne pas alourdir.

Pour l'image, vous trouverez bien quelque chose en 16x16 sur votre PC.

Code : Tout sélectionner

#Window = 0
#BCM_FIRST = $1600
#BCM_SETIMAGELIST = #BCM_FIRST + $0002
#BUTTON_IMAGELIST_ALIGN_LEFT = $0000

Enumeration
  #Bouton1
EndEnumeration

Structure BUTTON_IMAGELIST
  hImageList.l
  margin.RECT
  uAlign.l
EndStructure
Image.BUTTON_IMAGELIST

hImg = ImageList_LoadImage_(#Null,"dir.bmp",16,1,#CLR_DEFAULT,#IMAGE_BITMAP,#LR_LOADFROMFILE)

Image\hImageList = hImg
Image\uAlign = #BUTTON_IMAGELIST_ALIGN_LEFT
Image\margin\left = 10

If OpenWindow(#Window,0,0,200,200,#PB_Window_SystemMenu|#PB_Window_ScreenCentered,"Bouton avec image") 
  CreateGadgetList(WindowID(#Window)) 
  hButton1 = ButtonGadget(#Bouton1,10,10,180,25,"Image à gauche") 
  
  SendMessage_(hButton1,#BCM_SETIMAGELIST,0,Image)
  
  Repeat
    Select WindowEvent()
      Case #PB_Event_Gadget
        Select EventGadgetID()
          Case #Bouton1
            SetWindowTitle(#Window,"Bouton cliqué")
        EndSelect
        
      Case #PB_Event_CloseWindow
        quit = #True
        
    EndSelect
  Until quit
  End
EndIf
Chris :)

Publié : sam. 03/juil./2004 12:13
par Backup
nico a écrit : c'était avec mon ancien language que je n'utilise plus maintenant que j'ai Pure.
:)

c'etait quoi ce language ?? :)

Publié : sam. 03/juil./2004 13:28
par Le Soldat Inconnu
marche pas chez moi sous 2000 ton code Chris :( zut, et je vois pas d'ou peu venir l'erreur.

tu l'as testé sur quel OS pou ne pas avoir d'os dans le fonctionnement de ce code ?