Bart Aimar ha scritto:
> Ciao Michele,
>
> Michele Zarri ha scritto:
> >>>>E per la rotella inibita... si può fare qualcosa?
> >
> > Per curiosita' ho fatto una ricerca sulla parola chiave WHEEL in
> > api.openoffice.org e effettivamente in awt, tra le costant's group
> > command esiste (e vale 3). Ora tu mi chiederai: e dunque? alche' io ti
> > rispondero' "niente", perche' non ho la piu' pallida idea di cosa farci
> > con queste costanti :-)
>
> Nemmeno io... :-(
>
> Io invece ho fatto una ricerca, sempre con parola chiave WHEEL, su
> OOforum ... ma sembra che li quel problema sia poco sentito... sembrano
>   invece molto preoccupati "about to reinvent the wheel"...
>
> :-)
>
> .. continuiamo a cercare...

Se volete continuare a cercare per curiosità fate pure, ma se lo fate per
mettere toppe a un codice che crea problemi, pensate anche all' opportunità
di rivedere il tutto

Partiamo dall' inizio
C' è bisogno di un codice che, dopo aver selezionato una cella o un range, 
parta e si metta in attesa che si selezioni un' altra cella o range, anche di 
un' altro foglio, per metterci sopra qualcosa della prima selezione, giusto?

La strada intrapresa da Bart è una delle possibili, ma visto i problemi
riscontrati, o per colpa della finestrella o di altro codice eseguito prima
che ha lasciato qualche residuo(variabili impostate a dati che turbano
il listener) cercherei altre strade
Un' altra cosa, quel oEvent.RangeDescriptor non restituisce un oggetto
range, ma una stringa che descrive tale range tipo "$Tabella1.$A$1:$A$1"
per la prima cella della Tabella1, questa stringa va utilizzata per creare
l' oggetto Range con altro codice
Tutti questi virtuosismi mi fanno pensare a uno che per fare 2 + 2 scrive
(radice quadrata di 2 elevato alla seconda) + (radice quadrata di(4*4)/2)
Ho dovuto scrivere in lettere perchè non sono riuscito a trovare il 
simbolo di radice quadrata 
Non sarebbe meglio far restituire, a getRange(), un range bello e pronto?
Vi mando del codice, l' ho già provato in Ultimus di Bart e pare funzionare

Codice


Dim Sel As Boolean
Dim oDocView As Object
Dim oMouseClickHandler As Object
Dim oSelect As Object

sub copia_solo_colore_Sfondo 
        oCellSRC=ThisComponent.getCurrentSelection()
        lcolorSRC = oCellSRC.Cellbackcolor '-- Cattura il
        ' colore della prima cella selezionata 
        SelectedRange = getRange()
        If IsNull(SelectedRange) Then Exit Sub 'Se, malauguratamente
        ' non dovesse tornare niente da getRange, si esce                       
        SelectedRange.Cellbackcolor = lcolorSRC 
 end sub

function getRange()
        oDocView = ThisComponent.getCurrentController() 
        RegisterMouseClickHandler
        on error goto cleanExit 
        Sel = True
        do ' Inizia un ciclo infinito dal quale si esce             
        loop Until RB = False' quando sel diventa Felse
        getRange = oSelect
        
        cleanExit:
        UnregisterMouseClickHandler
end function

' Sotto si crea un listener per intercettare il mouse
' Agisce solo quando il pulsante viene rilasciato
' cioè quando è stato selezionato tutto il range
' nel caso si debbano selezionare più celle

Sub RegisterMouseClickHandler
        oMouseClickHandler = createUnoListener("MyApp_",_
         "com.sun.star.awt.XMouseClickHandler") 
        oDocView.addMouseClickHandler(oMouseClickHandler)
End Sub


Sub UnregisterMouseClickHandler
        on error resume next
        oDocView.removeMouseClickHandler(oMouseClickHandler)
End Sub


Function MyApp_mousePressed(oEvent) As Boolean
End Function

Function MyApp_mouseReleased(oEvent) As Boolean
        oSelect = ThisComponent.CurrentSelection
        Sel = false
End Function 

Mi sembra tutto abbastanza semplice
Fatemi sapere

Ciao 
Lido

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Rispondere a