Transformer un Screen en gadget

Partagez votre expérience de PureBasic avec les autres utilisateurs.
Avatar de l’utilisateur
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Transformer un Screen en gadget

Message 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
Dernière modification par microdevweb le lun. 22/juin/2015 11:34, modifié 1 fois.
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Transformer un Screen en gadget

Message par Ar-S »

J'ai un flipbuffer qui me dit qu'aucun ecran n'est ouvert (sous linux)
~~~~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
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Transformer un Screen en gadget

Message par microdevweb »

Aie je suis sous window 7, donc pas testé sous linux ou mac
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Avatar de l’utilisateur
Ar-S
Messages : 9477
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Transformer un Screen en gadget

Message 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.
~~~~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
microdevweb
Messages : 1800
Inscription : mer. 29/juin/2011 14:11
Localisation : Belgique

Re: Transformer un Screen en gadget

Message par microdevweb »

Si une âme charitable avait l'amabilité de tester sous mac OS... Merci
Windows 10 64 bits PB: 5.70 ; 5.72 LST
Work at Centre Spatial de Liège
Micheao
Messages : 533
Inscription : dim. 07/déc./2014 10:12
Localisation : Sud-Est

Re: Transformer un Screen en gadget

Message par Micheao »

Marche trés bien sous win 8.1 :mrgreen:
Répondre