La B è troppo complicata per le mia capacità....
Esagerato ! Non ci credo. Picavbg ti ha proposto semplicemente una cosa analoga a questa:
Public Sub Button1_Click()
Shell "gedit /percorso_del_file_di_aiuto_da_aprire"
End
Però, poiché aborriamo l'uso eccessivo del comando shell (come appunto ci esorta sempre Ceskho ;D ); e quindi, impostando nel progetto anche il componente gb.desktop, possiamo utilizzare in modo esclusivo una funzione di Gambas:
Public Sub Button1_Click()
Desktop.Open("/percorso_del_file_di_aiuto_da_aprire")
End
Ecco l'ultima versione con un help "grezzo".
Visto che nessuno di voi ha cercato il malfunzionamento che ho nominato all'inizio, ne parlo qui, perchè non riesco a uscirne fuori. Riguarda questo pezzo di codice:
tmp = Str$(.value) 'cerchiamo il numero nell'elenco...
j = InStr(listaestratti, tmp)
listaestratti = Left$(listaestratti, j - 1) & " " & Right$(listaestratti, Len(listaestratti) - j - Len(tmp)) '...e lo togliamo
E' la parte che si occupa di togliere dall'elenco dei numeri già estratti un numero che sia in mezzo e non l'ultimo. Teoricamente è semplicissimo: si cerca nella stringa il numero e si spostano a sinistra tutti quelli successivi.
Il problema è che sembra funzionare per i primi 2 o 3 numeri, poi sclera facendo quello che gli pare. Provate a mettere dentro una dozzina di numeri a caso e poi cominciate a spegnere un pò di numeri in mezzo...
Si accettano soluzioni. :)
Ecco l'ultima versione con un help "grezzo".
Visto che nessuno di voi ha cercato il malfunzionamento che ho nominato all'inizio, ne parlo qui, perchè non riesco a uscirne fuori. Riguarda questo pezzo di codice:
tmp = Str$(.value) 'cerchiamo il numero nell'elenco...
j = InStr(listaestratti, tmp)
listaestratti = Left$(listaestratti, j - 1) & " " & Right$(listaestratti, Len(listaestratti) - j - Len(tmp)) '...e lo togliamo
E' la parte che si occupa di togliere dall'elenco dei numeri già estratti un numero che sia in mezzo e non l'ultimo. Teoricamente è semplicissimo: si cerca nella stringa il numero e si spostano a sinistra tutti quelli successivi.
Il problema è che sembra funzionare per i primi 2 o 3 numeri, poi sclera facendo quello che gli pare. Provate a mettere dentro una dozzina di numeri a caso e poi cominciate a spegnere un pò di numeri in mezzo...
Si accettano soluzioni. :)
Attenzione. I numeri presenti nella "listaestratti" sono tutti di 2 caratteri? Io creerei una lista estratti in formato array. Sarebbe assai semplice da gestire e te ne potresti anche fregare della lunghezza di ciascun numero. Ad ogni estrazione, inoltre, il numero estratto, presente nella lista, andrebbe sostituito con 0 e non avresti nemmeno l'onere di spostare tutti i numeri non ancora estratti.
Es.:
Public listaestratti as new integer[]
Public sub _new
for i = 0 to 89
listaestratti[i] = i+1
Next
'----- bla -----Bla -----Bla -----
END
Public sub Aggiorna_listaestratti
dim bTrovato as boolean
i= NumEstratto -1
listaestratti[i] = 0
END
Ho dato un'idea veloce, ma confesso di non avere ancora letto il tuo codice. Lo farò però domani. Ti prego di perdonare la mia impazienza nel comunicarti l'idea che m'è venuta.
Ciao.
Ho letto la procedura interessata dal malfunzionamento e, secondo me, la soluzione che ti ho suggerita ieri sera, relativamente alla dichiarazione di listaestratti come array, è irisolutiva, perchè, come pensavo il tuo problema è determinato dall'istruzione tmp = Str$(Estrazione[indice) ; la conversione in stringa, nel tuo caso, non fornisce sempre valori di lunghezza uguale. A parte ciò puoi gestire sia l'array Estrazione che il nuovo array listaestratti senza pensare alla posizione dell'ultimo numero estratto nell'array:
Public Sub Numeri_MouseUp() 'accende o spegne i numeri estratti
Dim i, j As Byte 'le immancabili variabili indice :)
With Last
If .background = Colorenonestratti Then 'accende un numero
.background = Colorestratti
Estrazione.Add(.Value) 'aggiunge l'ultimo numero estratto
tmp = Str$(Estrazione[Estrazione.max])
listaestratti = listaestratti & " " & tmp
Else
.background = Colorenonestratti 'spegne un numero
i = 0
While Not bTrovato
If Estrazione[i] = .value
tmp = Estrazione[i]
For j = i To Estrazione.Max - 1
Estrazione[j] = Estrazione[j + 1] '...lo si toglie scalando i successivi
Next
Endif
Inc i
Wend
i = 0
While Not bTrovato
If listaestratti[i] = tmp
For j = i To listaestratti.max - 1
listaestratti[j] = listaestratti[j + 1]
Next
listaestratti.Remove(listaestratti.Max) 'elimina l'ultimo numero dalla lista perché ormai doppio
bTrovato = True
Endif
Inc i
Wend
Endif
' If .Value = Estrazione[Estrazione.Max] Then 'se è l'ultimo estratto...
' tmp = Str$(Estrazione[Estrazione.max])
' listaestratti = Left$(listaestratti, Len(listaestratti) - (Len(tmp) + 1)) '...e lo cancella dall'elenco
' If .value <> Estrazione[Estrazione.max] Then 'se invece si cancella un numero che non è l'ultimo...
' For i = 0 To Estrazione.Max '...lo si cerca...
' If Estrazione[i] = .value Then '...e quando trovato...
' For j = i + 1 To Estrazione.Max
' Estrazione[i] = Estrazione[j] '...lo si toglie scalando i successivi
' Next
' Break 'quando è stato trovato non serve continuare
' Endif
' Next
' tmp = Str$(.value) 'cerchiamo il numero nell'elenco...
' j = InStr(listaestratti, tmp)
' listaestratti = Left$(listaestratti, j - 1) & " " & Right$(listaestratti, Len(listaestratti) - j - Len(tmp)) '...e lo togliamo
' Endif
' Estrazione.Remove(Estrazione.Max) 'elimina l'ultimo numero dalla lista...
Endif
End With
Progestratti.text = "Numeri estratti: " & listaestratti 'visualizza l'elenco dei numeri...
totest.text = "Tot. estratti: " & Str$(Estrazione.max + 1) '...e quanti ne sono stati estratti
If Estrazione.Count = 0 Then 'nel caso si siano tolti tutti i numeri senza usare Azzera
Ultimo.Value = 0
Progestratti.text = "Numeri estratti: "
Else
Ultimo.Value = Estrazione[Estrazione.Max] 'visulizza l'ultimo numero estratto
End If
End
Io non ho provato il codice che ho buttato giù, ma penso che sia corretto; comunque, verificalo tu.
:ciao:
Con il codice html potresti crearti senz'altro un manuale interno complesso (anche con i rimandi di pagina e di capitolo, ai quali stavi pensando). Vi sono alcuni programmi che per il proprio manuale utilizzano pagine con estensione htm/html, con le quali poter sfruttare appunto tutta la funzionalità del protocollo html.
Tali pagine, salvate in uno o più indipendenti file .html, potrebbero essere caricate nella cartella Dati del progetto (che tra l'altro puoi creartele direttamente proprio da lì), e richiamate opportunamente, indicando - come più compiutamente spiega md9327 qui: http://www.gambas-it.org/smf/index.php?topic=2276.msg25052#msg25052 - l'intero percorso del file .html presente nella cartella "Dati".
Così, ad esempio, se abbiamo nella cartella "Dati" un file Html1.html, potrà essere aperto così:
Public Sub Button1_Click()
' come è noto, per usare il metodo di questa classe,
' bisogna attivare anche il componente "gb.desktop":
Desktop.Open(Application.Path &/ "Html1.html")
End
PUBLIC SUB Numeri_MouseUp() 'accende o spegne i numeri estratti
DIM Nx AS Integer
WITH LAST
IF .background = Colorenonestratti THEN 'accende un numero
.background = Colorestratti
Estrazione.Add(.Value) 'aggiunge l'ultimo numero estratto
ELSE
.background = Colorenonestratti 'spegne un numero
Estrazione.Remove(Estrazione.Find(.Value)) 'Rimuove l'ultimo numero selezionato
ENDIF
END WITH
Progestratti.text = "Numeri estratti: "
FOR EACH Nx IN Estrazione
Progestratti.text &= Str$(Nx) & " " 'concatena i numeri estratti in ordine di estrazione
NEXT
totest.text = "Tot. estratti: " & Str$(Estrazione.Count) '...e quanti ne sono stati estratti
IF Estrazione.Count = 0 THEN 'nel caso si siano tolti tutti i numeri senza usare Azzera
Ultimo.Value = 0
ELSE
Ultimo.Value = LAST.Value 'visulizza l'ultimo numero estratto
END IF
END
;)
Eccolo che è arrivato milio con la soluzione di 4 righe MA, non è ancora quella giusta. :)
Public Sub Numeri_MouseUp() 'accende o spegne i numeri estratti
Dim Nx As Integer
With Last
If .background = Colorenonestratti Then 'accende un numero
.background = Colorestratti
Estrazione.Add(.Value) 'aggiunge l'ultimo numero estratto
Else
.background = Colorenonestratti 'spegne un numero
Estrazione.Remove(Estrazione.Find(.Value)) 'Rimuove l'ultimo numero selezionato
Endif
End With
Progestratti.text = "Numeri estratti: "
For Each Nx In Estrazione
Progestratti.text &= Str$(Nx) & " " 'concatena i numeri rimasti in ordine di estrazione
Next
totest.text = "Tot. estratti: " & Str$(Estrazione.Count) '...e quanti ne sono stati estratti
If Estrazione.Count = 0 Then 'nel caso si siano tolti tutti i numeri senza usare Azzera
Ultimo.Value = 0
Else
Ultimo.Value = Estrazione[Estrazione.Max] 'visulizza l'ultimo numero estratto
End If
End