Page 1 sur 2
Gadget rebel
Publié : dim. 04/juin/2017 15:08
par SPH
Voici mon code simplifié a l'extreme et qui ne marche pas :
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 80,80, "SpinGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SpinGadget (10, 40, 40, 45, 25, 1, 100)
SetGadgetState (10, 8) : SetGadgetText(10, "8") ; définit la valeur initiale
Repeat
Evenement = WaitWindowEvent()
If Evenement = #PB_Event_Gadget
If EventGadget() = 0
SetGadgetText(0,Str(GetGadgetState(0)))
EndIf
EndIf
Until Evenement = #PB_Event_CloseWindow
EndIf
Je tiens au "10" de "SpinGadget (10,...."
Qu'est ce qui cloche ??

Re: Gadget rebel
Publié : dim. 04/juin/2017 15:40
par Micoute
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 80,80, "SpinGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
SpinGadget (10, 40, 40, 45, 25, 1, 100)
SetGadgetState (10, 8) : SetGadgetText(10, "8") ; définit la valeur initiale
Repeat
Evenement = WaitWindowEvent()
If Evenement = #PB_Event_Gadget
If EventGadget() = 10 ;Il faut indiquer le bon gadget
SetGadgetText(10,Str(GetGadgetState(10))) ; là aussi
EndIf
EndIf
Until Evenement = #PB_Event_CloseWindow
EndIf
Re: Gadget rebel
Publié : dim. 04/juin/2017 16:08
par SPH
Grand merci Micoute
ou : Merci GRAND Micoute (comme tu preferes)

Re: Gadget rebel
Publié : dim. 04/juin/2017 19:44
par SPH
le gadget rebel du jour :
Il apparait en haut a gauche de la fenetre. Ca fait bizzare. Peut on ouvrir le requester la ou il y a le bouton a cliquer ?
Re: Gadget rebel
Publié : dim. 04/juin/2017 19:58
par Ar-S
On peut surement avec des API mais pas comme ça.
Tu devrais créer un ColorRequester perso, il y a pas mal d'exemples dur le forum.
Re: Gadget rebel
Publié : dim. 04/juin/2017 20:06
par SPH
Ar-S a écrit :On peut surement avec des API mais pas comme ça.
Tu devrais créer un ColorRequester perso, il y a pas mal d'exemples dur le forum.
dans l'ordre de facilité, je prefere une api. Sinon, faire un colorrequester a la dobro.
quelqu'un aurait les bons api ?
Re: Gadget rebel
Publié : dim. 04/juin/2017 20:56
par falsam
Pourquoi pas un choix de couleurs (Quatre dans cet exemple) dans un ComboGadget()
Code : Tout sélectionner
Enumeration Window
#mf
EndEnumeration
Enumeration Gadgets
#mfColorRequester
EndEnumeration
Global Color
Declare ChangeColor()
Declare Exit()
OpenWindow(#mf, 0, 0, 800, 600, "", #PB_Window_ScreenCentered)
ComboBoxGadget(#mfColorRequester, 10, 20, 100, 24, #PB_ComboBox_Image)
Color = RGB(255,255,255)
CreateImage(0, 16, 16, 32, Color) ;Creation de l'image
AddGadgetItem(#mfColorRequester, -1, "Blanc", ImageID(0)) ;Ajout de la couleur dans la liste
SetGadgetItemData(#mfColorRequester, 0, Color) ;L'item crée est associé à la valeur de la couleur
Color = RGB(0,255,0)
CreateImage(1, 16, 16, 32, Color)
AddGadgetItem(#mfColorRequester, -1, "Vert", ImageID(1))
SetGadgetItemData(#mfColorRequester, 1, Color)
Color = RGB(0,0,255)
CreateImage(2, 16, 16, 32, Color)
AddGadgetItem(#mfColorRequester, -1, "Bleu", ImageID(2))
SetGadgetItemData(#mfColorRequester, 2, Color)
Color = RGB(255,0,0)
CreateImage(3, 16, 16, 32, Color)
AddGadgetItem(#mfColorRequester, -1, "Rouge", ImageID(3))
SetGadgetItemData(#mfColorRequester, 3, Color)
BindGadgetEvent(#mfColorRequester, @ChangeColor())
BindEvent(#PB_Event_CloseWindow, @Exit())
Repeat : WaitWindowEvent() : ForEver
Procedure ChangeColor()
Protected BackgroundColor = GetGadgetItemData(#mfColorRequester, GetGadgetState(#mfColorRequester))
SetWindowColor(0, BackgroundColor)
EndProcedure
Procedure Exit()
End
EndProcedure
Re: Gadget rebel
Publié : dim. 04/juin/2017 21:16
par SPH
merci falsam, ca peux etre utile aussi

Re: Gadget rebel
Publié : dim. 04/juin/2017 21:22
par Zorro
SPH a écrit :le gadget rebel du jour :
Il apparait en haut a gauche de la fenetre. Ca fait bizzare. Peut on ouvrir le requester la ou il y a le bouton a cliquer ?
pas besoin d'api !!
il suffit d'utiliser le Container comme ceci
Code : Tout sélectionner
; on va poser le gadget colorRequester a ces coordonées
Declare color_requester(posx,posy)
Posx= 800
Posy=400
debug color_requester(posx,posy)
Procedure color_requester(Posx,Posy)
; By Zorro
protected Win=1
Protected Container=1
OpenWindow(Win, posx, posy, 1, 1, "ImageGadget",#PB_Window_BorderLess )
; ******* l'astuce pour placer le gadget palette ***********
ContainerGadget(container,1, 1, 1, 1, #PB_Container_Raised) ;>2
Couleur = ColorRequester() ;>3
CloseGadgetList() ;>2
; **********************************************
closewindow(win)
ProcedureReturn Couleur
EndProcedure
Re: Gadget rebel
Publié : dim. 04/juin/2017 21:28
par falsam
Bien cet astuce Zorro

Re: Gadget rebel
Publié : dim. 04/juin/2017 22:32
par SPH
Thanks a looot

Re: Gadget rebel
Publié : dim. 04/juin/2017 23:08
par Ar-S
@Oui enfin je parlais de la commande en temps que telle. Vieux cheater
Dans ton exemple il faut créer une autre fenêtre si on veut faire l'effet du colorequester "indépendant" car si ta fenêtre est plus grande, il se retrouvera en haut à gauche de la fenêtre en question.
Re: Gadget rebel
Publié : lun. 05/juin/2017 10:42
par SPH
Dans les faits, le requester ne s'affiche pas au centre de la fenetre. Pkoi ? (j'ai peut etre detruit le dispositif...)
Code : Tout sélectionner
; on va poser le gadget colorRequester a ces coordonées
Posx= 800
Posy=400
#Win=1
OpenWindow(#Win, 0, 0, Posx, Posy, "ImageGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
ContainerGadget(0, 4, 4, 4, 4, #PB_Container_Raised)
ColorRequester()
CloseGadgetList()
Repeat : Until WaitWindowEvent() = #PB_Event_CloseWindow
Re: Gadget rebel
Publié : lun. 05/juin/2017 12:43
par Zorro
Ar-S a écrit :@Oui enfin je parlais de la commande en temps que telle. Vieux cheater
Dans ton exemple il faut créer une autre fenêtre si on veut faire l'effet du colorequester "indépendant" car si ta fenêtre est plus grande, il se retrouvera en haut à gauche de la fenêtre en question.
ben oui , en fait, en y reflechissant,
le but de cette astuce c'est de pouvoir positionner le Colorrequester ou l'on veux
et pour ça, on l'intergre dans une fenetre et un container ....
ça reste un color_requester independant
ce n'est pas un gadget !
c'est un requester ! (qu'on peut maintenant positionner ou l'on veux ) ....
si on veux un colorrequester Gadget a integrer dans une fenetre, il faut le creer de toute piece
tout simplement
Re: Gadget rebel
Publié : lun. 05/juin/2017 14:08
par Zorro
en fait il suffit de fabriquer une procedure pour remplacer l'actuel fonction du requester de couleur
et ainsi obtenir ceci :
Code : Tout sélectionner
; on va poser le gadget colorRequester a ces coordonées
Declare color_requester(posx,posy)
Posx= 800
Posy=400
debug color_requester(posx,posy) ; appel de notre nouveau requester
Procedure color_requester(Posx,Posy)
; By Zorro
protected Win=1
Protected Container=1
OpenWindow(Win, posx, posy, 1, 1, "ImageGadget",#PB_Window_BorderLess )
; ******* l'astuce pour placer le gadget palette ***********
ContainerGadget(container,1, 1, 1, 1, #PB_Container_Raised) ;>2
Couleur = ColorRequester() ;>3
CloseGadgetList() ;>2
; **********************************************
closewindow(win)
ProcedureReturn Couleur
EndProcedure