Vorrebbe dire che il codice che hai postato è ulteriormente
semplificabile? ...??...
Ho provato a eliminare la funzione getRange con il suo ciclo do loop,
ma senza il ciclo di attesa il processo basic si interrompe lasciando
in esecuzione il listener in background di conseguenza si perde
l' impostazione della variabile lcolorSRC
Ho provato a impostare il primo range selezionato a MyApp_mousePressed
e il secondo a MyApp_mouseReleased, ma non funziona
Qualche suggerimento in proposito?
Tornando per un attimo al primo post di Bart, integrando con il
suggerimento di Paolo (che mi ha fatto realizzare che prima che impari
ad *usare* il basic ce ne vorrà ancora di tempo!) direi che, se ho
capito, la soluzione dovrebbe essere più o meno come riporto in fondo.
Il "trucco" (e Paolo correggimi se sbaglio), che poi tanto trucco non è
ma è la cosa più logica da fare (dopo che qualcuno ti ha indicato la
strada è sempre tutto ovvio....chissà perché :-) ), è spostare le
istruzioni che cambiano il colore del range selezionato nel listener
invece che mantenerli nella sub che lancia il listener.
Ho ripreso il codice originale perché a me piace la finestra che
visualizza il range intanto che lo selezioni, se preferisci la versione
che si basa sul listener del mouse non dovrebbe cambiare di molto il
codice. ;-)
Ciao!
Emanuele.
REM ***** BASIC *****
Global oRangeSelectionListener As Object
Sub RangeSelection()
oDocView = ThisComponent.currentController
If Not IsNull(oRangeSelectionListener) Then
oDocView.removeRangeSelectionListener(oRangeSelectionListener)
End If
oRangeSelectionListener = createUnoListener("oDocView_" , _
"com.sun.star.sheet.XRangeSelectionListener")
oDocView.addRangeSelectionListener (oRangeSelectionListener)
Dim mArgs(2) As New com.sun.star.beans.PropertyValue
mArgs(0).Name = "InitialValue"
mArgs(0).Value = "A1"
mArgs(1).Name = "Title"
mArgs(1).Value = "My Title"
mArgs(2).Name = "CloseOnMouseRelease"
mArgs(2).Value = True
oDocView.startRangeSelection(mArgs())
End Sub
sub oDocView_done(oEvent)
'questa routine viene chiamata dal documento
'dopo che l'utente ha finito di selezionare il range
sA = oEvent.RangeDescriptor
oEvent.source.removeRangeSelectionListener(oRangeSelectionListener)
lcolorSRC = ThisComponent.getCurrentSelection().Cellbackcolor
ThisComponent.getCurrentController().ActiveSheet.getCellRangeByName(sA).Cellbackcolor
= lcolorSRC
End Sub
sub oDocView_aborted(oEvent)
'questa routine viene chiamata dal documento
'se l'utente non ha selezionato nessun range
oEvent.source.removeRangeSelectionListener(oRangeSelectionListener)
End Sub
sub oDocView_disposing(oEvent)
'questa routine viene chiamata dal documento
'in caso di dipartita del compianto listener
End Sub
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]