[RESOLU] Activer un Tab Panel par son nom

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
micam
Messages : 46
Inscription : ven. 27/avr./2012 15:29

[RESOLU] Activer un Tab Panel par son nom

Message par micam »

Bonjour,
J'essai d'activer un Tab de PanelGadget au chargement de la page (peut-être par son nom).
(pour des Tabs crées dynamiquement dont la position ne sera pas toujours la même)
Une fois le Tab "Légumes" sera activé au chargement de page, une autre fois "Poisson" ect...
J'espère que mon explication est assez claire.
Merci d'avance de votre aide.

Code : Tout sélectionner

Global Window_1

Global Panel_0, Text_Fruit_Copy1, Text_Legume_Copy1, Text_Poisson_Copy1, Text_Viande_Copy1, Text_Fruit, Text_Viande, Text_Poisson, Text_Legume, Text_4, Text_5


Procedure OpenWindow_1(x = 0, y = 0, width = 370, height = 240)
  Window_1 = OpenWindow(#PB_Any, x, y, width, height, "", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
  Panel_0 = PanelGadget(#PB_Any, 10, 10, 360, 110)
  AddGadgetItem(Panel_0, -1, "Fruits")
  Text_Fruit_Copy1 = TextGadget(#PB_Any, 20, 40, 50, 25, "Fruits")
  AddGadgetItem(Panel_0, -1, "Légumes")
  Text_Legume_Copy1 = TextGadget(#PB_Any, 80, 40, 60, 25, "Légumes")
  AddGadgetItem(Panel_0, -1, "Viande")
  Text_Poisson_Copy1 = TextGadget(#PB_Any, 160, 40, 60, 25, "Poisson")
  AddGadgetItem(Panel_0, -1, "Poisson")
  Text_Viande_Copy1 = TextGadget(#PB_Any, 250, 40, 60, 25, "Viande")
  CloseGadgetList()
  Text_Fruit = TextGadget(#PB_Any, 250, 200, 50, 25, "Fruits")
  Text_Viande = TextGadget(#PB_Any, 170, 200, 60, 25, "Viande")
  Text_Poisson = TextGadget(#PB_Any, 90, 200, 60, 25, "Poisson")
  Text_Legume = TextGadget(#PB_Any, 10, 200, 60, 25, "Légumes")
  Text_4 = TextGadget(#PB_Any, 10, 130, 360, 25, "Activer un Tab Panel sans connaitre sa position qui ne sera jamais la même"+ Chr(13) + "J'aimerai faire avec le nom du tab GetGadgetItemText peut-être.")
  Text_5 = TextGadget(#PB_Any, 10, 160, 360, 25, "En cliquant sur chaque TextGadget ci-dessous.")
EndProcedure

Procedure Window_1_Events(event)
  Select event
    Case #PB_Event_CloseWindow
      ProcedureReturn #False
      
    Case #PB_Event_Menu
      Select EventMenu()
      EndSelect
      
    Case #PB_Event_Gadget
      Select EventGadget()
        Case Text_Fruit
          ;SetGadgetState(Panel_0, ??????????)
        Case Text_Viande
          ;SetGadgetState(Panel_0, ??????????)
        Case Text_Legume
          ;SetGadgetState(Panel_0, ??????????)
        Case Text_Poisson
          ;SetGadgetState(Panel_0, ??????????)
      EndSelect
  EndSelect
  ProcedureReturn #True
EndProcedure

OpenWindow_1()
;Ajoute_ListIcon_Depuis_Une_Variable()
Repeat
  event = WaitWindowEvent()
  WEvent = EventWindow()
Until Window_1_Events(event) = #False

End
Dernière modification par micam le dim. 30/juil./2017 14:21, modifié 1 fois.
Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Activer un Tab Panel par son nom

Message par Zorro »

SetGadgetState(#Gadget, Etat) ;Change l'onglet en cours
Etat est le numero de l'onglet a activer

ce code change d'onglet chaque seconde

patience d'au moins 2-4 secondes au lancement, le temps que tout se mette en place

Code : Tout sélectionner



Enumeration
		#Win 
		#panel
		#sous_panel
		#bouton1
		#bouton2
Endenumeration

If OpenWindow(#Win , 0, 0, 322, 220, "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
		PanelGadget     (#panel, 8, 8, 306, 203)
		AddGadgetItem (#panel, -1, "Onglet 1")
		AddGadgetItem (#panel, -1, "Onglet 2")
		AddGadgetItem (#panel, -1, "Onglet 3")
		PanelGadget (#sous_panel, 5, 5, 290, 166)
		AddGadgetItem(#sous_panel, -1, "Sous-onglet 1")
		AddGadgetItem(#sous_panel, -1, "Sous-onglet 2")
		AddGadgetItem(#sous_panel, -1, "Sous-onglet 3")
		CloseGadgetList()
		AddGadgetItem (#panel, -1,"Onglet 4")
		ButtonGadget(#bouton1, 10, 15, 80, 24,"Bouton 1")
		ButtonGadget(#bouton2, 95, 15, 80, 24,"Bouton 2")
		CloseGadgetList()
		
		Repeat : 
				event= WaitWindowEvent(2) 
				
				SetGadgetState(#panel ,number)
				number=number+1 
				if number>3:number=0:endif
				Delay(1000)
		Until event= #PB_Event_CloseWindow
EndIf
; Epb


Avatar de l’utilisateur
Zorro
Messages : 2186
Inscription : mar. 31/mai/2016 9:06

Re: Activer un Tab Panel par son nom

Message par Zorro »

si maintenant tu tiens a utiliser un nom pour activer un onglet , voici une solution

Code : Tout sélectionner



Enumeration
		#Win 
		#panel
		#sous_panel
		#bouton1
		#bouton2
Endenumeration

Declare name_to_num(nom.s)

If OpenWindow(#Win , 0, 0, 322, 220, "PanelGadget", #PB_Window_SystemMenu | #PB_Window_ScreenCentered) 
		PanelGadget     (#panel, 8, 8, 306, 203)
		AddGadgetItem (#panel, -1, "Onglet 1")
		AddGadgetItem (#panel, -1, "Onglet 2")
		AddGadgetItem (#panel, -1, "Onglet 3")
		PanelGadget (#sous_panel, 5, 5, 290, 166)
		AddGadgetItem(#sous_panel, -1, "Sous-onglet 1")
		AddGadgetItem(#sous_panel, -1, "Sous-onglet 2")
		AddGadgetItem(#sous_panel, -1, "Sous-onglet 3")
		CloseGadgetList()
		AddGadgetItem (#panel, -1,"Onglet 4")
		ButtonGadget(#bouton1, 10, 15, 80, 24,"Bouton 1")
		ButtonGadget(#bouton2, 95, 15, 80, 24,"Bouton 2")
		CloseGadgetList()
		
		
		
		nom.s="Onglet 3" ; -------------------<<<<<< ICI change le nom pour activer un autre onglet
		number=name_to_num(nom.s)
		
		
		Repeat :event= WaitWindowEvent(2) : Until event= #PB_Event_CloseWindow
EndIf


Procedure name_to_num(nom.s)
;by Zorro
; cette procedure active le numero d'onglet correspondant a un nom d'onglet passé en paramètre
		tab.s="Onglet 1,Onglet 2,Onglet 3,Onglet 4" ; << bien mettre le nom des onglets ici ......
		For i=1 to 4 ; attention a bien mettre le nombre d'onglet ici
				retour.s=stringfield(tab.s,i,",")
				If retour.s=nom.s
						SetGadgetState(#panel ,i-1) ; active 
						ProcedureReturn
				Endif
		Next i
		ProcedureReturn -1 ; erreur pas de nom trouvé
EndProcedure
; Epb

micam
Messages : 46
Inscription : ven. 27/avr./2012 15:29

Re: Activer un Tab Panel par son nom

Message par micam »

Bonjour,

Bravo.
Ça marche très bien.
Merci de ton aide.
Répondre