EvtDrop
EvtDrop
Drag & Drop-Operation ausführen
Details
- Name: Typ Beschreibung
- aEvt:
eventEreignisinformationen - aDataObject:
handleDragData -Objekt - aDataPlace:
handleDataPlace -Objekt - aEffect:
intOperation - aMouseBtn:
intverwendete Maustaste - Resultat:
logicWird nicht ausgewertet - Siehe: Liste , Objekte , Ereignisbefehle , Ereignisabläufe Drag & Drop , Blog
Dieses Ereignis wird ausgelöst, wenn die Eigenschaft OleDropMode auf _WinOleDynamic gesetzt ist und die Maustaste mit einer Drag & Drop-Operation über dem Objekt losgelassen wurde.
Damit dieses Ereignis ausgelöst wird, muss der jeweilige Effekt im EvtDropEnter erlaubt werden. EvtDropEnter wird auch beim Start der Drag & Drop-Operation ausgelöst, um festzustellen, ob EvtDrop im Zielobjekt erlaubt ist.
Definition des Funktionskopfes:
sub EvtDrop
(
aEvt : event; // Ereignis
aDataObject : handle; // Drag-Datenobjekt
aDataPlace : handle; // DataPlace-Objekt
aEffect : int; // Eingabe: vom Benutzer gewählter Effekt, Ausgabe: durchgeführter Effekt
aMouseBtn : int; // Verwendete Maustasten
)
: logic; // Wird nicht ausgewertet
{
return(true);
}
aEvt
In diesem Parameter vom Typ event wird unter anderem der Deskriptor des auslösenden Objekts, d. h. das Objekt, in dem die Ereignisfunktion eingetragen wurde, übergeben.
aDataObject
In diesem Parameter wird der Deskriptor auf das DragData -Objekt übergeben. Das Objekt wird beim Starten der Drag & Drop-Operation mit Informationen gefüllt. Wird die Operation aus CONZEPT 16 heraus gestartet, werden die Daten im Ereignis EvtDragInit zur Verfügung gestellt.
aDataPlace
Hier wird der Deskriptor auf ein DataPlace -Objekt übergeben. Aus diesem Objekt können zusätzliche Informationen über die Position der übertragenen Daten ermittelt werden.
aEffect
In diesem Parameter wird die gewünschte Operation übergeben. Die Operation wird beim Starten des Drag & Drop-Vorgangs definiert. Wird die Operation in CONZEPT 16 gestartet, erfolgt die Definition in dem Ereignis EvtDragInit. Die durchgeführte Operation muss in die Variable aEffect geschrieben werden. Der Wert wird an das Ereignis EvtDragTerm übergeben und kann dort entsprechend ausgewertet werden. Der Wert muss nur dann gesetzt werden, wenn die durchgeführte Operation von dem übergebenen Wert abweicht.
Der Wert kann mit den gleichen Konstanten verglichen und gesetzt werden.
_WinDropEffectNone: Drag & Drop-Operation abbrechen / Operation wurde abgebrochen_WinDropEffectCopy: Daten sollen kopiert werden / wurden kopiert_WinDropEffectMove: Daten sollen verschoben werden / wurden verschoben_WinDropEffectLink: Daten sollen verlinkt werden / wurden verlinkt
Wird der Effekt übergeben, können die Konstanten _WinDropEffectCopy, _WinDropEffectMove und _WinDropEffectLink miteinander verknüpft sein. Beim Setzen des Effekts sollte nur eine der Konstanten angegeben werden.
Die Überprüfung, ob die Daten in diesem Objekt fallen gelassen werden dürfen, muss bereits im Ereignis EvtDropEnter erfolgen.
aMouseBtn
Die zum Starten der Drag & Drop-Operation gedrückte Maustaste wird in diesem Parameter übergeben. Der Wert kann mit folgenden Konstanten verglichen werden:
_WinMouseLeft: linke Maustaste_WinMouseRight: rechte Maustaste_WinMouseMiddle: mittlere Maustaste
Die Maustaste kann mit den Werten _WinMouseShift und / oder _WinMouseCtrl kombiniert sein.
Resultat
Der Rückgabewert der Funktion wird nicht ausgewertet.
Beispiel
sub EvtDrop
(
aEvt : event; // Ereignis
aDataObject : handle; // Datencontainer
aDataPlace : handle; // DataPlace-Objekt
aEffect : int; // Eingabe : vom Benutzer gewählter Effekt, Ausgabe : durchgeführter Effekt
aMouseBtn : int; // Verwendete Maustasten
) : logic; // Wird nicht ausgewertet
local
{
tDataFormat : handle;
tFileList : handle;
tListObj : handle;
tFileName : alpha(4096);
...
}
{
// Ermitteln der vorhandenen Daten
switch (true)
{
case aDataObject->wpFormatEnum(_WinDropDataFile) :
{
// Dateipfad und -name wurde übergeben
// Format-Objekt ermitteln
tDataFormat # aDataObject->wpData(_WinDropDataFile);
tFileList # tDataFormat->wpData;
// alle übertragenen Dateinamen auswerten
for tListObj # tFileList->CteRead(_CteFirst);
loop tListObj # tFileList->CteRead(_CteNext, tListObj);
while (tListObj > 0)
{
tFileName # tListObj->spName;
...
if (aEffect = _WinDropEffectMove)
FsiDelete(tFileName);
}
}
case aDataObject->wpFormatEnum(_WinDropDataText) :
{
// unformatierter Text wurde übergeben
...
}
...
}
return(true);
}
Ausführliche Beispiele zum Thema Drag & Drop befinden sich in der CodeLibrary-Datenbank, die aus dem Kundenbereich auf unserer Webseite ( www.vectorsoft.de ) heruntergeladen werden kann.