Dit is het meest minimale voorbeeld van klik en sleep of drag’n drop: je sleept een tekst van de linkse tekstbox naar het rechtse tekstlabel
Je hebt twee objecten nodig (zie schermafbeelding), en de volgende code in FMain.Form :
Van tekstbox …
PUBLIC SUB TextBox1_MouseDrag() IF Mouse.Left TextBox1.Drag(TextBox1.Text) ENDIF END
naar tekstlabel:
PUBLIC SUB TextLabel1_Drop() TextLabel1.Text = Drag.Data END
Het voorwerp dat ontvangt moet de eigenschap voor ontvangen van “drop” ingesteld hebben.
Dat kan zowel in de schermontwerper bij eigenschappen, als in code (bv bij openen venster):
PUBLIC SUB Form_Open() TextLabel1.Drop = TRUE END
Wat je nog extra kan doen:
- Oorspronkelijke tekst laten verdwijnen bij slepen van ..
- Icoon van het gesleepte tonen terwijl het slepen doorgaat (meestal als je een beeldje sleept).
- Andere dingen (als waarde opslaan in buffer, teller verhogen enz)
- Na “drop” het object afsluiten*: in PUBLIC SUB TextLabel1_Drop() regel toevoegen met TextLabel1.Drop = FALSE
* (26/6/2014 correctie: afsluiten voor nieuwe drop natuurlijk door de waarde FALSE, niet TRUE zoals er eerst stond).