Michele Zarri ha scritto:
> a) seleziona l'elemento su cui si e' fatto doppio clic
> b) chiudi la finestra di dialogo come se fosse stato premuto il pulsante OK
>
> Devo creare un listener o posso cavarmela con qualcosa di piu' adeguato
> alle mie capacita' di programmatore?
Credo di aver letto da qualche parte che StarBasic non supporta
l' evento doppio click, c' è anche un evento ClickCount, per contare
i click del mouse, ma, non mi ricordo per quale ragione, veniva consigliato
di simulare il doppio click con del codice
Ho preparato un paio di piccole sub che potrebbero andare bene per te
naturalmente è un esempio perciò devi adattare il codice al tuo
Comunque se vuoi provarle sono funzionanti
Devi procedere così:
1) Crea una dialog
2) Metterci dentro una ListBox( i nomi ho lasciato quelli che imposta
il basic)
3) Nelle proprietà vai a "Voci dell' elenco" e scrivici tre o quattro
righe, per farlo scrivi una linea e premi Invio, si chiude, riapri
il cursore è passato alla linea di sotto
4) Sempre nelle proprietà apri il tab Eventi e assegna alla pressione
o al rilascio del tasto del mouse la sub Seleziona_Elemento()
5) Metti un pulsante dove ti pare e collegalo alla sub Crea_Dialog()
Credo non ci sia altro
Se clicchi una volta su una voce della ListBox, questa si evidenzia
se entro un secondo clicchi un' altra volta quello che c' è scritto
va a finire nella cella A1 della Tabella1 e la dialog si chiude
Se invece aspetti più di un secondo non succede nulla
e devi cliccare ancora due volte per farlo
Quì sotto ti riporto il codice
REM ***** BASIC *****
REM Per provare questo codice si deve creare un dialogo
REM Metterci dentro una casella di riepilogo(ListBox)
REM Scriverci dentro tre o quattro voci dalla finestra
REM proprietà della ListBox, per andare a capo usare "
REM Sempre dalle proprietà selezionare il tab Eventi
REM associare alla pressione del tasto del mouse
REM la sub Seleziona_Elemento()
Dim b As Integer
Dim ListBox As Object
Dim oDialog As Object
Sub Crea_Dialog()
BasicLibraries.LoadLibrary("Tools")
oDialog = LoadDialog("Standard","Dialog1",DialogLibraries)
Set ListBox = oDialog.getControl("ListBox1")
b = 0 ' Setta a 0 la variabile b che serve per il conto
' click
oDialog.Execute()
End Sub
Sub Seleziona_Elemento()
Dim SelList as String
oFoglio = ThisComponent.getSheets.GetByName("Tabella1")
b = b + b ' La prima volta è 0 la seconda 2
If b = 2 Then
SelList = ListBox.getSelectedItem()
oFoglio.getCellByPosition(0 ,0).string = SelList
oDialog.EndExecute
End If
b = 1
' Le due linee sotto servono per creare un' interruzione
' nell' esecuzione del codice( un secondo), trascorso il
' quale la variabile b viene impostata a 0
' Se in questo intervallo di tempo si preme un' altra
' volta il tasto sinistro del mouse la sub viene rieseguita
' dall' inizio prima che b venga impostata a 0
' b diventa 2(b = b + b) e viene eseguito il codice dopo If
Wait 1000
b = 0
End Sub
Spero ti funzioni, fammi sapere
Ciao Lido
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]