On 13/04/06, Bernardini Lido <[EMAIL PROTECTED]> wrote:
>
> 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]
>
> Ciao Lido,
Sono d'accordo con te per quel che riguarda il problema del range, ma
l'ultima parte della discussione riguardava la possibilita' di catturare
l'evento "l'utente ha usato la rotella del mouse" in modo programmatico.
Come per il mio argomento preferito in questo periodo (la TreeListBox) OOo
sa intercettare l'uso della rotella e reagire correttamente, tuttavia non e'
chiaro come si fa in starBasic.
Ho scritto che esiste una costante WHEEL predefinita, ma questo e'
assolutamente non sufficiente per sapere come fare. Nella descrizione del
MouseEvent vengono riportati solo posizione X e Y, e i tre bottoni, ma non
c'e' traccia della rotella.
Altra cosa curiosa e' che il valore della costante MIDDLE (bottone centrale)
e' 4, mentre il valore della costante WHEEL e' 3... magari pero' e' solo una
coincidenza.
Ciao,
Michele