Newsgroup: it.comp.lang.visual-basic
Titolo: Info su progress bar

Come funziona una progressbar? Vorrei riuscire a farla scorrere mentre copio
un file su un dischetto oppure metre verifico l'esistenza di un file ecc.
Grazie by Jonny

 wrote in message
news:90ttek$vck$1...@lacerta.tiscalinet.it...

Copiato dall' help in linea di vb (msdn):
ProgressBar Scenario 1: Inform User of TreeView Population Status
If you are using a TreeView control to view a database, populating the tree
may take some time. In that instance, you can use the ProgressBar control to
inform the user of the status of the operation.
In this scenario, the Biblio.mdb database is loaded into the TreeView
control using a Do Until loop. Before the loop begins the ProgressBar
control is unhidden. Through each iteration of the loop, the Value property
of the ProgressBar control is updated with the PercentPosition property of
the Recordset object. When the loop finishes, the ProgressBar control is
hidden again.
Sample Application: DataTree.vbp
The code examples in this topic are taken from the DataTree.vbp sample
application, which is listed in the Samples directory.
Objects Used
The following example uses the following objects:
Form named "frmTreeView"
ProgressBar Control named "prgLoad"
TreeView control named "tvwDB"
CommandButton control named "cmdLoad"
To show a ProgressBar while a TreeView control is being populated
In the Form object's Load event. hide the ProgressBar and set its Max
property to 100.
In the TreeView population code, populate the tree with a Do Until
statement.
When the loop ends, hide the ProgressBar.
In the Form Object's Load Event, Hide the ProgressBar and Set the Max
Property to 100
A progress bar is most effective when it is visible only for the duration of
the time-intensive process. To this end, you can use the Form object's Load
event to set the Visible property of the control to False.
In this scenario, the Recordset object's PercentPosition property will be
used. Since this property returns a number representing a percentage between
0 and 100, the Max property should be set to 100 when the form is
initialized. (By default, the Min property is set to 0.) The following code
hides the ProgressBar control and sets its Max property to 100.
Private Sub Form_Load()
   prgLoad.Visible = False
   prgLoad.Max = 100
End Sub
Populate the Tree with a Do Until Statement
Note   The following code builds upon the code found in "TreeView Scenario1:
Binding the TreeView to the Biblio.MDB Database." The working code can also
be found in the DataTree.vbp sample application.
To populate a TreeView control from a database, you can use a Do Until loop.
Schematically, the code might look like this:
' Presuming a Recordset object variable named
' "rsTitles" has been set to a valid database
' table.
Do Until rsTitles.EOF
   ' Using the current record, create a Node
   ' object.
   Set mNode = TreeView.Nodes.Add()
   ' Set properties of the Node.
   mNode.Text = rsTitles!Fields(1).Value
   ' Move to the next record.
   rsTitles.MoveNext
Loop
To update the ProgressBar control, use the PercentPosition property of the
Recordset object. This property returns the position of the current
recordset as a percentage of the total number of records. The code to update
the ProgressBar should then be placed somewhere within the loop, as shown:
Do Until rsTitles.EOF
   ' Update the ProgressBar control.
   prgLoad.Value = rsTitles.PercentPosition
   Set mNode = TreeView.Nodes.Add()
   ' Set properties of the Node.
   mNode.Text = rsTitles!Fields(1).Value
   ' Move to the next record.
   rsTitles.MoveNext
Loop
When the Loop Ends, Hide the ProgressBar
Once the TreeView control has been entirely loaded with Node objects, you
can hide the ProgressBar control, as shown:
Private Sub cmdLoad_Click()
   ' Show the ProgressBar control.
   prgLoad.Visible = True
Do Until rsTitles.EOF
      ' Update the ProgressBar control.
      prgLoad.Value = rsTitles.PercentPosition
      Set mNode = TreeView.Nodes.Add()
      ' Set properties of the Node.
      mNode.Text = rsTitles!Fields(1).Value
      ' Move to the next record.
      rsTitles.MoveNext
   Loop
   ' Hide the ProgressBar control.
   prgLoad.Visible = False
End Sub
----------------------------------------------------------------------------
----
''''''''''''''''''''''''
Ciao
Aldo
p.s.: la prossima volta, usa l' help prima di postare !

 <CUT>


 wrote in message
90vj7l$2c50a$1...@ID-60503.news.dfncis.de...


 dell'esecuzione si è arrivati?
Ti devi impostare a manina, nei punti nevralgici del programma, 
l'auemnto della progressbar.
-- 
News2000 1.5ß Version 
http://socket2000.8m.com

 l'auemnto della progressbar.
sempre che sia possibile.
l'esempio ovvio e' un ciclo for x = 0 to 99
metti min 0 max 99 e value =x.
semplice (se sai il max) anche con un do while.
impossibile con una query tipo execute o select, direi
con una copia di file:
-- filecopy direi sia impossibile
-- puoi leggere blcchi di byte e scriverli.
-- oppure l'api del copia di gestione risorse, non mi ricordo mai qual e'.
l'importante e' che tu possa disporre dei tre valori:
min <= val <= max

 dell'esecuzione si è arrivati?
Dipende come fa la copia del file.
Se lo apre a blocchi e copia tali blocchi sulla destinazione e' in grado di
sapere benissimo lo stato di avanzamento dell' operazione.
Nel caso di uno scan per la ricerca di un file, dato che non puo' sapere a
priori il contenuto della destinazione, non ha senso imho l' uso della
progress bar, a meno di non ricorrere a qualche trucchetto tipo farla andare
avanti e indietro ciclicamente o impostare un valore max statisticamente
accettabile.
Ciao
Aldo

 -- oppure l'api del copia di gestione risorse, non mi ricordo mai qual e'.
La simpatica apetta si chiama SHFileOperation.
Copies, moves, renames, or deletes a file system object.
int SHFileOperation(
    LPSHFILEOPSTRUCT lpFileOp
);
Parameters
lpFileOp
[in] Address of an SHFILEOPSTRUCT structure that contains information this
function needs to carry out the specified operation.
Return Values
Returns zero if successful, or nonzero otherwise.
In vb:
Private Const FO_MOVE = 1
Private Const FO_COPY = 2
Private Const FO_DELETE = 3
Private Const FO_RENAME = 4
Private Const FOF_MULTIDESTFILES = &H1
Private Const FOF_SILENT = &H4
Private Const FOF_RENAMEONCOLLISION = &H8
Private Const FOF_NOCONFIRMATION = &H10
Private Const FOF_WANTMAPPINGHANDLE = &H20
Private Const FOF_ALLOWUNDO = &H40
Private Const FOF_FILESONLY = &H80
Private Const FOF_SIMPLEPROGRESS = &H100
Private Const FOF_NOCONFIRMMKDIR = &H200
Private Type SHFILEOPSTRUCT
    hwnd As Long
    wFunc As Long
    pFrom As String
    pTo As String
    fFlags As Integer
    fAnyOperationsAborted As Long
    hNameMappings As Long
    lpszProgressTitle As String
End Type
Private Declare Function SHFileOperation Lib "shell32.dll" Alias
"SHFileOperationA" (lpFileOp As Any) As Long
Ciao e buona domenica a tutti.
Aldo

 impossibile con una query tipo execute o select, direi
Dici? Metti l'aumento della progress bar DOPO il ciclo. :-)
Se vuoi sapere (come richiesto) come si svolgerà in termini di tempo 
una operazione imposti Min e Max su valori a tuo piacere, e imposti 
value nei punti importanti, che segnano una tappa di nell'avanzamento
del comando di partenza. Ovviamente NON sempre è possibile, ma 
spesso.


 spesso.
non ho capito.

 non ho capito.
La domanda:
"..Ma per eventi come l'esecuzione  di un programma o di un comando, 
come si può sapere a che punto  dell'esecuzione si è arrivati?"
Si risolve mettendo l'avanzamento della progress bar nei punti 
nevralgici, in sequenza, dell'esecuzione del programa...


 nevralgici, in sequenza, dell'esecuzione del programa...
appunto: quando e' possibile. non mi sembra lo sia sempre.

 appunto: quando e' possibile. non mi sembra lo sia sempre.
Allora avevi capito! :D


Fammi un esempio per l'esecuzione di una Query o la copia di un file.
--
 
federic...@planet.it
Eliminare NOSPAM dall'indirizzo! Delete NOSPAM from address!
"due di picche" <mega...@TOGLIaruba.it> ha scritto nel messaggio
news:910b6c$lv$1...@fe1.cs.interbusiness.it...


 Fammi un esempio per l'esecuzione di una Query o la copia di un file.
Per la copia del file non puoi se utilizzi il comando di visualbasic 
filecopy, idem per le query, dal momento che non sono una sequenza di
istruzioni ma comandi singoli, monoriga.


Lo sapevo, ma era questa la domanda iniziale. A nessuno viene in mente
un trucco per evidenziare, anche per queste operazione, lo scorrimento
del tempo se non proprio il procedere dell'operazione?
--
 
federic...@planet.it
Eliminare NOSPAM dall'indirizzo! Delete NOSPAM from address!
"due di picche" <mega...@TOGLIaruba.it> ha scritto nel messaggio
news:9112qv$2q6$1...@fe1.cs.interbusiness.it...


 del tempo se non proprio il procedere dell'operazione?
se hai un'idea almeno vaga p.e. del reccord.count, puoi mettere un timer
che, fa avanzare una progress bar un tantinello al secondo. magari stai
largo seno' sfora il monitor :)
diomio, come sto cadendo in basso.
e poi ho anche la bronza di rispondere ai mostri sacri...
non c'e' piu' religione.
ma ho avuto l'impressione che anche ms ci ricorra in qualche caso.
ciao, a.

 del tempo se non proprio il procedere dell'operazione?
Beh, mi sembra che per quel che riguarda il treeview e i recordset 
qualche cosa sia stao postato, così come per la copia dei file, via 
api.
