Click here to load reader

Les 5 De Muis (deel 2) Drag & Drop

  • View
    32

  • Download
    0

Embed Size (px)

DESCRIPTION

Les 5 De Muis (deel 2) Drag & Drop. Programmeren met Visual Basic Karl Moens. Overzicht. Oplossing van de vorige oefening Drag & Drop Principes Automatic / Manual OLE Drag & Drop Principes Automatic / Manual Oefening. Oplossing van de oefening. Zie programma PaintBox.vbp. - PowerPoint PPT Presentation

Text of Les 5 De Muis (deel 2) Drag & Drop

  • Les 5De Muis(deel 2)Drag & DropProgrammerenmetVisual Basic

    Karl Moens

    Programmeren met Visula Basic Les 5

    OverzichtOplossing van de vorige oefeningDrag & DropPrincipesAutomatic / ManualOLE Drag & DropPrincipesAutomatic / ManualOefening

    Programmeren met Visula Basic Les 5

    Oplossing van de oefeningZie programma PaintBox.vbp

    Programmeren met Visula Basic Les 5

    Drag & DropPrincipes:"Drag & Drop" is het verplaatsen van een objectnaar een andere plaats op het formulier; ofover of op een ander object; ofnaar een ander formulier of een andere applicatie.Het merendeel van de standaard controls (uitz.: Line control en Shape control) kan worden gebruikt voor "drag & drop": zie de "DragMode"-eigenschap

    Programmeren met Visula Basic Les 5

    Drag & DropAutomatic of Manual Drag?Automatic: VB zorgt zelf voor de standaard events (begin van de Drag; tonen van de Drag-icon; einde van de Drag).Manual: het programma moet aangeven wanneer de Drag begint, eindigt of wordt afgebroken.Er is geen automatische Drop! Hiervoor moet steeds een event-procedure worden geschreven (DragDrop of DragOver-event)

    Programmeren met Visula Basic Les 5

    Drag & DropRegels voor automatische Drag & DropObjecten die kunnen worden gesleept:DragMode-eigenschap = AutomaticEventueel: DragIcon ladenObjecten (Forms of Controls) die doel van de sleepactie zijn:DragDrop en/of DragOver-event subroutine schrijven

    Voorbeeld van automatische Drag & Drop: Les5A.vbp

    Programmeren met Visula Basic Les 5

    Drag & DropDragDrop-eventWanneer een object boven een ander object wordt losgelatenPrivate Sub object_DragDrop(bron As Control, x As Single, y As Single)object is het object waar het gesleepte object op wordt losgelaten;bron is het object dat wordt gesleept;x en y zijn de cordinaten van de muispointer binnen het object wanneer het gesleepte object wordt losgelaten.

    Programmeren met Visula Basic Les 5

    Drag & DropIndien meerdere objecten kunnen worden gesleept, moet worden getest om welk object het gaat:de functie TypeOf kan het soort object determineren (indien het doelobject moet reageren op alle objecten van een welbepaalde soort);TypeOf bron Is objecttype (bijv CommandButton)in de Tag-eigenschap van het bron-object kan een identifier worden opgeslagen; (indien het doelobject moet reageren op een willekeurige verzameling objecten die dan wel dezelfde 'Tag' moeten hebben);

    Programmeren met Visula Basic Les 5

    Drag & DropTesten op de Name-eigenschap van het bronobject (indien slechts moet worden gereageerd op een welbepaald individueel object).

    Programmeren met Visula Basic Les 5

    Drag & DropDragOver-eventWanneer een object boven een ander object wordt gesleeptPrivate Sub object_DragOver(bron As Control, x As Single, y As Single, status As Integer)object, bron, x en y: zie DragDropstatus:

    0ENTER: bron komt voor het eerst binnen in het object1LEAVE: bron verlaat het object2OVER: bron beweegt binnen het object

    Programmeren met Visula Basic Les 5

    Drag & DropRegels voor manual Drag & DropObjecten die kunnen worden gesleept:DragMode-eigenschap = ManualEventueel: DragIcon ladenBepalen wanneer de Drag begint (bijv. met de MouseDown-event) en de Drag-methode activerenObjecten (Forms of Controls) die doel van de sleepactie zijn:DragDrop en/of DragOver-event subroutine schrijven

    Voorbeeld van manual Drag & Drop: Les5B.vbp

    Programmeren met Visula Basic Les 5

    Drag & DropDrag-methodDeze methode stuurt de Drag & Drop operatieobject.Drag actieobject is het object dat wordt versleeptactie:

    vbEndDrag is zelden nodig omdat het doel van de Drag & Drop-operatie vanzelf reageert op het "Droppen" van het versleepte object (DragDrop-event).

    vbCancelStopt Drag & DropVBBeginDragBegint Drag & DropvbEndDragDropt het object

    Programmeren met Visula Basic Les 5

    Drag & DropDragDrop en DragOver-events: zie automatische Drag & Drop

    Programmeren met Visula Basic Les 5

    OLE Drag & DropOLE = Object Linking and Embedding

    OLE Drag & Drop is de standaard Windows manier om data tussen verschillende objecten, formulieren en applicaties uit te wisselen.

    Programmeren met Visula Basic Les 5

    OLE Drag & Drop

    Drag & DropOLE Drag & DropVersleept objectenVersleept dataAutomatische of manuele DragAutomatische of manuele DragManuele DropAutomatische of manuele Drop

    Programmeren met Visula Basic Les 5

    OLE Drag & DropOLEDrag & Drop-eigenschappenOLEDragModeManual of AutomaticIndien deze eigenschap niet bestaat voor het object, is er hoogstens een "Manual" OLE Drag & Drop mogelijk (indien het object de OLEDrag-methode kent)

    Programmeren met Visula Basic Les 5

    OLE Drag & DropOLEDropModeNone (vbOLEDropNone)Het object accepteert geen OLEDrop en toont een "No Drop"-iconManual (vbOLEDropManual)OLEDrop lokt de OLEDragDrop-event uit die de "Drop" moet afhandelenAutomatic (vbOLEDropAutomatic)OLEDrop wordt automatisch afgehandeld

    Programmeren met Visula Basic Les 5

    OLE Drag & DropEventsOLEStartDragPrivate Sub object_OLEStartDrag(data As DataObject, effecten As Long)Wordt uitgelokt na een OLEDrag-methode voor object (manual OLEDrag) of zodra een automatische OLEDrag begint.object is het bron-object dat via het dataobject de gegevens doorgeeft. Met de data.SetData methode kunnen deze data worden ingesteld.

    Programmeren met Visula Basic Les 5

    OLE Drag & Dropde waarde van effecten geeft aan hoe de OLE Drag & Drop verloopt:

    afhankelijk van de waarde van effecten wordt de vorm van de cursor aangepast.

    vbDropEffectNoneDe OLE Drag & Drop wordt afgebrokenvbDropEffectCopyDe data kunnen worden gekopieerdvbDropEffectMoveDe data kunenn worden verplaatst

    Programmeren met Visula Basic Les 5

    OLE Drag & DropOLEDragDropPrivate Sub object_OLEDragDrop(data As DataObject, effect As Long, button As Integer, shift As Integer, x As Single, y As Single)Het dataobject bevat de gegevens die worden versleept.Het doelobject (object) moet de waarde van effect controleren om te weten wat er met de data mag gebeuren (kopiren en/of verplaatsen) en dan eventueel de waarde van effect aanpassen zodat het bronobject weet of de drop is mislukt (vbDropEffectNone), er werd gekopieerd (vbDropEffectCopy) of werd verplaatst (vbDropEffectMove en dus bepaalde data moet worden gewist).

    Programmeren met Visula Basic Les 5

    OLE Drag & Dropvia de event OLECompleteDrag worden effect terug naar het bronobject gestuurd.button, shift, x en y zijn zoals bij de (gewone) Drag & Drop

    Programmeren met Visula Basic Les 5

    OLE Drag & DropOLEDragOverPrivate Sub object_OLEDragOver(data As DataObject, effect As Long, button As Integer, shift As Integer, x As Single, y As Single, status As Integer)Zie OLEDragDrop voor data, effect, button, shift, x en yZie DragOver voor statusDeze event wordt niet uitgelokt indien DropMode automatisch is!

    Programmeren met Visula Basic Les 5

    OLE Drag & DropOLECompleteDragPrivate Sub object_OLECompleteDrag(effect As Long)Het bronobject wordt door deze gebeurtenis verwittigd dat de Drag & Drop operatie is beindigd.Aan de hand van de waarde van effect kan het bronobject nagaan of de versleepte data bijv. moet worden gewist.

    Voorbeeld: zie Les5C.vbp

    Programmeren met Visula Basic Les 5

    OLE Drag & DropHet DataObjectDit is een container voor de gegevens die worden versleept.Tevens wordt de format (=type) van de gegevens doorgegeven, bijv.vbCFTextTekstvbCFMetafileWindows MetafilevbCFBitMapBitmapvbCFRTFRich Text Format

    Programmeren met Visula Basic Les 5

    OLE Drag & DropMethoden:Clear: wist alle data en formatsGetData (format): geeft de data van een bepaalde format in een variant weerGetFormat (format): test of de data in een bepaalde format staan (geeft True of False)

    Programmeren met Visula Basic Les 5

    OLE Drag en DropSetData(gegevens, format):gegevens -in de vorm van een variant- worden in het dataobject geplaatst. Het type van de gegevens wordt via format bepaald.Indien enkel een format werd bepaald maar geen gegevens, dan worden, wanneer nodig, via de OLESetData-event deze gegevens opgevraagd bij het bron-object. Dit wordt gebruikt wanneer de gegevens in verschillende formats kunnen worden aangeleverd en men op voorhand niet weet welke zullen worden gevraagd.

    Programmeren met Visula Basic Les 5

    OefeningSchrijf een programma dat toelaat tussen twee listboxen gegevens, te verplaatsen die telkens alfabetisch worden gesorteerd na het verplaatsen.

Search related