[ MACTEPx @ 24.09.2007. 14:19 ] @
da li je moguce da progres bar izgleda kao prilikom pretrage fajlova u windowsu xp odn. da se 3-4 segmenta vrte u krug posto ne mogu da odredim maksimalnu vrednost za progress bar? |
[ MACTEPx @ 24.09.2007. 14:19 ] @
[ Marko_L @ 24.09.2007. 15:02 ] @
Pa ako ne znaš makimalnu vrednost onda i nema neke svrhe postavljati progress bar, zar ne, jer on upravo i služi da prikaže progres u odnosu na postavljene vrednosti. Ako baš hoćeš da ti ide u krug, stavi mu neku proizvoljnu vrednost kao max, pa kad dođe do nje vrati ga na nulu. Mada je moje mišljenje da ako već trebaš da prikažeš da nešto radi, a nemaš max vrednost, onda je bolje napraviti neku animaciju koju ćeš da vrtiš kada se obavlja zadata operacija.
[ rgdrajko @ 24.09.2007. 17:15 ] @
Evo.
Code: Private Sub Form_Load() Timer1.Interval = 100 End Sub Private Sub Timer1_Timer() ProgressBar1.Value = ProgressBar1.Value + 10 If ProgressBar1.Value >= ProgressBar1.Max Then ProgressBar1.Value = 0 End If End Sub [ Shadowed @ 24.09.2007. 17:55 ] @
Ne moz' to sto hoces sa standardnim ProgressBar-om. Eventualno mozes da simuliras tako sto ces staviti jos jedan preko pa mu menjati velicinu tako da prekriva onaj ispod koliko treba. Ili napraviti sebi kontrolu koja ce iscrtavati onako kako treba. Ili pogledati na net-u ima li nekog primera/kontrole za download za infinite progress bar.
[ Aleksandar Ružičić @ 24.09.2007. 18:16 ] @
slazem se sa Markom da ti ne treba progress bar ako ne znas koliko ce trajati proces. i da, najbolje je da koristis neku animaciju tipa
![]() [ rgdrajko @ 24.09.2007. 21:10 ] @
Citat: MACTEPx: da li je moguce da progres bar izgleda kao prilikom pretrage fajlova u windowsu xp odn. da se 3-4 segmenta vrte u krug posto ne mogu da odredim maksimalnu vrednost za progress bar? Evo tacno to sto si trazio sa 4 segmenta. Code: Dim pocetnavrednost As Integer Dim korak As Integer Private Sub Form_Load() pocetnavrednost = Picture2.Left Timer1.Interval = 100 korak = 100 End Sub Private Sub Timer1_Timer() Picture2.Left = Picture2.Left + korak If Picture2.Left > Picture1.Width Then Picture2.Left = pocetnavrednost End If End Sub [ MACTEPx @ 25.09.2007. 14:24 ] @
Jeste, najbolje je da se pusti neka animacija, ali kako, nece ni sa picture
box-om, ni sa image kontrolom, a ne volim da koristim bas neke active x kontrole, pokusavam da sto vise koristim standardne kontrole ili od njih pravim neke druge...? [ Shadowed @ 25.09.2007. 14:43 ] @
Crtaj po picturebox-u. Pretpostavljam da nece biti zahtevno sa standardnim VB funkcijama za crtanje, ako jeste, mozes i api-em.
[ rgdrajko @ 25.09.2007. 21:58 ] @
Kazi tacno sta zelis i kako zelis da to bude uradjeno.
[ Shadowed @ 25.09.2007. 23:19 ] @
Rekao bih da ovo hoce (ceo projekat sa kontrolama je u attacment-u):
Code: 'Coded by Shadowed 'Purpose: showing responsitivity of aplication, operation in progress of onknown duretion 'Licence: MIT licence - http://opensource.org/licenses/mit-license.php Dim MyRec As Rectangle 'Rectangle drawed on PictureBox Private Type Rectangle x As Integer 'x coordinate y As Integer 'y coordinate Height As Integer 'height of rectangle Width As Integer 'width of rectangle End Type Private Sub DrawRectangle(aPictureBox As PictureBox, Rec As Rectangle) Dim i As Integer aPictureBox.Cls For i = Rec.x To Rec.x + Rec.Width aPictureBox.Line (i, y)-(i, y + Width), vbHighlight Next i End Sub Private Sub Form_Load() MyRec.Height = pcbProgress.Height MyRec.Width = 50 MyRec.y = 0 MyRec.x = -MyRec.Width End Sub Private Sub tmrProgress_Timer() With MyRec If .x < (.Width + pcbProgress.Width) Then .x = .x + 1 Else .x = -.Width End If End With Call DrawRectangle(pcbProgress, MyRec) DoEvents End Sub [Ovu poruku je menjao Shadowed dana 26.09.2007. u 00:30 GMT+1] [ Aleksandar Ružičić @ 26.09.2007. 00:15 ] @
ne videh da je Shadowed uradio, pa sam uradio i ja ("nabacano" na brzaka, ali moze da se vidi poenta)...
u attachmentu je projekat... [ MACTEPx @ 26.09.2007. 13:59 ] @
Hvala puno svima na pomoci, taj zadnji projekat mi je bio potreban!
[ Shadowed @ 26.09.2007. 17:42 ] @
Ako je neko zainteresovan neka proba da nadje optimizaciju za ovaj kod koji sam ja pisao, vezbe radi (postoji jedna jednostavna). Naravno, ne mislim na rad sa API-jem, ili sa iscrtavanjem iz slike, to bi bila izmena algoritma :)
[ Aleksandar Ružičić @ 27.09.2007. 14:55 ] @
Jel smem ja?
![]() btw ovo mi je 2^10 post ![]() [ Shadowed @ 27.09.2007. 15:05 ] @
Naravno :)
[ Aleksandar Ružičić @ 27.09.2007. 18:36 ] @
recimo, prvo sto mi bode oci to je ona For petlja u DrawRectangle proceduri, koja moze ovako da se napise:
Code: Private Sub DrawRectangle(aPictureBox As PictureBox, Rec As Rectangle) aPictureBox.Cls aPictureBox.DrawWidth = Rec.Width aPictureBox.Line (Rec.x, Rec.y)-(Rec.x, Rec.y + Rec.Height) End Sub sto je mnogo brze (nema petlje, i nema dodatne promenljive) ostalo sto bih menjao, bi izmenilo algoritam, a to si rekao da "ne moze" :D [ Shadowed @ 27.09.2007. 19:21 ] @
Na debljinu linije sam totalno zaboravio :)
Inace, ono na sta sam mislio je crtanje horizontalnih linija jer ih ima manje duzih a crtanje duge linije traje prakticno koliko kratke. [ Aleksandar Ružičić @ 27.09.2007. 19:43 ] @
vidis, ja se nisam setio da duzih linija ima manje :D (zato sto sam gledao da zaobidjem petlju)
ali tada bi morala da postoji i provera da li duzi Windth ili Height :) [ Shadowed @ 27.09.2007. 22:56 ] @
Na osnovu zahtevanog je width vece (vidi u search-u) :)
[ Aleksandar Ružičić @ 27.09.2007. 23:42 ] @
a sta ako je progressbar vertikalan? :)
[ Shadowed @ 28.09.2007. 01:49 ] @
U Win Search-u nije ;)
A trazilo se da bude kao tamo (druga je sasvim stvar sto se on predomislio pa uzeo ovo tvoje resenje). :) [ rgdrajko @ 28.09.2007. 18:43 ] @
Citat: Shadowed: Ako je neko zainteresovan neka proba da nadje optimizaciju za ovaj kod koji sam ja pisao, vezbe radi (postoji jedna jednostavna). Naravno, ne mislim na rad sa API-jem, ili sa iscrtavanjem iz slike, to bi bila izmena algoritma :) Da ne bih izmisljao "toplu vodu" i pisao kod sa preko 300 linija koda i jos koriscenjem klase da se izvede jednostavna animacija koja je data u "vb animation.zip", to apsolutno isto sam uradio sa 10 linija koda koriscenjem PictureClip kontrole. [/code] Option Explicit Private Sub Timer1_Timer() Static n As Integer picClip1.ClipX = 0 picClip1.ClipY = n * picClip1.Height / 10 picClip1.ClipHeight = picClip1.Height / 10 picClip1.ClipWidth = picClip1.Width Picture1.Picture = picClip1.Clip n = n + 1 If n > 9 Then n = 0 End If End Sub [ Shadowed @ 28.09.2007. 19:03 ] @
Rajko, rekao sam za moj kod, ne Aleksandrov.
BTW, nauci da koristis [code] tagove, vec sam ti nekoliko puta ispravljao poruke. Nije tesko. [ Aleksandar Ružičić @ 28.09.2007. 22:00 ] @
Citat: rgdrajko: Da ne bih izmisljao "toplu vodu" i pisao kod sa preko 300 linija koda i jos koriscenjem klase da se izvede jednostavna animacija koja je data u "vb animation.zip", to apsolutno isto sam uradio sa 10 linija koda koriscenjem PictureClip kontrole. Option Explicit Private Sub Timer1_Timer() Static n As Integer picClip1.ClipX = 0 picClip1.ClipY = n * picClip1.Height / 10 picClip1.ClipHeight = picClip1.Height / 10 picClip1.ClipWidth = picClip1.Width Picture1.Picture = picClip1.Clip n = n + 1 If n > 9 Then n = 0 End If End Sub pa trazeno je bez dodatnih kontrola (a ti si koristio 2), a i taj tvoj kod nece da radi na svim masinama isto, tj Timer kontrola ce na sporijim masinama da radi sporije dok ce na brzim da radi brze, moj kod ce na svakoj masini da bude iste brzine, sto je kod animacija bitno (dobro u ovom slucaju to moze i da se zaobidje, ali generalno ne) [ Eurora3D Team @ 28.09.2007. 23:27 ] @
Citat: Aleksandar Ružičić: recimo, prvo sto mi bode oci to je ona For petlja u DrawRectangle proceduri, koja moze ovako da se napise: Code: Private Sub DrawRectangle(aPictureBox As PictureBox, Rec As Rectangle) aPictureBox.Cls aPictureBox.DrawWidth = Rec.Width aPictureBox.Line (Rec.x, Rec.y)-(Rec.x, Rec.y + Rec.Height) End Sub sto je mnogo brze (nema petlje, i nema dodatne promenljive) ostalo sto bih menjao, bi izmenilo algoritam, a to si rekao da "ne moze" :D moglo je i ovako (brisemo zadnju a crtamo sledecu): Code: Private Sub DrawRectangle(aPictureBox As PictureBox, Rec As Rectangle) 'Dim i As Integer 'aPictureBox.Cls 'For i = Rec.x To Rec.x + Rec.Width ' aPictureBox.Line (i, y)-(i, y + Width), vbHighlight 'Next i aPictureBox.Line (Rec.x, y)-(Rec.x, y + Width), aPictureBox.BackColor aPictureBox.Line (Rec.x + Rec.Width, y)-(Rec.x + Rec.Width, y + Width), vbHighlight End Sub [ Aleksandar Ružičić @ 29.09.2007. 16:43 ] @
moglo je i tako da se funkcija zove MoveRectangleBy1px :) tj promeni ime f-je i onda necu imati zamerki na tvoj kod :)
[ Eurora3D Team @ 29.09.2007. 23:50 ] @
![]() Moze MoveByPix Inace ovo je u Basicu Subrutina , nije funkcija. Licno ja bi najpre koristio onaj kod sa slikom da meni treba ovako nesto. Pozdrav [ Aleksandar Ružičić @ 30.09.2007. 19:36 ] @
subroutina (tj procedura po naski) ili funkcija, isto ti se to 'vata :) (vec neko vreme slabo radim u vb-u pa sam i "zaboravio" neke termine)
[ rgdrajko @ 01.10.2007. 00:00 ] @
Citat: Eurora3D Team: :) Moze MoveByPix Inace ovo je u Basicu Subrutina , nije funkcija. Licno ja bi najpre koristio onaj kod sa slikom da meni treba ovako nesto. Pozdrav Koji kod sa slikom? [ Eurora3D Team @ 01.10.2007. 12:03 ] @
[ rgdrajko @ 01.10.2007. 15:06 ] @
Ok, u pravu si.
Copyright (C) 2001-2025 by www.elitesecurity.org. All rights reserved.
|