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]

Rispondere a