Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Progressbar Need help! Добавлено: 28.08.06 20:52  

Автор вопроса:  Monk
Необходимо для замутить в программе разбивалке файла на части - progressbar чтоб был виден прогресс. Я с баром никогда не работал так что объясните как это сделать. Мож какие мануалы есть. Вот код дробилки:

Private Sub cmdgo_Click()
Dim recPos, lenMod, lenDiv As Long
Dim readF As Byte
Dim c, lenOfFile, AmountOfBytes As Long
Dim fileName, folderName, fn As String
Dim mass() As Byte
Dim Counta
fn = "001"
recPos = 1
fileName = Text2.Text

lenOfFile = FileLen(fileName)
AmountOfBytes = Val(txtKusok.Text)
folderName = ExtractFolderName(fileName)

If optSubDir Then
folderName = folderName & "\" & txtPapka & "\"
Dim fEx
fEx = Dir(folderName, vbDirectory)
If fEx = "" Then
MkDir folderName
End If
Else
folderName = folderName & "\"
End If

Open folderName & "Infa.inf" For Output As #4
Print #4, ExtractFileName(fileName)
Close #4

If lenOfFile <= Val(txtKusok.Text) Then
MsgBox "&#215;&#224;&#241;&#242;&#252; &#228;&#238;&#235;&#230;&#237;&#224; &#225;&#251;&#242;&#252; &#236;&#229;&#237;&#252;&#248;&#229; &#247;&#229;&#236; &#244;&#224;&#233;&#235;. &#200;&#231;&#236;&#229;&#237;&#232;&#242;&#229; &#240;&#224;&#231;&#236;&#229;&#240; &#247;&#224;&#241;&#242;&#232; &#226; &#237;&#224;&#241;&#242;&#240;&#238;&#233;&#234;&#224;&#245;", vbCritical, "&#206;&#248;&#232;&#225;&#238;&#247;&#234;&#224; &#226;&#251;&#248;&#235;&#224;..."
Exit Sub
End If

lenDiv = lenOfFile \ AmountOfBytes
If lenDiv > 999 Then
MsgBox "&#204;&#192;&#202;&#209;&#200;&#204;&#211;&#204; 999 &#215;&#192;&#209;&#210;&#197;&#201;!", vbCritical, "&#206;&#248;&#232;&#225;&#234;&#224;!!!"
Exit Sub
End If
lenMod = lenOfFile Mod AmountOfBytes
If lenMod = 0 Then
Open fileName For Binary As #1
Open folderName & fn & ".DMS" For Binary As #3
ReDim mass(AmountOfBytes - 1)
c = 1
Do While c < lenOfFile - 1
Get #1, c, mass
Put #3, 1, mass
c = c + AmountOfBytes
Close #3
If c < lenOfFile - 1 Then
IncFn fn
Open folderName & fn & ".DMS" For Binary As #3
End If
Loop
Close #3
Close #1
Else
Open fileName For Binary As #1
Open folderName & fn & ".DMS" For Binary As #3
ReDim mass(AmountOfBytes - 1)
c = 1
Do While c < (lenDiv * AmountOfBytes) - 1
Get #1, c, mass
Put #3, 1, mass
c = c + AmountOfBytes
Close #3
If c < (lenDiv * AmountOfBytes) - 1 Then
IncFn fn
Open folderName & fn & ".DMS" For Binary As #3
End If
Loop
Close #3
IncFn fn
recPos = 1
Open folderName & fn & ".DMS" For Binary As #3
ReDim mass(lenMod - 1)
Get #1, (lenDiv * AmountOfBytes) + 1, mass
Put #3, 1, mass
Close #3
Close #1
End If
MsgBox "&#195;&#238;&#242;&#238;&#226;&#238;! &#194;&#251;&#225;&#240;&#224;&#237;&#237;&#251;&#233; &#244;&#224;&#233;&#235; " & fileName & " &#225;&#251;&#235; &#240;&#224;&#231;&#225;&#232;&#242; &#237;&#224; " & Val(fn) & " &#247;&#224;&#241;&#242;&#232;(&#229;&#233;)!", vbInformation, "&#211;&#240;&#224;!!!!"
End Sub
Помогите Плиз!!!

Ответить

  Ответы Всего ответов: 3  

Номер ответа: 1
Автор ответа:
 Nj



ICQ: 223663115 

Вопросов: 21
Ответов: 285
 Профиль | | #1 Добавлено: 28.08.06 23:31
Просто скажу, что бару нужно задать Max и Min как любое число, а потом, чисто математически задавать ему текущую позицию вроде
progressbar1.Max=100
progressbar1=56 'Сделали больше половины
progressbar1=progressbar1+10 эУвеличили тек. позицию на 10
Причем, Макс можно также увеличивать динамически, если вдруг ситуация затянулась. Короче, смотри методом тыка, куда именно ты хочешь воткнуть его изменения в твоем коде (ну, там, переходя от файла к файлу увеличивать на 10 или для каждого файла запускать отдельный с ProgBar.Max=FileLen и ProgBar=Seek(Fil) - сам смотри) и не забудь при распространении своей программы докладывать в пак с ней соответствующую длл (Common Controls какой-то кажется).

Ответить

Номер ответа: 2
Автор ответа:
 Nj



ICQ: 223663115 

Вопросов: 21
Ответов: 285
 Профиль | | #2 Добавлено: 29.08.06 17:49

Offtop:
Опять сообщение не засейвилось...

Не забудь добовлять DoEvents в своем коде, когда будешь бар менять, а то никто этих изменений не заметит... Да, и придется блокировать кое-какие кнопки или все форму, а то помимо бара можно будет еще понажимать куда угодно...

Ответить

Номер ответа: 3
Автор ответа:
 LamerOnLine



ICQ: 334781088 

Вопросов: 108
Ответов: 2822
 Профиль | | #3 Добавлено: 30.08.06 11:58
Прогрессбар вроде всегда отрисовывался нормально. Видимо, контрол многопоточный.

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам