Hallo und danke für die Beiträge,
leider geht das alles nicht ganz so einfach, aber ich glaube, ich schreibe mal ein wenig mehr zur eigentlichen Funktion:
Ich habe ein Planelement, das in 24 rechteckige Segmente eingeteilt ist. Diese symbolisieren die 24 Stunden des Tages. Jedes Stunden- Objekt besitzt verschiednee Eigenschaften, die auf wiederum verschiedene Weisen modifiziert werden können:
1) Per Kontextmenü über rechte Maustaste
2) Per Doppelklick
3) Per linke Maustaste festhalten und hoch oder runter ziehen (
LMM).
Ich möchte nun aber eine Stunde auf eine andere kopieren und das möglichst per Drag & Drop.
Durch das
LMM ist dmAutomatic ausgeschlossen. Daher versuchte ich es mit dmManual und einem Threshold, aber das funzte nicht ganz so gut (erstens Probleme mit dem Threshold und dann mit einem anpassen des Cursors im MouseMove, denn ich kann die Stunde nur auf zukünftige Stunden fallen lassen, daher muss im MouseMove abgefragt werden, ob das Droppen auch zulässig ist.)
Und genau diese Problem mit dem nicht aktualisierten Cursor ist mit einem einfachen Projekt nachzustellen:
Einfach eine Form nehmen und ein Edit- Feld einfügen. Dann im MouseMove das hier schreiben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15:
| procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if (ssright in Shift) or (ssleft in Shift) or (ssmiddle in Shift) then begin cursor := crDrag; end else begin if (cursor = crDrag) then cursor := crArrow; end;
edit1.Text := cursortostring(cursor); end; |
bei rechter und mittleren Maustaste funktioniert alles, bei der linken steht zwar der richtige Wert in Cursor, aber der Cursor wird nicht aktualisiert. Mit anderen Worten:
Ich kann zwar mein Drag & Drop bauen, aber man sieht's nicht, buhuuu!
Also wenn Ihr noch weitere Tricks im Ärmel habt, dann bitte her damit. Bin für alles offen.
Herzlichen Dank,
der Knufflige.