[Gelöst] (RTC) Client Addin OnMouseDown

19. März 2014 17:00

Hallo zusammen,

ich glaube, das ich hier wohl ein sehr exotisches Problem habe. Zumindest konnte mir die Suche da nicht weiterhelfen.

Folgende Situation: Ich entwickel grade ein Client Addin für den RTC wo insbesondere ein Kalender Control angezeigt wird. Hier habe ich Termine die aus NAV kommen etc. Diese können auch verschoben werden, jedoch ist das Handling dafür nicht so, wie das Handling des Kalenders eigentlich programmiert wurde. Wenn ich zum Beispiel das Kalender Control in einem Windows Forms Projekt einbaue, bekomme ich über die Events OnMouseDown, OnMouseMove, OnMouseUp eine Art von Drag and Drop der Termine zustande, was als Client Addin in NAV nicht mehr der fall ist. Klicke ich hier den Termin an, kann ich ihn nicht bewegen. Lasse ich ihn los, glaubt das Control, das nun OnMouseDown die ganze Zeit gefeuert wird. Wenn ich nun wieder irgendwohin klicke, dann macht er OnMouseUp und legt den Termin ab. Mit anderen Worten clippe ich den Termin beim ersten mal klicken an die Maus und beim zweiten mal klicken, lege ich es wieder ab. Das passt mir leider vom Handling her gar nicht und es bleibt mir schleierhaft, warum es nicht wie in einem Windows Forms Projekt funktioniert.

Hat da jemand eine Idee?
Zuletzt geändert von iPeon am 31. März 2014 10:19, insgesamt 1-mal geändert.

Re: (RTC) Client Addin OnMouseDown

20. März 2014 11:02

Nur mal zum versehen: Du hast doch ein Usercontrol erstellt auf dem Du das Kalendercontrol positioniert hast. Richtig? Hast Du dann auch die Mouse-Events des Usercontrols an das Kalendercontrol weitergeleitet?

Re: (RTC) Client Addin OnMouseDown

20. März 2014 18:09

Hallo Vsnase :)

Danke für die Idee, aber ich kann dir schon so sagen, dass es daran nicht liegen wird.

Ich hab glücklicherweise aber den Unfall gefunden, den NAV reagiert offenbar anders als eine klassische Windows Forms Anwendung. Es geht um das Starten eines DragEvents. Beim DragEvent verliert NAV den Focus auf das Control und demnach klappt es nicht mehr, wärend es in der klassischen WindowsForms Anwendung (zum testen) halt noch funktionierte.

Zum Verständniss:
- Im OnMouseDown, wird über OnMouseMove and OnMouseUp ein Drag and Drop innerhalb des Kalenders simuliert
- weiterhin wird ein DragEvent gestartet, falls der Termin ausserhalb des Kalenders gezogen wird, kann er dort angenommen werden :)
- NAV stellt den DragEvent in den Vordergrund und verliert den Focus auf das Kalender Control. Demnach reagiert on MouseMove nicht.

Lösung:
Left Mousebutton - simuliertes Drag and Drop im Kalender
Right Mousebutton - richtiges Drag and Drop außerhalb des Kalenders