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]