il est tard, peut-être que je bute sur un rien mais je veux placer mes modules domotiques sur des plans. Les dessins de modules font 20x20. Les plans (2 pour le moment car je suis en version alpha

Je n'arrive pas à faire du drag'n drop (de la liste de droite vers le plan central)
PS: désolé, le code est crasseux et il n'y a pas de commentaire... je teste juste les fonctions pour préparer un premier programme opérationnel (et voir ce qu'il me manque ou ce que je dois améliorer sur l'interface). Par contre, il ne doit pas nécessiter de connexion, donc est utilisable par tous (pour le moment).

Code : Tout sélectionner
Enumeration
#Et0
#Et1
#Et2
#Et3
;
#Bl0
#Bl1
#Bl3
;
#Re0
#Re1
#Re2
;
#Dm0
;
#Te0
;
; Windows
#Window0
#B0
#B1
#B2
#B3
#B_Load
#B_Save
#B_Run
#B_Quit
#Panel0
#Panel1
#Panel2
#Panel3
#Canvas0
#Canvas1
#Canvas2
#Canvas3
#Area
EndEnumeration
;- Structures
Structure Vmsg
Len.i ; message len
*cmd ; message
time.i; date message
EndStructure
Structure VMB
ad.i
part.i
canvas.i
nom.s
x.i
y.i
Etat.i
type.s
EndStructure
UsePNGImageDecoder()
imgRdC = LoadImage(#Et0,"Domotique - RdC.png")
img1er = LoadImage(#Et1,"Domotique - 1er.png")
bl0 = LoadImage(#Bl0,"i_blind0.png")
bl1 = LoadImage(#Bl1,"i_blind1.png")
Re0 = LoadImage(#Re0,"i_Relay0.png")
Re1 = LoadImage(#Re1,"i_Relay1.png")
Te0 = LoadImage(#Te0,"i_Temp.png")
If OpenWindow(#Window0, 0, 0, 880, 685, "Veltron 0.1", #PB_Window_SystemMenu | #PB_Window_ScreenCentered)
PanelGadget (#Panel0, 5, 30, 808, 629)
AddGadgetItem (#Panel0, -1, "Etage 0")
CanvasGadget(#Canvas0, 1, 1, 800, 600)
AddGadgetItem (#Panel0, -1, "Etage 1")
CanvasGadget(#Canvas1, 1, 1, 800, 600)
AddGadgetItem (#Panel0, -1, "Etage 2")
CanvasGadget(#Canvas2, 1, 1, 800, 600)
AddGadgetItem (#Panel0, -1, "Etage 3")
CanvasGadget(#Canvas3, 1, 1, 800, 600)
CloseGadgetList()
;
; ListImage
ScrollAreaGadget(#Area, 815, 55, 62, 605, 62, 6400,#PB_ScrollArea_BorderLess)
For t = 1 To 255
Select Random(4)
Case 1
;ImageGadget(t+100, 5, t*25, 22, 22, ImageID(#Bl0))
ImageGadget(t+100, 5, t*25, 22, 22, #Bl0)
Case 2
ImageGadget(t+100, 5, t*25, 22, 22, ImageID(#Te0))
Default
ImageGadget(t+100, 5, t*25, 22, 22, ImageID(#Re0))
EndSelect
GadgetToolTip(t+100, "Objet N°"+Str(t))
Next t
CloseGadgetList()
; Functions buttons
ButtonGadget(#B_Load,320,5,65,20,"Load")
ButtonGadget(#B_Save,390,5,65,20,"Save")
ButtonGadget(#B_Run,480,5,65,20,"Run",#PB_Button_Toggle)
; Exit button
ButtonGadget(#B_Quit,560,5,65,20,"Quit")
;
EnableGadgetDrop(#Canvas0, #PB_Drop_Image, #PB_Drag_Move)
If StartDrawing(CanvasOutput(#Canvas0))
DrawImage(ImageID(#Et0), 0, 0)
StopDrawing()
EndIf
If StartDrawing(CanvasOutput(#Canvas1))
DrawImage(ImageID(#Et1), 0, 0)
StopDrawing()
EndIf
InitNetwork()
If OpenNetworkConnection("192.168.168.250",8080)
Else
; End
EndIf
Repeat
Event = WaitWindowEvent(20)
If Event = #PB_Event_Gadget
GadgetSelected = EventGadget()
EType = EventType()
If EType = #PB_EventType_DragStart
Debug "Hello "+Str(GadgetSelected)+" / "+Str(GetGadgetState(GadgetSelected))
;DragImage(ImageID(GetGadgetState(GadgetSelected)), #PB_Drag_Move)
EndIf
If EType = #PB_Event_GadgetDrop
Debug "bye"
If StartDrawing(CanvasOutput(#Canvas0))
x = GetGadgetAttribute(#Canvas0, #PB_Canvas_MouseX)
y = GetGadgetAttribute(#Canvas0, #PB_Canvas_MouseY)
DrawImage(110, x, y)
StopDrawing()
EndIf
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
;- Procedures
Procedure Scan()
*BTypeQ = AllocateMemory(10)
*BNameQ = AllocateMemory(10)
*BResp = AllocateMemory(4096)
EndProcedure