Page 1 sur 1

[Résolu] Ajout automatique de Gadget + ContainerGadget

Publié : ven. 12/oct./2012 11:48
par Golfy
Bonjour à tous,

1) j'ai plusieurs gadgets que je voudrais ajouter automatiquement (découverte de modules domotiques) mais les coordonnées pourraient dépasser la taille de la fenêtre principal (openwindow).
Existe-t-il un "ascenseur" (scrollgadget) dans ce cas ? ou quel gadget dois-je employer ?

2) j'aimerai utiliser les panel (pour même raison mais aussi avoir plusieurs "vues" ou plusieurs fonctions). Dois-je utiliser un ContainerGadget pour chaque onglet du panel, ou bien chaque panel est défini (comment ajouter dynamiquement un gadget alors ?), etc...

des exemples de codes m'intéressent pour comprendre et pouvoir adapter, voir créer mon système

Re: Ajout automatique de Gadget + ContainerGadget

Publié : ven. 12/oct./2012 12:25
par Ar-S
Perso je trouve plus clair d'utiliser un ContainerGadget.
ça s'avère aussi bien pratique lorsque tu dois cacher/afficher une série de gadgets.
Pour tes gadgets ajoutés, pourquoi ne redimensionnes tu pas simplement la fenêtre lors de l'ajout de ces gadgets avec un

Code : Tout sélectionner

ResizeWindow(#Fenetre, 1, 1, LargeurWindow + Largeur Gadget, HauteurWindow + hauteurgadget )

Re: Ajout automatique de Gadget + ContainerGadget

Publié : ven. 12/oct./2012 12:44
par Fred
Essaie avec ScrollAreaGadget()

Re: Ajout automatique de Gadget + ContainerGadget

Publié : ven. 12/oct./2012 12:52
par falsam
Avec un exemple (j'ai été grillé par le Maître des lieux :p)

Code : Tout sélectionner

Enumeration
  #Mainform
  #Container
EndEnumeration


Define.l Event, WEvent, MEvent, GEvent, TEvent

Global WindowStyle.i=#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered, X.i

Procedure Open_MainForm()
  OpenWindow(#Mainform, 0, 0, 500, 400, "New Form", WindowStyle)
  ScrollAreaGadget(#Container, 0, 0, 500, 400, 450, 1500,#PB_ScrollArea_BorderLess)
  For X=1 To 50
    TextGadget(#PB_Any, 10, X*25, 50, 20, "Item "+Str(X))
    StringGadget(#PB_Any, 60, X*25, 150, 20, "Item "+Str(X))
  Next
 CloseGadgetList() 

EndProcedure

Open_MainForm()

;Tu découvres un gadget à ajouter 
OpenGadgetList(#Container)
ListViewGadget(#PB_Any, 10, X*25, 300, 100)
CloseGadgetList()


Repeat
  Event  = WaitWindowEvent(10)
  WEvent = EventWindow() ;different de WindowEvent() :p (oui je me suis fais avoir !!!)
  MEvent = EventMenu()
  GEvent = EventGadget()
  TEvent = EventType()
  Select Event
    Case #PB_Event_Gadget
      Select GEvent
      EndSelect
        
    Case #PB_Event_CloseWindow
      End
  EndSelect
ForEver

[Résolu] Re: Ajout automatique de Gadget + ContainerGadget

Publié : ven. 12/oct./2012 14:28
par Golfy
falsam a écrit :Avec un exemple (j'ai été grillé par le Maître des lieux :p)
oui, mais tu as fourni un exemple parfait ! j'ai compris comment fonctionne ScrollAreaGadget :D

C'est exactement ce qu'il me faut 8)

Merci à tous !

Re: Ajout automatique de Gadget + ContainerGadget

Publié : ven. 12/oct./2012 14:50
par Golfy
Ar-S a écrit :Perso je trouve plus clair d'utiliser un ContainerGadget.
ça s'avère aussi bien pratique lorsque tu dois cacher/afficher une série de gadgets.
Pour tes gadgets ajoutés, pourquoi ne redimensionnes tu pas simplement la fenêtre lors de l'ajout de ces gadgets avec un

Code : Tout sélectionner

ResizeWindow(#Fenetre, 1, 1, LargeurWindow + Largeur Gadget, HauteurWindow + hauteurgadget )
Rien ne m'empèchera d'utiliser un ScrollAreaGadget dans un ContainerGadget :D

ton idée est bonne mais lorsque tu ajoutes des gadgets (comme des courbes de températures ou autres...) à un moment, tu risque fortement de dépasses la hauteur de l'écran physique :roll:
Image

Par contre, tu utilises ContainerGadget dans PanelGadget ou bien PanelGadget est déjà une sorte de container ? en gros quelles sont les différences ?
Dans mon esprit, je voyais un onglet "Tableau de bord", un onglet "RdC" et un autre "1er étage" me permettant d'interagir avec mes modules (par l'intermédiaire des gadgets créés dynamiquement pour la petite histoire).
Enfin un onglet "Conditions" ou "Evènements" pour automatiser certaines tâches... ce dernier point, on en reparlera dans un autre topic 8)