Table of Contents

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

Erweiterung DragDrop

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;
}