Newsgroup: it.comp.lang.visual-basic
Titolo: barra di prograssione

apro un file txt, e per ogni riga del file scrivo dei dati in excel.
Come faccio ad aggiungere una barra di progressione tipo quella
delle installazioni dei programmi?
grazie
Riccardo

Referenzia la libreria di controlli "Micorosft Windows Common Controls 6.0"
e usa l'oggetto ProgressBar oppure usa una label colorata di cui gestisci la
proprietà Width!
                    Ciao
                                                Allanon
--
- SPAMKILLER
 L'indirizzo delle risposte é 
itlangv...@michele.sytes.net
 LASCIATE il NOSPAM fa parte dell'indirizzo :-)
  Per superare le impostazioni di protezione antispam scrivete
  nel testo del messaggio la scritta "SPAMKILLER"
Scusate il disturbo, ma non posso più di pubblicità

 ha scritto

#1 - includi nei componenti ms windows common controls, e usi la pb
predefinita.
come .max metti il numero di linee del file di testo, il .value lo aggiorni
man mano con un contatore incrementato al line input (suppongo usi questo
per il txt).
#2 - un filo piu' macchinoso ma piu' leggero (non hai bisogno dei controlli
comuni). incolla un label p.e. con backcolor=evidenziazione dentro un
picture.
il max sara' lo scalewidth del picture. la larghezza del label la calcoli
con una proporzione a ogni line input, sempre usando il contatore. tipo:
x=picCont.ScaleWidth
While Not EOF(fNum)
   Line Input ...
   RecNo = RecNo + 1
   lblPerc.Width = (RecNo * x) / RecMax
   .MoveNext
   DoEvents
wend
con la pb di windows non ricordo se il doevents serve.
ciao.

 con la pb di windows non ricordo se il doevents serve.
se posso permettermi...
con la pb il doevents non serve, ma anche per la label colorata lo eviterei,
a meno che non serva anche per poter abortire l'operazione. un label.refresh
dovrebbe essere sufficiente
Salutoni
Sergio

 ha scritto

si. oltre che in quel caso, uso doevents anche per evitare lo schifezzamento
del form se l'operazione e' lunga e gli si passano finestre davanti.
hai mai visto le frattaglie di una pagina web con un'etichetta di
progressione che le attraversa allegramente ? be', le sto ammirando adesso
:)
ciao

 adesso :)
In questo caso è imho meglio effettuare ogni n iterazioni un form.refresh!
;)

 ;)
uffa ! perche' non vi rinfrescate un po' voi, che sta arrivando il caldone !
a me piace che i miei prog siano consapevoli del mondo esterno !
ringraziate che non gli dico di dare un'occhiata, gia' che ci sono, su
repubblica, googlenews o cnn !
almeno da loro pretendo che se usano "grave, gravissimo", sappiano quello
che dicono :P

 ci sono, su repubblica, googlenews o cnn !
vogliamo lavorare di metafore... e allora continuiamo
se il tuo programma deve essere consapevole del mondo esterno, deve essere
anche culturalmente in grado di sopportare questo. il mondo è strano,
difficile e pieno di dolore, e un piccolo programmuccio rischia di
smarrirsi.
imho le strade sono due: o fai in modo che il tuo programmino diventi, se
non un programmone vecchio e saggio, almeno un programma maggiorenne, capace
di badare a sè stesso, oppure gli metti il paraocchi, il paraorecchie, e il
preservativo sulla seriale.
ovvio che la prima strada è meglio, ma ci va il suo tempo a educarlo come si
deve.
Salutoni
Sergio

 ha scritto nel messaggio
news:bair95$7cla$1...@ID-51318.news.dfncis.de...

grazie, ma come faccio a calcolarmi il RecMax?
quando apro il file, come faccio a sapere da quante linee è composto senza
scandirlo prima tutto (su files molto lunghi avrei un'attesa enorme se
facessi un
ciclo prima)?
grazie
Riccardo

 ciclo prima)?
si chiamava recmax perche' era un recordset (cfr recno=recnumber), e lo
ricavavo con recordcount.
nel tuo caso, c'era stato un thread, e direi che il metodo piu' veloce, di
parecchio, fosse quello suggerito da epoch, usando il fso:
    Dim Fso As FileSystemObject
    Dim FIn As TextStream
    Dim NumLine As Long
    Set Fso = CreateObject("Scripting.FileSystemObject")
    Set FIn = Fso.OpenTextFile(App.Path & "\list.txt", ForAppending, False,
TristateFalse)
    NumLine = FIn.Line - 1
    FIn.Close
se il tempo di svolgimento e' un problema, nb comunque che qualsiasi refresh
doevents progressione ecc rallenta parecchio i cicli...
ciao

 deve.
lo so. mi e' sempre stato simpatico darwin.
anche quello di bonolis, ma soprattutto carletto.
ciao

 ciao
______
scusa l'ignoranza, ma mi sto avvicinando ora a Visal Basic e molte cose non
le conosco
e/o non le capisco....
mandando avanti il codice passo passo, dopo aver scritto :
Function nrRecord()
Dim Fso As FileSystemObject
Dim FIn As TextStream
Dim NumLine As Long
Set Fso = CreateObject("Scripting.FileSystemObject")
Set FIn = Fso.OpenTextFile(strNome, ForAppending, False, TristateFalse)
nrRecord = FIn.Line - 1
FIn.Close
e nel mio codice precedente ho scritto:
RecMax = nrRecord
il codice si blocca su
Dim Fso As FileSystemObject
dandomi come errore
Tipo definito dall'utente non definito.
cosa debbo fare?
grazie ancora
Riccardo

 Riccardo
mi ero dimenticato io:
in progetto|riferimenti inserisci
ms scripting runtime
sotto dovrebbe indicare la scrrun.dll
ciao

 sotto dovrebbe indicare la scrrun.dll
Scommessina cattiva :-)
Tra un po' ci troveremo di fronte ad un post del tipo: "Ho dei problemi ad
installare una mia applicazione...."
Salutoni
Sergio

 ha scritto

che fetente :P
riccardo sta usando file di testo, mica adomdàc :)
seriamente: se la metti nei riferimenti il pdw la include, no ? nei miei
setup non ho mai usato il fso, mi sono limitato a prove, quindi non ho idea
di cosa succeda.
ciao

 seriamente: se la metti nei riferimenti il pdw la include, no ?
è proprio quello il fatto... di scrrun.dll ne esistono due versioni, una per
la famiglia 95/98/me, una per nt/2000/xp. se fai il pacchetto su un 2000, e
installi sul 98, credo che tu possa avere dei problemi.
o almeno sono una marea i post, su questo ng, di quelli che si incasinati
per quel motivo.
Salutoni

 per quel motivo.
azz... io continuo a dimenticarmi che esistono i win9... :)
abbe', come requisiti si mette fso, mdac, ie, win2000.
ciao
sai mica in che corridoio e' l'ufficio incasso percentuali, a redmond ?

 ciao
______________________
quindi?
per riuscire a fare quello che mi hai consigliato, senza incasinare
i pc con win9x non ci sono altre soluzioni?
thank's
Riccardo

 riccardo sta usando file di testo, mica adomdàc :)
___________________
questa non l'ho capita!
:-(
bye

 bye
l'uso di ado e del mdac con i db tende a creare problemi. su questo gruppo
vengono spesso postate le soluzioni, e molto piu' spesso le richieste di chi
non le ha lette.
usando tu dei txt, dovresti esserne al di fuori. ma se vedi quei post,
leggili.
quanto all'altra domanda: per quanto mi riguarda i win9 non esistono. sulla
mia lan ho quasi finito di portare tutto a 2000. sul sito avverto che ho
testato su 2000. uno mi ha chiesto una modifica a un prog perche' su win9
come al solito gli anneriva le icone. gliel'ho fatta, ma e' l'ultima volta.
si arriva dove si puo'.
quando hai fatto il tuo prog, se ti preme che giri sui win9, testalo
(=installalo, col setup creato dal wizard di vb6) su una macchina win9
pulita. ma considera che su quelle macchine di solito ci si fa di tutto...
ciao

   Open "c:\TuoFile.txt" For Input As #1
        Do While Not EOF(1)
            If (ContTOT Mod 20) = 0 Then
                DoEvents
            End If
            Line Input #1, Riga
            ContTOT = ContTOT + 1
        Loop
    Close #1
    ProgressBar.Min = 0
    ProgressBar.Max = ContTOT
    Open "c:\TuoFile.txt" For Input As #1
        Do While Not EOF(1)
            .....
                Fai le tue operazionni sul file
            .....
            ProgressBar.Value = ProgressBar.Value + 1
        Loop
    Close #1
Ciao, Vincenzo

 con win9x non ci sono altre soluzioni?
Certo che ci sono :)
Visto che nel codice per creare gli oggetti utilizzi il
CreateObject piuttosto che l'operatore New, sei gia' un
passo avanti :)
Togli lo "Scripting Runtime" dai riferimenti e dichiara
tutte le variabili che fanno riferimento a classi dello
Scripting Runtime (es. FileSystemObject, TextStream) come
Object:
Dim Fso As Object
Dim FIn As Object
Dim NumLine As Long
Set Fso = CreateObject("Scripting.FileSystemObject")
Set FIn = Fso.OpenTextFile(App.Path & "\list.txt", _
                           ForAppending, _
                           False, _
                           TristateFalse)
NumLine = FIn.Line - 1
FIn.Close
In questo modo perdi l'intellisense (cioe' se batti il punto
. dopo la variabile non ti compaiono proprieta' e metodi)
pero' il riferimento alla libreria viene fatto a Runtime.
Inutile dire che viene sollevato un errore nel caso in cui
ie (o meglio sccrun.dll) non e' presente sul sistema!
hth,
Lokar
-- 
Sito Comune: 
http://www.it-lang-vb.net/
Manifesto: 
http://www.it-lang-vb.net/docs/Manifesto.txt
UGIdotNET - 
http://www.ugidotnet.org