Avatar billede choco Nybegynder
28. april 2005 - 18:26 Der er 12 kommentarer og
1 løsning

progressbar i statusbar

Hvordan laver man en statusbar som der er på internet explorer.. ja ved ikk helt hvordan man skal forklare det så det er til at forstå men den blå line som viser at den er ved at loade en hjemmeside nede i statusbaren..

Håber der er en som kan hjælpe mig med det...
Avatar billede sjh Nybegynder
29. april 2005 - 00:26 #1
Når du er i vb så tryk på [CTRL] og [T] nu finder du:

Microsoft Windows Common Controls 5.0

eller

Microsoft Windows Common Controls 6.0

og hack ud for.. så får du lidt at lege med :D
Avatar billede choco Nybegynder
03. maj 2005 - 08:14 #2
Undskyl jeg har været lidt langsom til at skrive...
Men jeg ved ikk helt om du misforstår mig... det er ikk internettet jeg prøver at få til at virke... det er bare når man laver noget så skal den køre den der indlæsnings line som ligger i statusbaren her på internettet og i office parken og alle mulige steder... det er vist en kode kunne jeg forstille mig..???
Avatar billede martin_moth Mester
03. maj 2005 - 12:49 #3
I Windows Common Controls er der en progress bar. Sæt den på din form, og læs om den i hjælpen. Eller søg på "pregressbar" på eksperten
Avatar billede joern Nybegynder
03. maj 2005 - 14:17 #4
Hej.

Efter choco's fornyelse af spørgsmålet.

Det er ikke alting der lader sig afbillede i en progressbar, du skal også overveje om den proces du vil vise tager så lang tid at en progressbar overhovedet er rimelig.

Men det du vil vise skal sættes til 100% og så skal der i pågældende funktion være ajourføring med visse intervaller.

Remarks

·    The ProgressBar control monitors an operation's progress toward completion.

A ProgressBar control has a range and a current position. The range represents the entire duration of the operation. The current position represents the progress the application has made toward completing the operation. The Max and Min properties set the limits of the range. The Value property specifies the current position within that range. Because chunks are used to fill in the control, the amount filled in only approximates the Value property's current setting. Based on the control's size, the Value property determines when to display the next chunk.

The ProgressBar control's Height and Width properties determine the number and size of the chunks that fill the control. The more chunks, the more accurately the control portrays an operation's progress. To increase the number of chunks displayed, decrease the control's Height or increase its Width. The BorderStyle property setting also affects the number and size of the chunks. To accommodate a border, the chunk size becomes smaller.

You can use the Align property with the ProgressBar control to automatically position it at the top or bottom of the form.

Tip  To shrink the chunk size until the progress increments most closely match actual progress values, make the ProgressBar control at least 12 times wider than its height.

The following example shows how to use the ProgressBar control, named ProgressBar1, to show the progress of a lengthy operation of a large array. Put a CommandButton control and a ProgressBar control on a form. The Align property in the sample code positions the ProgressBar control along the bottom of the form. The ProgressBar control displays no text.

Private Sub Command1_Click()
    Dim Counter As Integer
    Dim Workarea(250) As String
    ProgressBar1.Min = LBound(Workarea)
    ProgressBar1.Max = UBound(Workarea)
    ProgressBar1.Visible = True

'Set the Progress's Value to Min.
    ProgressBar1.Value = ProgressBar1.Min

'Loop through the array.
    For Counter = LBound(Workarea) To UBound(Workarea)
        'Set initial values for each item in the array.
        Workarea(Counter) = "Initial value" & Counter
        ProgressBar1.Value = Counter

Next Counter
    ProgressBar1.Visible = False
    ProgressBar1.Value = ProgressBar1.Min
End Sub

Private Sub Form_Load()
    ProgressBar1.Align = vbAlignBottom
    ProgressBar1.Visible = False
    Command1.Caption = "Initialize array"
End Sub

M.v.h. Jørn
Avatar billede choco Nybegynder
03. maj 2005 - 14:18 #5
mit problem er ikk at få en progressbar til at virke...
mit problem er bare at få den vist nede i min statusbar...

men så må jeg selv prøve at finde ud af hvad jeg kan finde ud af...
Avatar billede joern Nybegynder
03. maj 2005 - 15:06 #6
Hej.

Jeg har aldrig anvendt statusbar i mine applikationer, men jeg kan se i online-hjælpen, at det er noget med at oprette en collection af panel-objects.

Dim pnlX As Panel
Dim i As Integer
For i = 1 To 6  ' Add six Panel objects.
    ' Create a panel and get a reference to it simultaneously.
    Set pnlX = StatusBar1.Panels.Add(, "Panel" & i) ' Set Key property.
    pnlX.Style = i  ' Set Style property.
    pnlX.AutoSize = sbrContents ' Set AutoSize property.
Next i

God fornøjelse, - det må være vigtigt for dig.

M.v.h. Jørn
Avatar billede choco Nybegynder
04. maj 2005 - 12:26 #7
Jeg har downloadet et program som har den function som jeg søger men der er bare alt for meget kode til at jeg kan gennemskue hvad pokker jeg skal gøre...

til dem som har lyst kan prøve at downloade det lille program og se hvad det er jeg mener...

Download på : http://www.freevbcode.com/ShowCode.Asp?ID=2214
Avatar billede joern Nybegynder
04. maj 2005 - 12:51 #8
Hej.

Jeg har også undertiden fundet kode til download, der var total overkill i forhold til den betydning, jeg ville lægge i en funktion.  Ene mand kan man jo ikke hamle op med software-huse med mange ansatte, så de programmer vi laver må blive knap så elegante.  Til gengæld fylder de heller ikke så meget, og er hurtige at indlæse.

Jeg har i øvrigt valgt en brugerflade der er milevidt fra MS-standard.
http://jkfsoft.dk

Når martin og sjh ikke er vendt tilbage, kan det også være fordi de synes der er et 'luksusproblem' at få progressbar i statuslinien.

M.v.h. Jørn
Avatar billede martin_moth Mester
04. maj 2005 - 13:00 #9
Eller fordi jeg er for dum til at finde en løsning - eller ikke har tid :o)
Avatar billede joern Nybegynder
04. maj 2005 - 13:43 #10
Hej Martin.

Ja, jeg tog lidt forskud på hvad din begrundelse kunne være.  Du kunne jo også være på vandretur i Lapland.

choco>>  Jeg har åbnet det link du angiver, men det viser en forside i min Opera-browser.  Jeg ved ikke om DET er ID=2214, men sådan er der så meget.  Hjemmesider, der kun kan vises korrekt i MSIE må undvære mig som gæst.

M.v.h.  Jørn
Avatar billede choco Nybegynder
05. maj 2005 - 00:46 #11
joern >> du har nok ret i at det er et luksusproblem men jeg havde ikk regnet med at det var så svært at få lavet... så hvis der ikk er en som ved hvordan man gøre må jeg jo vente med mit "luksusproblem" :o)
Avatar billede joern Nybegynder
05. maj 2005 - 22:37 #12
Hej Choco.

Hvis ikke der kommer flere svar til dig, skal du huske at lukke med et svar, hvor du tager point tilbage.

M.v.h.  Jørn
Avatar billede choco Nybegynder
08. maj 2005 - 18:50 #13
jepper... har bare ikk lige haft tid de sidste par dage...

men nu har jeg selv løst mit "luksusproblem" :D

og hvis der skulle komme andre forbi som gerne vil det samme som mig smider jeg lige koden her:

Den her kode skal stå i et module:

Option Explicit
Public Declare Function SetParent Lib "user32" (ByVal hWndChild As Long, ByVal hWndNewParent As Long) As Long
Public Declare Function SendMessageAny Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal msg As Long, ByVal wParam As Long, lParam As Any) As Long

Public Type RECT
    Left As Long
    Top As Long
    Right As Long
    Bottom As Long
End Type

Public Const WM_USER As Long = &H400
Public Const SB_GETRECT As Long = (WM_USER + 10)

den her kode skal jo så bare stå under de forskellige ting som bliver sat ind på en form.. der er ikk lavet om på navnene på de forskellige ting så i kan se jer frem til hvad der skal stå hvor :

Option Explicit

Private Sub Command1_Click()
    Command1.Enabled = False
    ProgressBar1.Min = 0
    ProgressBar1.Max = 100
    ShowProgressInStatusBar True
    Timer1.Enabled = True
End Sub

Private Sub ShowProgressInStatusBar(ByVal bShowProgressBar As Boolean)

    Dim tRC As RECT
   
    If bShowProgressBar Then

        SendMessageAny StatusBar1.hwnd, SB_GETRECT, 1, tRC
        With tRC
            .Top = (.Top * Screen.TwipsPerPixelY)
            .Left = (.Left * Screen.TwipsPerPixelX)
            .Bottom = (.Bottom * Screen.TwipsPerPixelY) - .Top
            .Right = (.Right * Screen.TwipsPerPixelX) - .Left
        End With
        With ProgressBar1
            SetParent .hwnd, StatusBar1.hwnd
            .Move tRC.Left, tRC.Top, tRC.Right, tRC.Bottom
            .Visible = True
            .Value = 0
        End With
       
    Else
        SetParent ProgressBar1.hwnd, Me.hwnd
        ProgressBar1.Visible = False
    End If
   
End Sub

Private Sub Form_Unload(Cancel As Integer)
    ShowProgressInStatusBar False
End Sub

Private Sub Timer1_Timer()
    Static lCount As Long
   
    lCount = lCount + 5
   
    If lCount > 100 Then
        Timer1.Enabled = False
        ShowProgressInStatusBar False
        Command1.Enabled = True
        lCount = 0
    End If
   
    ProgressBar1.Value = lCount
   
End Sub

på din form skal du have en : knap, statusbar, progressbar og en timer...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester