drag & drop mit buttonimagegadget's
Verfasst: 13.06.2013 20:57
Hallo Jungs,
ich habe eine Art mini Lagerverwaltung programmiert und sie läuft nun schon seit Jahren in einer zerspanenden Produktivumgebung:
- der Client wird nur mit einem umgebauten USB Joystick Interface oder per Barcodescanner bedient:

- die Verwaltung kann an jedem anderen Rechner normal genutzt werden:

nun da alles läuft geht es darum die eine oder andere Zusatzoption hinzuzufügen, derzeit möchte ich in der Verwaltung die Inhalte der buttonimagegadgets gerne per drag & drop verschieben.
in einem schnellen minitest funktioniert es auch gut, wenn auch nicht gerade elegant
aber das Hauptfenster verliert wärend des verschiebens den Fokus und bei verschiedenen Styles gibt es einen Versatz... daher mein Anliegen, habt ihr noch einen besseren Lösungsansatz?
hier das Archiv:
http://spezialumbauten-zittau.de/sharin ... 20drop.zip
hier der Code:
ich habe eine Art mini Lagerverwaltung programmiert und sie läuft nun schon seit Jahren in einer zerspanenden Produktivumgebung:
- der Client wird nur mit einem umgebauten USB Joystick Interface oder per Barcodescanner bedient:

- die Verwaltung kann an jedem anderen Rechner normal genutzt werden:

nun da alles läuft geht es darum die eine oder andere Zusatzoption hinzuzufügen, derzeit möchte ich in der Verwaltung die Inhalte der buttonimagegadgets gerne per drag & drop verschieben.
in einem schnellen minitest funktioniert es auch gut, wenn auch nicht gerade elegant

aber das Hauptfenster verliert wärend des verschiebens den Fokus und bei verschiedenen Styles gibt es einen Versatz... daher mein Anliegen, habt ihr noch einen besseren Lösungsansatz?
hier das Archiv:
http://spezialumbauten-zittau.de/sharin ... 20drop.zip
hier der Code:
Code: Alles auswählen
; Zeichenvorlage | +Chr(10)+
ExamineDesktops()
If OpenWindow(0, (DesktopWidth(0)/2)-250, (DesktopHeight(0)/2)-250, 500, 500, "buttonimagegadget verschieben Test")
If CreateMenu(0, WindowID(0))
MenuTitle("File")
;MenuItem( 1, "&Load...")
MenuItem( 7, "&Quit")
MenuTitle("Edition")
MenuItem( 8, "Cut")
MenuItem( 9, "Copy")
MenuItem(10, "Paste")
MenuTitle("?")
MenuItem(11, "About")
EndIf
LoadImage(1,"1.bmp")
LoadImage(2,"2.bmp")
LoadImage(3,"3.bmp")
LoadImage(4,"4.bmp")
ButtonImageGadget(1,10,10,100,100,ImageID(1))
ButtonImageGadget(2,120,10,100,100,ImageID(2))
ButtonImageGadget(3,230,10,100,100,ImageID(3))
ButtonImageGadget(4,340,10,100,100,0)
Repeat
Select WaitWindowEvent()
Case #WM_LBUTTONDOWN
;Debug "linke Maustaste runter"
hWnd = WindowID(GetActiveWindow())
GetCursorPos_ (@p.POINT)
wGad = WindowFromPoint_(p\y << 32 + p\x)
ScreenToClient_ (hWnd, @p)
cGad = ChildWindowFromPoint_ (hWnd, p\y<< 32+p\x)
wgadget = GetDlgCtrlID_(wGad)
cgadget = GetDlgCtrlID_(cGad)
If IsGadget(cgadget)
If GadgetType(cgadget) = #PB_GadgetType_ButtonImage
If cGad = WindowID(0)
;kein Gadget
Else
;Maus runter Gadget
runter=cgadget
EndIf
Else
;Debug "Gadget : " + Str(wgadget)
EndIf
EndIf
differenzx=WindowMouseX(0)-GadgetX(cgadget)
differenzy=WindowMouseY(0)-GadgetY(cgadget)-50 ;minus halbe Gadgethöhe
OpenWindow(1,WindowMouseX(0)+WindowX(0)-differenzx,WindowMouseY(0)+WindowY(0)-differenzy,102,100,"",#PB_Window_BorderLess)
SetWindowLongPtr_(WindowID(1),#GWL_EXSTYLE,#WS_EX_LAYERED)
SetLayeredWindowAttributes_(WindowID(1),0,125,#LWA_ALPHA)
ImageGadget(100,8,4,100,100,GetGadgetAttribute(runter,#PB_Button_Image))
flagrunter=1
Case #WM_LBUTTONUP
CloseWindow(1)
;Debug "linke Maustaste hoch"
hWnd = WindowID(GetActiveWindow())
GetCursorPos_ (@p.POINT)
wGad = WindowFromPoint_(p\y << 32 + p\x)
ScreenToClient_ (hWnd, @p)
cGad = ChildWindowFromPoint_ (hWnd, p\y<< 32+p\x)
wgadget = GetDlgCtrlID_(wGad)
cgadget = GetDlgCtrlID_(cGad)
If IsGadget(cgadget)
If GadgetType(cgadget) = #PB_GadgetType_ButtonImage
If cGad = WindowID(0)
;kein Gadget
Else
;Maus hoch Gadget
rauf=cgadget
EndIf
Else
;Debug "Gadget : " + Str(wgadget)
EndIf
EndIf
Debug runter
Debug rauf
If runter <>0 And rauf <>0 And runter <> rauf
SetGadgetAttribute(rauf,#PB_Button_Image,GetGadgetAttribute(runter,#PB_Button_Image))
SetGadgetAttribute(runter,#PB_Button_Image,0)
EndIf
runter=0
rauf=0
aktuellueber=0
flagrunter=0
Case #PB_Event_Menu
Select EventMenu()
Case 11
MessageRequester("About", "cooles Tool :)", 0)
Case 7
End
EndSelect
Case #PB_Event_Gadget
Select EventGadget()
Case 1
EndSelect
Case #PB_Event_CloseWindow
Quit = 1
EndSelect
If flagrunter=1
If WindowMouseX(0)>0 ; Sicherheit wenn Maus über Fensterrand
If WindowMouseX(0)>0
ResizeWindow(1,WindowMouseX(0)+WindowX(0)-differenzx,WindowMouseY(0)+WindowY(0)-differenzy,#PB_Ignore,#PB_Ignore)
EndIf
EndIf
EndIf
Until Quit = 1
EndIf
End