De presentatie wordt gedownload. Even geduld aub

De presentatie wordt gedownload. Even geduld aub

Les 5 De Muis (deel 2) Drag & Drop

Verwante presentaties


Presentatie over: "Les 5 De Muis (deel 2) Drag & Drop"— Transcript van de presentatie:

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

2 Overzicht Oplossing van de vorige oefening Drag & Drop OLE Drag & Drop
Principes Automatic / Manual OLE Drag & Drop Oefening

3 Oplossing van de oefening
Zie programma PaintBox.vbp

4 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

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)

6 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

7 Drag & Drop DragDrop-event
Wanneer een object boven een ander object wordt losgelaten Private 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.

8 Drag & Drop Indien 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);

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

10 Drag & Drop DragOver-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: ENTER: bron komt voor het eerst binnen in het object 1 LEAVE: bron verlaat het object 2 OVER: bron beweegt binnen het object

11 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

12 Drag & Drop Drag-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

13 Drag & Drop DragDrop en DragOver-events: zie automatische Drag & Drop

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

15 OLE Drag & Drop Drag & Drop OLE Drag & Drop Versleept objecten
Versleept data Automatische of manuele Drag Manuele Drop Automatische of manuele Drop

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

17 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

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

19 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

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

21 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

22 OLE Drag & Drop OLEDragOver
Private 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!

23 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

24 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

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

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

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


Download ppt "Les 5 De Muis (deel 2) Drag & Drop"

Verwante presentaties


Ads door Google