Klik en sleep

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

Schermafbeelding Kleinste klik en sleep voorbeeld

Schermafbeelding Kleinste klik en sleep voorbeeld

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).