28. april 2005 - 18:26Der 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..
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..???
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
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
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...
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.
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.
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)
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...
Synes godt om
Ny brugerNybegynder
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.