Newsgroup: it.comp.lang.visual-basic
Titolo: [?] Progress Bar in Status Bar

E' possibile inserire una progress bar in una status bar, oppure una
bitmap, ecc... Come?
Grazie
Angelo

 bitmap, ecc... Come?
per la bitmap c'e' una proprieta' apposta. attenzione solo che deforma, devi
calcolare l'altezza del bmp e quella della s.b.
per la barra di progressione, me lo sono chiesto anch'io ma non ci ho
provato. forse, se la status puo' essere container.
ciao, a.

provato
io ho provato a design time a disegnare uno progress dentro una status
e sembre funzionare tutto
bye
locaduck

 e sembre funzionare tutto
togo !
puoi postare un po' di codice ?
tia, pal

...

Il mio "sembra funzionare tutto" era riferito al fatto che mi sembrava che
la status si comportasse da container (oltretutto mi sembra di avere letto
da qualche parte che e' giusto che sia cosi'): dico sembrava perche' ho
riprovato ora e ... nada; o ho fatto qualche magia o ero ubriaco.
Va be', mi scuso di avere creato false illusioni.
saluti
locaduck
PS: comunque rimango del parere che in un'altra vita la status bar facesse
da contenitore proprio come la picture box ... mi sa proprio che era in
un'altra vita perche' l'MSDN dice il contrario  :((((((((((
"The following controls can contain other controls:
Frame control
PictureBox control
SSTab control "

Da quello che so io devi mettere una picturebox e poi disegnarvici dentro i
quadratini :-(
GL+

 un'altra vita perche' l'MSDN dice il contrario  :((((((((((
    L'oggetto:
    StatusBar1.Panel(X).Picture
    è un handle (hBitmap) che può essere passato alle funzioni
    GDI. Il bitmap può essere "stretch-ato" e ripassato come
    proprietà.
    oppure il metodo:
    StatusBar1.Panel(X).Picture.Render()
    permette di modificare il bitmap copiandolo in un DC

     permette di modificare il bitmap copiandolo in un DC
jimi, dimmi la verita':
sei tu *davvero* convinto che io abbia *davvero* capito come posso attivare
una barra di avanzamento in una di stato ? :):)
non puoi esserlo *davvero*...

 una barra di avanzamento in una di stato ? :):)
Davvero ? :-(
Provo a "tradurre".
StatusBar1.Panels(X).Picture è l'handle di un bitmap. Mettiamo che
questo bitmap rappresenti una linea blu. Si potrebbe prelevare il
bitmap con CreateCompatibleBitmap, creare due un DC (CreateDC
e CreateCompatibleDC), modificare il secondo DC (StretchBlt),
selezionare l'oggetto bitmap nel DC con SelectObject. Quest'ultima
funzione ritorna l'oggetto modificato.
    StatusBar1.Panels(X).Picture = SelectObject(hDC2, hBitmap)
ottenendo un effetto di progressione.
Lasciando perdere tutta questa brodaglia, si può fare la stessa cosa
con gli strumenti in dotazione.
Si crea un oggetto PictureBox non visibile che chiamiamo pctHidden:
    With pctHidden
        .Autoredraw = True
        .BorderStyle = 0
        .FillColor = <colore da usare come indicatore di progresso>
        .ScaleMode = 3 'Pixel
        .Visible = False
    end with
e una barra di stato (StatusBar1) con un pannello (Panels(1))
Si adegua la dimensione di pctHidden alla dimensione del pannello
    pctHidden.With = StatusBar1.Panels(1).Width
   In una routine si può scrivere:
Dim pctColor as Long
Dim pctHeight as Integer
Dim intProgress as Integer
Dim intScale as Integer
    'intScale = è il valore dell'incremento, da calcolare come si
    'farebbe se si utilizzasse un normale controllo ProgressBar
    pctColor = pctHidden.FillColor
    pctHeight = pctHidden.ScaleHeight
    Do while not <qualche condizione>
        [operazioni]
        ...
       intProgress = intProgress + intScale
       pctHidden.Line (0, 0)-(intProgress, pctHeight), pctColor, BF
       StatusBar1.Panels(1).Picture = pctHidden.Image
       StatusBar1.Refresh
    loop
    'alla fine del processo si cancellano pctHidden e Panels(1)
    pctHidden.Cls
    StatusBar1.Panels(1).Picture = pctHidden.Image
    Si può ottenere lo stesso risultato sovrapponendo a Panels(1)
    un oggetto ProgressBar vero e proprio, dimensionato
    opportunamente. Ci sono fior di programmi che usano questi
    sistemi.

 Provo a "tradurre".
il limite non era certo tuo, era ed e' tutto mio.
grazie 1000 per la risposta dettagliatissima,
ciao, a.

SetWindowParent()

C'è un esempio sul mio sito: http.//
www.ubi1k-vb.net
Ciao,
Umberto Meroni
Sito servizi internet: 
http://www.ubi1k.com
Sito Visual Basic: 
http://www.vbp.it
Info: 
http://www.ubi1k.com/meroni
---
E il mio maestro mi insegnò
com'è difficile trovare l'alba
dentro l'imbrunire.
---


Lapsus