Les 5 De Muis (deel 2) Drag & Drop

27
Les 5 De Muis (deel 2) Drag & Drop Programmeren met Visual Basic Karl Moens

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

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

Page 1: Les 5 De Muis (deel 2) Drag & Drop

Les 5De Muis(deel 2)

Drag & Drop

Programmerenmet

Visual Basic

Karl Moens

Page 2: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

Overzicht

• Oplossing van de vorige oefening• Drag & Drop

– Principes– Automatic / Manual

• OLE Drag & Drop– Principes– Automatic / Manual

• Oefening

Page 3: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

Oplossing van de oefening

Zie programma PaintBox.vbp

Page 4: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

Drag & Drop

Principes:– "Drag & Drop" is het verplaatsen van een

object• naar een andere plaats op het formulier; of

• over of op een ander object; of

• naar 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

Page 5: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

Drag & Drop

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

Page 6: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

Drag & Drop

Regels voor automatische Drag & Drop– Objecten die kunnen worden gesleept:

DragMode-eigenschap = Automatic

Eventueel: DragIcon laden

– Objecten (Forms of Controls) die doel van de sleepactie zijn:

DragDrop en/of DragOver-event subroutine schrijven

Voorbeeld van automatische Drag & Drop: Les5A.vbp

Page 7: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

Drag & Drop

DragDrop-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 coördinaten van de

muispointer binnen het object wanneer het gesleepte object wordt losgelaten.

Page 8: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – 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);

Page 9: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

Drag & Drop

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

Page 10: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

Drag & DropDragOver-event

Wanneer een object boven een ander object wordt gesleept

Private Sub object_DragOver(bron As Control, x As Single, y As Single, status As Integer)

• object, bron, x en y: zie DragDrop• status:

0ENTER: bron komt voor het eerst binnen in het object

1 LEAVE: bron verlaat het object

2 OVER: bron beweegt binnen het object

Page 11: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

Drag & Drop

Regels voor manual Drag & Drop– Objecten die kunnen worden gesleept:

DragMode-eigenschap = Manual

Eventueel: DragIcon laden

Bepalen wanneer de Drag begint (bijv. met de MouseDown-event) en de Drag-methode activeren

– Objecten (Forms of Controls) die doel van de sleepactie zijn:

DragDrop en/of DragOver-event subroutine schrijven

Voorbeeld van manual Drag & Drop: Les5B.vbp

Page 12: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

Drag & DropDrag-method

Deze methode stuurt de Drag & Drop operatie

object.Drag actie– object is het object dat wordt versleept– actie:

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

vbCancel Stopt Drag & Drop

VBBeginDrag Begint Drag & Drop

vbEndDrag Dropt het object

Page 13: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

Drag & Drop

DragDrop en DragOver-events: zie automatische Drag & Drop

Page 14: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

OLE Drag & Drop

OLE = Object Linking and Embedding

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

Page 15: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

OLE Drag & Drop

Drag & Drop OLE Drag & Drop

Versleept objecten Versleept data

Automatische of manuele Drag

Automatische of manuele Drag

Manuele DropAutomatische of manuele Drop

Page 16: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

OLE Drag & Drop

OLEDrag & Drop-eigenschappen• OLEDragMode

– Manual of Automatic– Indien deze eigenschap niet bestaat voor het

object, is er hoogstens een "Manual" OLE Drag & Drop mogelijk (indien het object de OLEDrag-methode kent)

Page 17: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

OLE Drag & Drop

• OLEDropMode– None (vbOLEDropNone)

Het object accepteert geen OLEDrop en toont een "No Drop"-icon

– Manual (vbOLEDropManual)OLEDrop lokt de OLEDragDrop-event uit die de

"Drop" moet afhandelen

– Automatic (vbOLEDropAutomatic)OLEDrop wordt automatisch afgehandeld

Page 18: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

OLE Drag & Drop

Events• OLEStartDrag

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

Page 19: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

OLE Drag & Drop

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

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

vbDropEffectNone

De OLE Drag & Drop wordt afgebroken

vbDropEffectCopy

De data kunnen worden gekopieerd

vbDropEffectMove

De data kunenn worden verplaatst

Page 20: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

OLE Drag & Drop• OLEDragDrop

Private 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 (kopiëren 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).

Page 21: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

OLE Drag & Drop

– via de event OLECompleteDrag worden effect terug naar het bronobject gestuurd.

– button, shift, x en y zijn zoals bij de (gewone) Drag & Drop

Page 22: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

OLE Drag & Drop

• OLEDragOverPrivate 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 y

Zie DragOver voor status

Deze event wordt niet uitgelokt indien DropMode automatisch is!

Page 23: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

OLE Drag & Drop• OLECompleteDrag

Private Sub object_OLECompleteDrag(effect As Long)

– Het bronobject wordt door deze gebeurtenis verwittigd dat de Drag & Drop operatie is beëindigd.

– Aan de hand van de waarde van effect kan het bronobject nagaan of de versleepte data bijv. moet worden gewist.

Voorbeeld: zie Les5C.vbp

Page 24: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

OLE Drag & Drop

Het DataObject– Dit is een container voor de gegevens die

worden versleept.– Tevens wordt de format (=type) van de

gegevens doorgegeven, bijv.• vbCFText Tekst

• vbCFMetafile Windows Metafile

• vbCFBitMap Bitmap

• vbCFRTF Rich Text Format

Page 25: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

OLE Drag & Drop

– Methoden:• Clear: wist alle data en formats• GetData (format): geeft de data van een

bepaalde format in een variant weer• GetFormat (format): test of de data in een

bepaalde format staan (geeft True of False)

Page 26: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

OLE Drag en Drop• SetData(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.

Page 27: Les 5 De Muis (deel 2) Drag & Drop

Program

meren m

et Visula B

asic – Les 5

Oefening

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