Modificare comportamento del drag and drop

Creare una macro - Scrivere uno script - Usare le API
Rispondi
nickGiard
Messaggi: 65
Iscritto il: lunedì 14 maggio 2012, 22:04

Modificare comportamento del drag and drop

Messaggio da nickGiard »

Salve a tutti e buona continuazione
Come tutti sappiamo selezionando col mouse una zona e trascinandola in altra posizione otteniamo la copia o lo spostamento dei dati.
Vorrei capire se e' possibile modificare tale comportamento, come da esempio:
1) In un Documento Calc seleziono una cella e comincio il drag - vorrei che tale evento potesse essere intercettato per lanciare una funzione e memorizzare dei dati
2) Arrivando in un altro Documento Calc e rilasciando il mouse, oltre al naturale comportamento di copia, vorrei intercettare l'evento drop e quindi avviare una funzione che operi anche su quanto memorizzato nell'evento drag.
Questo permetterebbe di arricchire enormemente tale modalità consentendo di programmare un comportamento personalizzato.
Io sono arrivato a pensare che tale operazione equivale ad un Taglia/Copia Incolla che utilizza la ClipBoard.
Esaminando le API cercando la parola add tipica dell'aggiungere un Listener ad un oggetto, ho trovato addDropTargetListener dell'oggetto, scusate, service datatransfer.dnd.OleDropTarget, tra l'altro creabile dal Global Service Manager.
Ho pensato che questo oggetto, una volta creato e magari memorizzato in una variabile Globale, creato un Listener e la serie di funzioni dell'interfaccia, potesse essere la chiave del problema, ma non sono riuscito a trovare esempi che illustrassero le enigmatiche caratteristiche dei parametri indicati nelle API. Chiedo se qualcuno conosce tale problematica o mi indichi qualche link utile.
Ringrazio in anticipo
Nicola
Nicola con LibreOffice 7.1 (x64) su Windows 11