Page 1 sur 1

Transformer un Screen en gadget

Publié : lun. 22/juin/2015 9:13
par microdevweb
Ce post fait suite au post http://www.purebasic.fr/french/viewtopi ... =1&t=15256 après, plusieurs solutions "spock" dans un des ses codes montre qu'il est possible, d' affecter un screen à un gadget plutôt qu'a une fenêtre.L'avantage du screen réside dans sa rapidité d'affichage et le peu de consommation en ressource. Ce code montre comment avoir les avantages d'un canvas gadget et d'un screen, il y a des scrolArea, un splitter un drag and drop du screen vers la liste

Attention: ExamineMouse() n'a plus d’effet

Code : Tout sélectionner

UsePNGImageDecoder()
Enumeration
      #MainForm
      #List
      #Canvas
      #Area
      #AreaList
      #splitter
EndEnumeration
#SplitterWidth=150
InitSprite()
InitKeyboard()
InitMouse()
OpenWindow(#MainForm,0,0,800,600,"Teste drag",#PB_Window_SystemMenu|#PB_Window_ScreenCentered)
ScrollAreaGadget(#AreaList,0,0,#SplitterWidth,600,#SplitterWidth,600)
ListViewGadget(#List,0,0,#SplitterWidth,600)
CloseGadgetList()
EnableGadgetDrop(#List,#PB_Drop_Text,#PB_Drag_Copy)
ScrollAreaGadget(#Area,200,0,600,600,1200,1200)
CanvasGadget(#Canvas,0,0,1200,1200)
OpenWindowedScreen(GadgetID(#Canvas),0,0,1200,1200)
CloseGadgetList()
SplitterGadget(#splitter,0,0,800,600,#AreaList,#Area,#PB_Splitter_Vertical)
SetGadgetState(#splitter,#SplitterWidth)
CreateSprite(0,200,200)
StartDrawing(SpriteOutput(0))
Box(0,0,200,200,#Red)
StopDrawing()
X=316
N=0
Repeat
      Event=WaitWindowEvent(1)
      X=GetGadgetAttribute(#Canvas,#PB_Canvas_MouseX)
      Y=GetGadgetAttribute(#Canvas,#PB_Canvas_MouseY)
      Select Event
            Case #PB_Event_CloseWindow   
                  End
            Case #PB_Event_Gadget
                  Select EventGadget()
                        Case #Canvas
                              Select EventType()
                                    Case #PB_EventType_LeftButtonDown
                                          DragText("teste")
                                    Case #PB_EventType_MouseEnter
                                          ClearScreen(RGB(0,0,0))
                                          DisplaySprite(0,X,Y)
                                          FlipBuffers()
                                    Case #PB_EventType_MouseMove
                                          ClearScreen(RGB(0,0,0))
                                          DisplaySprite(0,X,Y)
                                          FlipBuffers()
                              EndSelect
                        Case #splitter
                              If GetGadgetState(#splitter)>#SplitterWidth
                                    ResizeGadget(#List,#PB_Ignore,#PB_Ignore,GetGadgetState(#splitter),#PB_Ignore)
                                    SetGadgetAttribute(#AreaList,#PB_ScrollArea_InnerWidth,GetGadgetState(#splitter))
                              Else
                                    ResizeGadget(#List,#PB_Ignore,#PB_Ignore,#SplitterWidth,#PB_Ignore)
                                    SetGadgetAttribute(#AreaList,#PB_ScrollArea_InnerWidth,#SplitterWidth)
                              EndIf     
                  EndSelect
            Case #PB_Event_GadgetDrop
                  Select EventGadget()
                        Case  #List
                              AddGadgetItem(#List,-1,EventDropText())
                  EndSelect
      EndSelect
ForEver

Re: Transformer un Screen en gadget

Publié : lun. 22/juin/2015 11:10
par Ar-S
J'ai un flipbuffer qui me dit qu'aucun ecran n'est ouvert (sous linux)

Re: Transformer un Screen en gadget

Publié : lun. 22/juin/2015 11:21
par microdevweb
Aie je suis sous window 7, donc pas testé sous linux ou mac

Re: Transformer un Screen en gadget

Publié : lun. 22/juin/2015 13:26
par Ar-S
Après qques débugs, c'est bien l'affectation d'un screen à un gadget qui pose problème sous linux. Attention à vos codes si vous comptez les porter en multiplateforme.

Re: Transformer un Screen en gadget

Publié : lun. 22/juin/2015 13:32
par microdevweb
Si une âme charitable avait l'amabilité de tester sous mac OS... Merci

Re: Transformer un Screen en gadget

Publié : lun. 22/juin/2015 14:26
par Micheao
Marche trés bien sous win 8.1 :mrgreen: