Gadget rebel

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Gadget rebel

Message 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 ?? :|

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Micoute
Messages : 2584
Inscription : dim. 02/oct./2011 16:17
Localisation : 35520 La Mézière

Re: Gadget rebel

Message 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
Microsoft Windows 10 Famille 64 bits : Carte mère : ASRock 970 Extreme3 R2.0 : Carte Graphique NVIDIA GeForce RTX 3080 : Processeur AMD FX 6300 6 cœurs 12 threads 3,50 GHz PB 6.20 LTS (x64)
Un homme doit être poli, mais il doit aussi être libre !
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Gadget rebel

Message par SPH »

Grand merci Micoute :P

ou : Merci GRAND Micoute (comme tu preferes) :wink:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Gadget rebel

Message par SPH »

le gadget rebel du jour :

Code : Tout sélectionner

Resultat = ColorRequester([Couleur])
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 ?

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Gadget rebel

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Gadget rebel

Message 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 ?

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Gadget rebel

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Gadget rebel

Message par SPH »

merci falsam, ca peux etre utile aussi :P

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Gadget rebel

Message par Zorro »

SPH a écrit :le gadget rebel du jour :

Code : Tout sélectionner

Resultat = ColorRequester([Couleur])
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
Dernière modification par Zorro le lun. 05/juin/2017 14:12, modifié 1 fois.
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Gadget rebel

Message par falsam »

Bien cet astuce Zorro :wink:
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Gadget rebel

Message par SPH »

Thanks a looot :idea:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Gadget rebel

Message 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.
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Avatar de l’utilisateur
SPH
Messages : 4947
Inscription : mer. 09/nov./2005 9:53

Re: Gadget rebel

Message 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 
      

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Gadget rebel

Message 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
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Gadget rebel

Message 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
Répondre