Erweiterung DragDrop
Informationen
- Kategorien: GUI | DragDrop
- Version: 14.0.0.2031
- Veröffentlichungsdatum: Freitag, 1. Oktober 2010
- Entwickler: Schulze
- Benötigt Datenbankänderung: Ja
- Betreff: Erweiterung DragDrop
Beschreibung
Erweiterung Drag&Drop
OnEvent ++++++++++++++++ Die Ereignisse für Drag&Drop von Emails und deren Attachments werden über die neuen Events
- OnEvent_MailDragDrop
- OnEvent_FileDragDrop eingebunden (siehe Beispielcode).
Hinweis: Falls die neue Event-Mail-Einbindung nicht implementiert wird, wird automatisch auf das alte "Notify"-Event umgeleitet.
Mail Attachments ++++++++++++++ Email-Anhänge können direkt per Drag&Drop reingezogen werden, hierfür wird das Ereignis OnEvent_FileDragDrop ausgelöst.
Beim Droppen einer Email wird das Ereignis OnEvent_MailDragDrop ausgelöst mit folgender Beinflussungsmöglichkeit für die Attachments:
$nDragDropMode=3 (Saved) => Rückgabe: 1 => Attachments werden gemeldet, 1 Ereignis OnEvent_FileDragDrop pro Attachment 0 => Attachments werden nicht gemeldet
$nDragDropMode=5 (ShowSelectDlg), => Rückgabe: 1 => Attachments werden in einer DialogBox angezeigt und können einzeln ausgewählt werden 0 => Attachments werden nicht angezeigt, es werden alle Anhänge als Ereignis gemeldet
Layered INFO-Window ++++++++++++++++++ Beim Ziehen einer Email oder eines Email-Anhanges wird ein Info-Fenster unter dem Mauszeiger angezeigt, der Inhalt des Fensters kann beeinflusst werden: Das Ereignis OnEvent_MailDragDrop wird ausgelöst mit dem Wert $nDragDropMode=1 (DragOver) und folgender Beeinflussungsmöglichkeit: $sDragOverMessage, $sDragOverTitle, $sDragOverImagePath
Beim Ziehen von Email oder Attachment über ein Entity ohne Implementation von OnEvent_MailDragDrop bzw. OnEvent_FileDragDrop wird ein Info-Fenster angezeigt, in welchem die verfügbaren Drag&Drop-Klassen angezeigt werden (wenn vorhanden).
Klassenformel-Funktion für RaiseEvent +++++++++++++++++++++++++++++ Für das direkte Auslösen des Ereignisses "OnEvent_MailDragDrop" existiert die Funktion RaiseEventMailDragDrop, im Zusammenspiel mit "CallInterpreter" kann diese z.B. von außen aufgerufen werden, z.B. direkt aus Outlook.
Bilder
Beispielcode
int onEvent_MailDragDrop( int $nDragDropMode,
int $nIndex,
int $nCount,
string $sFileName,
byref string $sTargetFilePath,
byref string $sDragOverMessage,
byref string $sDragOverTitle,
byref string $sDragOverImagePath,
byref entity $eMailEntity,
string $sSubject,
string $sSenderName,
string $sSenderEmailAddress,
string $sBody,
string $sDisplayTo,
string $sDisplayCC,
date $dtDeliveryTime,
string $sErrorMessage)
{
var ::Document $doc;
if( $nDragDropMode == 1 ) // DragEnter
{
$sDragOverMessage = IntToStr($nCount) + " Email(s) hier als Dokumente hier ablegen."; // optional
$sDragOverTitle = $sSubject; // optional
return 1;
}
else if( $nDragDropMode == 2 ) // Dropped
{
$sTargetFilePath = "e:\\" + $sFileName;
return 1;
}
else if( $nDragDropMode == 3 ) // Saved
{
if( MessageBox( "Die Email wurde gespeichert unter:\n" +
$sTargetFilePath +
"\n\nIn Datenbank übernehmen?", 36 ) != 1 )
{
return 0;
}
$eMailEntity = this;
$doc = CreateEntity( "Document" );
$doc.ref_managed_object = this;
$doc.Note = $sSubject + "\r\n------------\r\n\r\n" + $sBody;
$doc.Path = $sTargetFilePath;
ShowEntity( $doc );
return 1;
}
else if( $nDragDropMode == 4 ) // SavingFailed
{
MessageBox( $sErrorMessage );
return 1;
}
else if( $nDragDropMode == 5 ) // ShowSelectDialog
{
return 1;
}
return 0;
}
int onEvent_FileDragDrop( int $nDragDropMode,
int $nIndex,
int $nCount,
string $sFileName,
byref string $sTargetFilePath,
byref string $sDragOverMessage,
byref string $sDragOverTitle,
byref string $sDragOverImagePath,
string $sErrorMessage )
{
var ::Document $eFileEntity;
if( $nDragDropMode == 1 ) // DragOver
{
// the file is dragging over the current entity
//
$sDragOverMessage = "Datei hier am Mitarbeiter als neues Dokument anhängen"; // optional
$sDragOverTitle = $sFileName; // optional
return 1;
}
else if( $nDragDropMode == 2 ) // Dropped
{
// the file was dropped of the current entity
//
$sTargetFilePath = "e:\\" + $sFileName;
return 1;
}
else if( $nDragDropMode == 3 ) // Saved
{
// the file was saved, now we can assign the properties to the file entity
// the file entity can be the current entity or any other entity
//
$eFileEntity = CreateEntity( "Document" );
$eFileEntity.ref_managed_object = this;
$eFileEntity.path = $sTargetFilePath;
ShowEntity( $eFileEntity );
return 0;
}
else if( $nDragDropMode == 4 ) // SavingFailed
{
MessageBox( $sErrorMessage );
return 1;
}
return 0;
}