Hier ist mein Codeschnipsel. Es soll möglich sein, Daten (als TExt) von einem Licon auf ein anderes zu ziehen.
Geht aber nur von den Maschinenlicons auf das arbeiteslicon, nicht umgekehrt. Kann mir jemand sagen, warum oder was mein Fehler ist?
Oder ist das ein "Feature"

Code: Alles auswählen
Structure Mschn
BesitzerID_I.L
BesitzerArt_I.L
Art_I.L Werkzeugmaschine
MaschID_I.L ; ID der Maschine
KaufPreis_I.L ; der Kaufpreis der Maschine
Alter_I.L ; das Alter in Runden
ZeitWert_I.L ; Der aktuelle (Buch)Wert der Maschine
Abschreibung_I.L ; die Abschreibungen in dieser Runde
Produktion_I.L ; 1, wenn die Maschine diese Runde produzieren soll
Produktionskosten_I.L ; Kosten pro Runde in der die Maschine etwas herstellt
ProduktionsMenge_I.L ; Anzahl an max. herstellbaren Einheiten
ProdZeit_I.L ; - z.Z. ungenutzt
Arbeiter1_I.L ; Index Arbeiter
Arbeiter2_I.L ; Index Arbeiter
Arbeiter3_I.L ; Index Arbeiter
SelectedInput_I.L ; Was ist eingestellt
SelectedOutput_I.L ; Was ist eingestellt
Input_I.L ; Was ist möglich - bitweise Ware_
Output_I.L ; Was stellt es her - bitweise Ware_
Status_I.L
Effizienz_I.L
Automatisierung_I.L
Rationalisierung_I.L
Detail1_I.L t
Detail2_I.L
Detail3_I.L
EndStructure
Global NewList Maschinen.Mschn()
For x = 0 To 6
AddElement(Maschinen())
Maschinen()\BesitzerID_I = 1
Maschinen()\BesitzerArt_I = 1
Maschinen()\MaschID_I = x+1
Next
;- Window Constants
;
Enumeration
#Window_ArbeiterZuweisen
EndEnumeration
;- Gadget Constants
;
Enumeration
#Text_ArbeiterZuweisen_Arbeiter
#ListIcon_ArbeiterZuweisen_Arbeiter
#Button_ArbeiterZuweisen_OK
#Button_ArbeiterZuweisen_Quit
#Text_ArbeiterZuweisen_Maschinen
#ScrollArea_ArbeiterZuweisen_Maschinen
#SourceText
#TargetText
EndEnumeration
Global Dim Language$(6)
Procedure Open_Window_ArbeiterZuweisen(FirmenID_I.I)
Protected n.I, y.I, Drag_S.s, S.s
NewList Licons.I()
NewList MaschinenTmp.Mschn()
; erstelle Kopien der Maschinenliste
ForEach Maschinen()
If Maschinen()\BesitzerID_I = FirmenID_I And Maschinen()\BesitzerArt_I = 1
AddElement(MaschinenTmp())
MaschinenTmp() = Maschinen()
ProdZeit_I = @Maschinen()
EndIf
Next
; Das gleiche für Arbeiter
; und des Arbeiterarrays
If OpenWindow(#Window_ArbeiterZuweisen, 136, 80, 760, 660, "Arbeiter zuweisen", #PB_Window_SystemMenu | #PB_Window_SizeGadget | #PB_Window_TitleBar )
TextGadget(#Text_ArbeiterZuweisen_Arbeiter, 10, 10, 380, 20, Language$(0), #PB_Text_Center | #PB_Text_Border)
ListIconGadget(#ListIcon_ArbeiterZuweisen_Arbeiter, 10, 30, 380, 390, Language$(1), 80, #PB_ListIcon_MultiSelect | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
AddGadgetColumn(#ListIcon_ArbeiterZuweisen_Arbeiter, 1, Language$(2), 200)
AddGadgetColumn(#ListIcon_ArbeiterZuweisen_Arbeiter, 2, Language$(3), 90)
ButtonGadget(#Button_ArbeiterZuweisen_OK, 680, 430, 70, 20, Language$(4))
ButtonGadget(#Button_ArbeiterZuweisen_Quit, 590, 430, 70, 20, Language$(5))
For x = 0 To 10
AddGadgetItem(#ListIcon_ArbeiterZuweisen_Arbeiter, -1, "Neuarbeiter " + Str(x))
Next
EnableGadgetDrop(#ListIcon_ArbeiterZuweisen_Arbeiter, #PB_Drop_Text, #PB_Drag_Copy)
; Zähle die Maschinen
n = 6
;- Maschinenliste
TextGadget(#Text_ArbeiterZuweisen_Maschinen, 410, 10, 340, 20, Language$(6), #PB_Text_Center | #PB_Text_Border)
ScrollAreaGadget(#ScrollArea_ArbeiterZuweisen_Maschinen, 410, 30, 340, 390, 315, 110 + n * 90, 90)
;{ gadgets setzen
y = 5
ForEach MaschinenTmp()
; Licon erstellen
AddElement(Licons())
Licons() = ListIconGadget(#PB_Any, 5, y, 300, 65, "Name " + Str(MaschinenTmp()\MaschID_I), 80, #PB_ListIcon_MultiSelect | #PB_ListIcon_GridLines | #PB_ListIcon_FullRowSelect | #PB_ListIcon_AlwaysShowSelection)
y + 90
; Licon mit den Arbeiterdaten füllen
AddGadgetItem(Licons(), -1, "Arbeiter " + Str(ListIndex(MaschinenTmp())))
; drag and drop starten
EnableGadgetDrop(Licons(), #PB_Drop_Text, #PB_Drag_Move)
Next
;}
CloseGadgetList()
Repeat
Event = WaitWindowEvent()
If Event = #PB_Event_Gadget And EventType() = #PB_EventType_DragStart
If EventGadget() = #ListIcon_ArbeiterZuweisen_Arbeiter
Text$ = GetGadgetItemText(#ListIcon_ArbeiterZuweisen_Arbeiter, GetGadgetState(#ListIcon_ArbeiterZuweisen_Arbeiter))
DragText(Text$)
Debug "arb start "
Else
ForEach Licons()
If EventGadget() = Licons()
Drag_S = GetGadgetItemText(Licons(), GetGadgetState(Licons()))
DragText(Drag_S)
Debug "masch start " + Drag_S
EndIf
Next
EndIf
; Drop event on the target gadgets, receive the dropped data
;
ElseIf Event = #PB_Event_GadgetDrop
If EventGadget() = #ListIcon_ArbeiterZuweisen_Arbeiter
AddGadgetItem(#ListIcon_ArbeiterZuweisen_Arbeiter, -1, EventDropText())
Debug "DROP"
Else
CallDebugger
ForEach Licons()
If EventGadget() = Licons()
AddGadgetItem(Licons(), -1, EventDropText())
Debug "masch drop " + Drag_S
EndIf
Next
EndIf
EndIf
Until Event = #PB_Event_CloseWindow
EndIf
EndProcedure
Restore BaseLanguage
For k=0 To 6
Read.s Language$(k)
Next
Open_Window_ArbeiterZuweisen(1)
End
DataSection
BaseLanguage:
Data$ "Arbeiter"
Data$ "Name"
Data$ "Ausbildung"
Data$ "Maschine"
Data$ "OK"
Data$ "Abbruch"
Data$ "Maschinen"
EndDataSection