Pagina 1 di 1

[Risolto] Calc Evento Doppio Click gestito prosegue in Edit

Inviato: giovedì 23 novembre 2017, 17:35
da nickGiard
Salve a tutti
dovendo gestire l'evento Doppi Click su fogli Calc indefiniti e sui quali non voglio aggiungere l'evento Doppio Click dal menu Foglio > Foglio Eventi, all'apertura del documento Calc via basic 'appiccico' tale evento all'intero Documento:

Codice: Seleziona tutto

gMouseHandler = CreateUnoListener("OnDC_",  "com.sun.star.awt.XMouseClickHandler")
ThisComponent.CurrentController.addMouseClickHandler(gMouseHandler)

Function OnDC_mouseReleased (e) As Boolean  'MouseEvent
   'codice di gestione
	OnDC_mouseReleased = False
	If e.Buttons <> 1 Then Exit Function'
	If e.ClickCount = 2 Then
           Dim oActCell
           Dim s$ : s$ = "com.sun.star.sheet.SheetCell"' evita bug
           oActCell = ThisComponent.CurrentSelection
           If oActCell.supportsService(s$) Then
               AppDoClick.Generale_DC(oActCell)'codice di gestione
           End If
	End If
End Function
dove le varie Function OnDC_ implementano l'interfaccia "com.sun.star.awt.XMouseClickHandler"

Tutto funziona perfettamente, ma all'uscita delle funzioni mi trovo la cella del Doppio Click (o quella che le rout hanno selezionato) in edit mode, quindi l'evento continua e si completa con quello predefinito. Vorrei capire come terminare l'evento con il termine delle mie funzioni, e non trovarmi col cursore nella cella in editing.
Grazie in anticipo.
Nicola

Re: Calc Evento Doppio Click gestito prosegue in Edit mode

Inviato: giovedì 23 novembre 2017, 20:31
da vladboscaneanu
Ciao.
Dovresti giocarti il valore False, la documentazione officiale dice che se ritorna True
" no other handler will be called and the broadcaster will take no further actions regarding the event"
Se proprio no, vai all'antica : alla fine del tuo codice seleziona un empty range

Codice: Seleziona tutto

REM Select an empty range..
oRanges = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
ThisComponent.CurrentController.Select(oRanges)
Ma non sono sicuro se funzionerà.
Con quale suite riscontri questo problema, con OpenOffice?

Re: Calc Evento Doppio Click gestito prosegue in Edit mode

Inviato: giovedì 23 novembre 2017, 20:58
da patel
ciao nickGiard, ti dispiace allegare un file di esempio funzionante ?

[Risolto] Calc Evento Doppio Click gestito prosegue in Edit

Inviato: venerdì 24 novembre 2017, 16:13
da nickGiard
Grazie Vlad per i tuoi suggerimenti.
In effetti mi ero scordato del significato del valore di ritorno.
Ho utilizzato ambedue i suggerimenti, col secondo ho eliminato un antipatico sfondo grigio sulla cella su cui si posiziona e attiva alla fine della rout.
Questo è il codice risultante:

Codice: Seleziona tutto

Function OnDC_mouseReleased (e) As Boolean'MouseEvent
	OnDC_mouseReleased = False
	If e.Buttons <> 1 Then Exit Function'
	If e.ClickCount = 2 Then
        Dim oActCell
        Dim s$ : s$ = "com.sun.star.sheet.SheetCell"' evita bug
        oActCell = ThisComponent.CurrentSelection
        If oActCell.supportsService(s$) Then
            AppDoClick.Generale_DC(oActCell)
            ' da vladboscaneanu
            'no other handler will be called and the broadcaster will take 
            'no further actions regarding the event"
	   OnDC_mouseReleased = True
	  'evita che la cella resti selezionata con sfondo grigio
	  Dim oRanges
	  oRanges = ThisComponent.createInstance("com.sun.star.sheet.SheetCellRanges")
	  ThisComponent.CurrentController.Select(oRanges)                        
        End If
	End If
End Function
Mi scuso per i rientri del codice ma non sono riuscito a sistemarli.
Se ritenete utile per la comunità posso creare un file di esempio ad hoc con l'implementazione completa dell'evento doppio click con il listener.
Grazie ancora per l'aiuto
Nicola

Re: Calc Evento Doppio Click gestito prosegue in Edit

Inviato: venerdì 24 novembre 2017, 18:19
da charlie
Ciao il [Risolto] e la spunta verde vanno sul primo titolo.
Ho provveduto io, in cambio posta l'esempio che sicuramente sarà utile a qualcuno, grazie :)

Re: [Risolto] Calc Evento Doppio Click gestito prosegue in E

Inviato: mercoledì 29 novembre 2017, 21:40
da nickGiard
Grazie x il supporto.
Pensando che possa essere utile a qualcuno, ho implementato l'evento Doppio Click sul EventoDoppioClick.ods, che si attiva all'apertura dello stesso.
Il Doppio Click in qualsiasi cella, anche nei nuovi fogli, colora la cella di rosso. Se di nuovo torna al colore bianco[/size].
Le macro illustrano il tutto.