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]

Rispondere a