Image per Drag/Drop verschieben und UrsprungsImage bis zum Aktionsabschluß beibehalten



  • Hallo,
    ich habe folgendes Problem. Ich möchte ein Image per Drag/Drop auf ein anderes Image verschieben (VCL / Borland Builder C++ 5.0). Das funktioniert auch prima. Was ich aber nicht hinkriege ist folgendes:
    Bei der Verschiebefunktion soll das UrsprungsImage so lange sichtbar sein, bis die Drag/Drop-Aktion abgeschlossen ist. Das geht nicht mit dem Move-Befehl - hier wird das Objekt ja sofort verschoben.
    Ein Beispiel - analog der Funktionen auf meinem Desktop: Wenn ich dort ein Icon verschiebe, bleibt das UrsprungsIcon zunächst am Ursprungs-Ort. Unter meinem MouseZeiger hängt "eine Kopie" des Objekts, bis ich es am Zielort ablege. Erst nach Abschluß der Aktion, verschwindet das UrsprungsIcon und erscheint an der neuen Position.
    Gibt es dazu Ideen?

    Ich bedanke mich schon jetzt für die Unterstützung"
    Werner



  • Dann erzeug doch einfach eine Kopie deines Bildes und verschiebe diese.
    (oder habe ich dein Problem nicht richtig verstanden?)



  • Wahrscheinlich habe ich das Problem nicht richtig dargestellet. Es geht mir ja um folgendes: Wenn ich das Image per Maus-Move bewege, kann ich es nicht per Drag&Drop auf einem anderen Image-Objekt ablegen - und umgekehrt, wenn ich es mit Drag&Drop verschiebe, dann kann ich mein Image nicht bewegen (es ändert sich nur der Drag-Cursor bis ich das Objekt abgelegt habe - und sonst nichts).



  • Du mußt da schon ein bißchen programmtechnisch helfen, um dieses Verhalten auch mit dem BCB hinzukriegen (aber es ist möglich).

    Wenn das Image statisch ist, dann müßtest du es einmal als Cursor (*.cur) erzeugen und dann der Eigenschaft "DragCursor" beim Drag&Drop zuordnen.

    Alternativ kannst du umgekehrt auch das Drag&Drop mit Hilfe der Events OnMouseMove, OnMouseDown, OnMouseUp etc. nachbauen (so daß du dann einfach eine Kopie des Bildes verschiebst) und im OnMouseUp dann überprüft, an welcher Mausposition es sich befindet.



  • dann ist es allerdings nicht so einfach den destination Punkt zu bestimmen. Wenn man mehrere (also mehr als 5 oder so) Bilder hat, die man verschieben möchte ist es nicht so einfach zu defenieren, wo die Bilder abgelegt werden können.
    Es sein denn du willst die Bilder einfach frei rumschieben.

    könnte helfen:
    http://www.java2s.com/Code/CSharp/GUI-Windows-Form/DraganddropthePictureBox.htm

    Mich würde allerdings mal interesierren, wie man es (einfach) defenieren kann, wo man solche (wie oben im Link beschrieben) Bilder wieder ablegen kann. wenn man eben nicht die Bidler frei verschieben will, sondern nur an bestimmten stellen (z.B. auf anderen pictureBoxen) ablegen will.



  • noch ne frage. Wenn ich ein DragandDrop mit DoDragDrop starte verändert sich der Cursor in einen schwarzen Kreis mit einem diagonalen Strich. Wie kann ich den ändern?



  • Mir schwant, dass dies nur ordentlich mit der Klasse TDragImageList zu bewerkstelligen ist. Dazu fehlen mir aber die einschlägigen Kenntnisse.
    Gruß


Anmelden zum Antworten