Navigation: Platzhalter und Variablen > Platzhalter Pro-Lizenz >

Platzhalter: Drag&Drop

Diese Seite drucken
Vorherige Seite Nächste Seite
Zurück zur Kapitelübersicht

FG Mit click.EXE 5.0 ist es möglich, sowohl eine sehr einfache Unterstützung für das Verschieben von Dateien aus dem Windows-Explorer auf ein Element zu realisieren, als auch Daten von einem Element in ein anderes zu verschieben.

 

Wird die Variable [cX.DragDrop.DateiMaske] auf eine oder mehrere Dateimasken (mit Semikolons getrennt) gesetzt (z.B. *.*, *.EXE oder *.BMP;*.JPG), kann eine passende Datei in ein Eingabefeld (Anzeige-Element Eingabe) gezogen und fallengelassen werden. Die möglichen Zielelemente (außer Bezeichner) werden durch das Setzen von

[.Element(ID).DragDropZiel] = 1 festgelegt.

 

Beim Ziehen über das Element (DragOver) erfolgt das Ereignis ::Anzeige_Element(<Eingabefeldname>)_Drag

Der gezogene Dateiname steht dabei in [cXDragDrop.Datei]

 

Sollten mehrere Dateien verschoben worden sein, findet sich deren Anzahl in [cX.DragDrop.DateiAnzahl] und die Namen der weiteren Dateien in [cX.DragDrop.Datei(2)] bis [cX.DragDrop.Datei(N)]

 

Beim Fallenlassen (Drop) erfolgt das Ereignis ::Anzeige_Element(<Eingabefeldname>)_Drop

 

Der "gedroppte" Dateiname steht dabei in [cX.DragDrop.Datei] (ggf. weitere Namen in [cX.DragDrop.Datei(2)] bis [cX.DragDrop.Datei(N)])

 

Folgende Platzhalter stehen als [cX.DragDrop.X] zur Verfügung:

 

.AktionMögliche bzw. gewünschte Aktion(en) beim Drag&Drop (0=keiner, 1=Kopieren, 2=Verschieben)
.Datei(X)Auslesen der beim Drag&Drop verschobenen Datei X
.DateianzahlAnzahl der beim Drag&Drop verschobenen Dateien
.DateiListeliefert eine Liste aller per Drag&Drop verschobenen Dateien
.Daten(Format)Auslesen der Daten im Format X des letzten Drag-Ereignisses (siehe auch Bildquelle %DragDropBild%)
Formatwerte für X: 1=Text, 2=Bitmap, 3=Metafile, 4=RTF, 5=Dateien, 6=DDE-Link, 7=Palette, 8=DIB (oder die Windows-internen Werte oder die Sender-Elemententypen)
.FormatDa(Format)Abfrage, ob Drag&Drop-Daten des Formats X verfügbar sind
.FormateLiefert eine Liste der verfügbaren Formate
.LetzteAktionTyp des zuletzt abgeschlossenen Drag&Drop (0=keiner, 1=Kopieren, 2=Verschieben)
.MaustasteBeim letzten Drag&Drop-Ereignis gedrückte Maustaste(n)
.SenderFensterLiefert die ID des Fensters mit dem Element (etwa eine Liste oder ein Baum), aus dem die Daten kommen (falls verfügbar)
.SenderNameLiefert die ID des Elements, aus dem die Daten kommen (falls verfügbar, etwa eine Liste oder ein Baum)
.StartSetzen auf "Elemente-ID;Aktion;Daten" (optional eine Bildquelle als Daten) beginnt das Dragging dieses Elements
.TextPer DragDrop hierhin verschobener Textinhalt (bzw. Dateninhalt)
.UmschaltTasteBeim letzten Drag&Drop-Ereignis gedrückte Umschalttaste(n)
.XX-Position im betroffenen Fenster/Element des letzten Drag&Drop-Ereignisses
.YY-Position des letzten Drag&Drop-Ereignisses

 

 

Formate:

Für die Angabe eines Datenformats (.Format(X), .Daten(X), DragDaten) stehen folgende (von Windows unterstützten) Datenformate zur Verfügung (die Zahlenwerte sind vom Zwischenablage-System von Windows vorgegeben):

ddfText1        Text
ddfBitmap2        Bitmap
ddfMetafile3        Metafile (.wmf)
ddfRTF4        RichText Format (.rtf)
ddfDateien5        Dateiliste
ddfDDE6        DDE-Link
ddfPalette7        Palette
ddfDIB8        Geräteunabhängige Bitmap (DIB)
ddfEMetafile14        Enhanced Metafile (.emf)

 

 

Folgende Ereignisse werden bei einem Drag&Drop-Vorgang ausgelöst:

::  Anzeige_Element(Quelle)_DragStarttritt für das Quellelement (DragDropQuelle-Eigenschaft = 1) auf, wenn ein Drag-Vorgang daraus gestartet werden soll. Hier müssen dann die zu transportierenden Daten in [cX.DragDrop.Daten] bzw. [cX.DragDrop.Datei(x)] eingetragen sowie in [cX.DragDrop.Aktion] festgelegt werden, ob die Daten kopiert (1), verschoben (2) oder beides (3) werden dürfen
::  Anzeige_Element(Ziel)_Dragtritt in dem Element auf, über das der Drag&Drop-Vorgang abläuft (Zielelement mit DragDropZiel-Eigenschaft = 1) . In den [cX.DragDrop.XX]-Eigenschaften stehen die Angaben zu dem gewünschten Transport. Hier muss entschieden werden, ob und welche Aktion erlaubt ist, und dies in [cX.DragDrop.Aktion] eingesetzt werden. In [cX.DragDrop.ErlaubteAktion] steht die Aktion, welche von der Quelle vorgegeben wurde.
::  Anzeige_Element(Ziel)_Dropwar im _Drag-Ereignis eine Aktion erlaubt worden, was am Mauszeiger zu erkennen ist, tritt dieses Ereignis beim Loslassen der Maustaste auf.
::  Anzeige_Element(Quelle)_DragEndetritt nach dem Loslassen der Maustaste im Quellelement auf. In [cX.DragDrop.LetzteAktion] steht dann die vom Ziel ausgeführte Aktion.

 

 

Beispiel:

***  Simples Drag&Drop Bsp.

  Anzeigefenster  'Drag&Drop Demo' (B=70, H=25, zentriert, Aktivieren)

  Anzeige-Element  Eingabe: 'Bitte eine Datei über dieses Eingabefeld "legen"' (ID='DropZiel', B=60, H=13, zentriert, mehrzeilig, Schieber)

  Setze  in [cX.DragDrop.Dateimaske]:  '*'

  Setze  in [.Element(DropZiel).DragDropZiel]:  '1'

  Warte  endlos...

  

***  Maus ist mit "festgehaltener" Datei über dem Eingabefeld

::  Anzeige_Element_DropZiel_Drag

  Anzeige-Element  Eingabe: 'Lass los! ([cX.DragDrop.Datei])' (ID='DropZiel')

Zurück

  

***  Die Maustaste wurde über dem Eingabefeld losgelassen

::  Anzeige_Element_DropZiel_Drop

  Anzeige-Element  Eingabe: 'Brav! ;-) ([cX.DragDrop.Datei])' (ID='DropZiel')

Zurück

Hinweis: Das mitgelieferte Beispielskript DragDrop-Test.cx5 demonstriert ausführlich die unterschiedlichen Verfahren für Drag&Drop von Dateien, Texten und Bildern. Auch in dem Skript Listenansicht-Demo.cx5 wird das Drag&Drop innerhalb einer Liste demonstriert.

 

 


cX-Webseite: http://www.clickexe.net