splittergadget et panel gadget

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

splittergadget et panel gadget

Message par blendman »

salut

J'ai 2 questions concernant les splitters gadgets (associés à d'autres gadgets comme les panelgadget) :
- savez-vous comment on peut faire en sorte que lorsque l'on bouge le 1er panel, le 2ème reste là où il est et se redimensionne uniquement ?)
- lorsque l'on change la dimension d'un panelgadget, il arrive qu'on voit encore un morceau des gadget contenu dans celui-ci, ici un morceau du button gadget fait un petit bug graphique si on redimensionne le panel (avec le splitter). C'est un bug ou on peut résoudre ça ?

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 300, 300, "SplitterGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  Enumeration 
    #scrollarea 
    #containter1
    #Panel1  
    #Panel2  
    #Panel3 
    #Splitter1 
    #Splitter2 
    #btn1 
  EndEnumeration
  
  PanelGadget(#Panel1, 0, 0, 0,0)
  AddGadgetItem(#Panel1, -1, "Sub-Panel 1")
  ButtonGadget(#btn1,5,5,120,20,"test")
  CloseGadgetList()  
  
  PanelGadget(#Panel2, 0, 0, 0, 0)
  AddGadgetItem(#Panel2, -1, "Sub-Panel 2")
  CloseGadgetList()
  
  PanelGadget(#panel3,0,0,0,0)
  AddGadgetItem(#Panel3, -1, "Sub-Panel 3")
  ContainerGadget(#containter1,5,5,0,0)
  CloseGadgetList()
  CloseGadgetList()
  
  SplitterGadget(#Splitter1, 0, 0, 230, 100, #Panel1, #Panel2) 
  SplitterGadget(#Splitter2, 0, 100, 230, 100, #Panel2, #Panel3)
  
  Repeat
  Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Merci :)
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: splittergadget et panel gadget

Message par dayvid »

ça dois pas être très compliquer je pense comme truc, je regarde ça :wink:
malheureusement je connais pas trop ce gadget mais il m'intéresse donc je vais apprendre :)

Edit: Tien regarde ça pour le bouton:

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 300, 300, "SplitterGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  Enumeration 
    #scrollarea 
    #containter1
    #Panel1  
    #Panel2  
    #Panel3 
    #Splitter1 
    #Splitter2 
    #btn1 
  EndEnumeration
  
  PanelGadget(#Panel1, 0, 0, 0,0)
  AddGadgetItem(#Panel1, -1, "Sub-Panel 1")
  ButtonGadget(#btn1,5,5,120,20,"test")
  CloseGadgetList()  
  
  PanelGadget(#Panel2, 0, 0, 0, 0)
  AddGadgetItem(#Panel2, -1, "Sub-Panel 2")
  CloseGadgetList()
  
  PanelGadget(#panel3,0,0,0,0)
  AddGadgetItem(#Panel3, -1, "Sub-Panel 3")
  ContainerGadget(#containter1,5,5,0,0)
  CloseGadgetList()
  CloseGadgetList()
  
  SplitterGadget(#Splitter1, 0, 0, 230, 100, #Panel1, #Panel2, #PB_Splitter_Separator) 
  SplitterGadget(#Splitter2, 0, 100, 230, 100, #Panel2, #Panel3, #PB_Splitter_Separator)
  
  Repeat ; Start of the event loop
    
    Event = WaitWindowEvent() ; This line waits until an event is received from Windows
    WindowID = EventWindow() ; The Window where the event is generated, can be used in the gadget procedures
    GadgetID = EventGadget() ; Is it a gadget event?
    EventType = EventType() ; The event type
    
    ;You can place code here, and use the result as parameters for the procedures
    
    If Event = #PB_Event_Gadget
      
      If GadgetID = #Splitter1
        
        If GadgetHeight(#Panel1) < 51
          HideGadget(#btn1, 1)
        Else
          HideGadget(#btn1, 0)
        EndIf
        
      EndIf
      
    EndIf
    
  Until Event = #PB_Event_CloseWindow ; End of the event loop
  
EndIf

La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: splittergadget et panel gadget

Message par Backup »

pour ma part , le fait que le panel 2 se decale vers le bas lorsqu'on bouge le Silter 1

est un bug !

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 300, 500, "SplitterGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	Enumeration
		#scrollarea
		#containter1
		#Panel1 
		#Panel2 
		#Panel3
		#Splitter1
		#Splitter2
		#btn1
		#btn2
	EndEnumeration
	
	PanelGadget(#Panel1, 0, 0, 0,0)
	AddGadgetItem(#Panel1, -1, "Sub-Panel 1")
	
	ButtonGadget(#btn1,5,5,120,20,"test")
	
	CloseGadgetList()
	
	
	PanelGadget(#Panel2, 0, 0, 0, 0)
	AddGadgetItem(#Panel2, -1, "Sub-Panel 2")
	ButtonGadget(#btn2,5,5,120,20,"test2")
	CloseGadgetList()
	
	; 
	;  
	PanelGadget(#panel3,0,0,0,0)
	AddGadgetItem(#Panel3, -1, "Sub-Panel 3")
	ContainerGadget(#containter1,5,5,0,0)
	CloseGadgetList()
	CloseGadgetList()
	
	;  
	;   
	SplitterGadget(#Splitter1, 0, 0, 230, 200, #Panel1, #Panel2,#PB_Splitter_SecondFixed |#PB_Splitter_Separator)
	SplitterGadget(#Splitter2, 0, 130, 230, 400, #Panel2, #Panel3,#PB_Splitter_Separator )
	
	
	Repeat
	Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf






; EPB

Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: splittergadget et panel gadget

Message par blendman »

je pense aussi que c'est un bug.

je vais le poster sur le forum Anglais, je crois ;)

Merci.
zaphod
Messages : 135
Inscription : dim. 07/déc./2008 9:32

Re: splittergadget et panel gadget

Message par zaphod »

Salut,

J'ai ça qui marche sous pb 4.61b2 et xp sp3

Code : Tout sélectionner


If OpenWindow(0, 0, 0, 300, 300, "SplitterGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  Enumeration 
    #scrollarea 
    #containter1
    #Panel1  
    #Panel2  
    #Panel3 
    #Splitter1 
    #Splitter2 
    #btn1 
  EndEnumeration
  
  PanelGadget(#Panel1, 5, 5, 200,30)
  AddGadgetItem(#Panel1, -1, "Sub-Panel 1")
  ButtonGadget(#btn1,5,5,120,20,"test")
  CloseGadgetList()  
  
  ContainerGadget(#containter1,5,20,230,280)
  PanelGadget(#Panel2, 5, 0, 200, 30)
  AddGadgetItem(#Panel2, -1, "Sub-Panel 2")
  CloseGadgetList()
  
  PanelGadget(#panel3,5,30,200,30)
  AddGadgetItem(#Panel3, -1, "Sub-Panel 3")
    CloseGadgetList()
  SplitterGadget(#Splitter2, 5, 5, 230, 200, #Panel2, #Panel3, #PB_Splitter_Separator)  
  CloseGadgetList()
  
  
  
  SplitterGadget(#Splitter1, 5, 5, 230, 280, #Panel1, #containter1, #PB_Splitter_Separator) 
  
 
  
  
  Repeat
  Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf



Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: splittergadget et panel gadget

Message par Backup »

oui ça marche ...

cependant, je ne suis pas sur qu'il soit normal de fermer le Spilter2 avec un CloseGadgetList().

m'enfin , puisque ça marche :)
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Re: splittergadget et panel gadget

Message par Le Soldat Inconnu »

c'est pas un bug, il faut l'écrire correctement, c'est tout :D

Voilà la solution, le splitter 1 est entre le panel 1 et le splitter 2 (qui lui est entre le panel 2 et le panel 3)

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 300, 300, "SplitterGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
	Enumeration
		#scrollarea
		#containter1
		#Panel1
		#Panel2
		#Panel3
		#Splitter1
		#Splitter2
		#btn1
	EndEnumeration
	
	PanelGadget(#Panel1, 0, 0, 300, 150)
		AddGadgetItem(#Panel1, -1, "Sub-Panel 1")
		ButtonGadget(#btn1, 5, 5, 120, 20, "test")
	CloseGadgetList()
	
		PanelGadget(#Panel2, 0, 0, 300, 150)
			AddGadgetItem(#Panel2, -1, "Sub-Panel 2")
		CloseGadgetList()
		
		PanelGadget(#Panel3, 0, 0, 300, 150)
			AddGadgetItem(#Panel3, -1, "Sub-Panel 3")
		CloseGadgetList()
		
		SplitterGadget(#Splitter2, 0, 0, 300, 150, #Panel2, #Panel3, #PB_Splitter_Separator)
	
	SplitterGadget(#Splitter1, 0, 0, 300, 300, #Panel1, #Splitter2, #PB_Splitter_Separator)
	
	
	
	Repeat
	Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: splittergadget et panel gadget

Message par Backup »

le manque de dimensions des panel aurai suffit a mettre le souk ?

je n'avais pas corrigé , puisque effectivement , le Spilter désactive ces valeurs ... :roll:
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: splittergadget et panel gadget

Message par blendman »

salut

Merci pour les exemples, mais pour moi, il y a quand même un "bug" dans vos exemples :
lorsque l'on bouge le panel numéro 1, ça ne devrait changer que le numéro 2 et pas le 2 et le 3 ;).
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: splittergadget et panel gadget

Message par Backup »

c'est le parametre : #PB_Splitter_SecondFixed qui gere ça :)

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 300, 300, "SplitterGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   Enumeration
      #scrollarea
      #containter1
      #Panel1
      #Panel2
      #Panel3
      #Splitter1
      #Splitter2
      #btn1
   EndEnumeration
   
   PanelGadget(#Panel1, 0, 0, 300, 150)
      AddGadgetItem(#Panel1, -1, "Sub-Panel 1")
      ButtonGadget(#btn1, 5, 5, 120, 20, "test")
   CloseGadgetList()
   
      PanelGadget(#Panel2, 0, 0, 300, 150)
         AddGadgetItem(#Panel2, -1, "Sub-Panel 2")
      CloseGadgetList()
      
      PanelGadget(#Panel3, 0, 0, 300, 150)
         AddGadgetItem(#Panel3, -1, "Sub-Panel 3")
      CloseGadgetList()
      
      SplitterGadget(#Splitter2, 0, 0, 300, 150, #Panel2, #Panel3, #PB_Splitter_Separator|#PB_Splitter_SecondFixed)
   
   SplitterGadget(#Splitter1, 0, 0, 300, 300, #Panel1, #Splitter2, #PB_Splitter_Separator|#PB_Splitter_SecondFixed)
   
   
   
   Repeat
   Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf

; 
; EPB 

Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: splittergadget et panel gadget

Message par blendman »

ah oui, nickel comme ça :D

Il reste un léger "bug" visuel : l'intérieur d'un panel est toujours légèrement plus grand que le panel lui-même.

Par exemple, ici le container dépasse du bas du panel :

Code : Tout sélectionner

If OpenWindow(0, 0, 0, 300, 300, "SplitterGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
   Enumeration
      #scrollarea
      #container1
      #Panel1
      #Panel2
      #Panel3
      #Splitter1
      #Splitter2
      #btn1
   EndEnumeration
   
   PanelGadget(#Panel1, 0, 0, 300, 150)
      AddGadgetItem(#Panel1, -1, "Sub-Panel 1")
      ButtonGadget(#btn1, 5, 5, 120, 20, "test")
      
   CloseGadgetList()
   
      PanelGadget(#Panel2, 0, 0, 300, 150)
      AddGadgetItem(#Panel2, -1, "Sub-Panel 2")
      ContainerGadget(#container1,5,5,280,140)      
      CloseGadgetList()
      CloseGadgetList()
     
      PanelGadget(#Panel3, 0, 0, 300, 150)
         AddGadgetItem(#Panel3, -1, "Sub-Panel 3")
      CloseGadgetList()
     
      SplitterGadget(#Splitter2, 0, 0, 300, 150, #Panel2, #Panel3, #PB_Splitter_Separator|#PB_Splitter_SecondFixed)
   
   SplitterGadget(#Splitter1, 0, 0, 300, 300, #Panel1, #Splitter2, #PB_Splitter_Separator|#PB_Splitter_SecondFixed)
   
   
   
   Repeat
   Until WaitWindowEvent() = #PB_Event_CloseWindow
EndIf
Répondre