Pomeranje dugmadi, VB?

nidzesi

Primećen član
Poruka
925
Imam komandno dugme, i sad želim da kad korisnik predje misem preko njega, ono mrdne tj. pomeri se na drugu stranu!
Može li mi neko to uraditi i poslati kao project, ili mi iskopirati kod?

Takodje sam cuo da za to služi randomize funkcija... Može li je neko objasniti (nasao sam na hiljadu sajtova, ali ne razumem)?

Hvala!
 
Necu ti direktno pomoci , jer neznam VB, al' recimo da pogledas funkcije tipa SetWindowPosition, koje ces koristiti za pomjeranje kontrole, a te random koristis za izbacivanje novih pozicija kontrole, koje ces predati funkciji SetWindowPosition.
 
Ne radim u VB ali mislim da nije bas jednostavno.
Pre svega, generalno vazi za Windows programiranje, jednom nacrtana kontrola je na necemu - windowsu ili dijalogu. Interna akcija "onpaint" to sve iscrta, pa i kontrole.
Sad ako zelis da pomeris kontrolu, treba proveriti sta je sa postojecom "slikom" kontrole (dugmeta u tvom slucaju) i njegovog ponovnog iscrtavanja nakon "refresh" opcije za windows ili dijalog.
Nikada mi to nije trebalo da uradim, a nemam vremena za eksperimentisanje ali misli da se tehnicki moze odraditi mada sa malo vise rada.
Bojim se da nije dovoljno samo "properties" za X i Y da se promene, mada treba probati
 
Sale, nije tako, jednostavno neće... izbacuje neku gresku...


Probao sam da za proceduru Private Sub Button1_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) primenim ovo: button1.top = X odnosno button1.left = Y, ali mi to pomera samo u opsegu od 1 do 256... Treba mi malo veći prozor...

Ako gore promenim da je X tip podataka Integer (od -32768 do 32768) onda mi izbacuje gresku, da se ne slaže jedno s drugim...

Treba mi randomize funkcija, ali nikako ne uspevam da je upotrebim...


Što se tiče SetWindowPosition, takvo svojstvo u VB ne postoji...
 
I ja isto mislim, properties pozicija kontrole bi trebale da budu "public" uglavnom, znaci mogu se menjati.
Doduse, kod nekig programskih jezika i klasa koje koriste to ne mora biti tako, pa su neke properties kontrola samo "red only".
 
Private Sub ja_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim i As Integer

i = 500 + Rnd(1) * 4000
ja.Left = i

i = 500 + Rnd(1) * 4000 /*ovde da napomenem samo da sam ove brojke lupio.Ti samo krkni malo veci prozor ili smanji brojeve (da budu u opsegu prozora) i nece biti "izletanja" iz okvira*/
ja.Top = i
End Sub
/* JA je neko dugme koje treba da se premesti kad predjes misom preko njega.
Pozz. Konacno da i ja nesto korisno uradim :-)
 
toxi:
Private Sub ja_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim i As Integer

i = 500 + Rnd(1) * 4000
ja.Left = i

i = 500 + Rnd(1) * 4000 /*ovde da napomenem samo da sam ove brojke lupio.Ti samo krkni malo veci prozor ili smanji brojeve (da budu u opsegu prozora) i nece biti "izletanja" iz okvira*/
ja.Top = i
End Sub
/* JA je neko dugme koje treba da se premesti kad predjes misom preko njega.
Pozz. Konacno da i ja nesto korisno uradim :-)

Hvala lepo, jos samo kad mi hteo da mi objasnis kako to radi, tj. sta je 500 + rnd(1) * 4000...


Npr, ako hocu da dugme ja ne predje 10000 (ni top ni left), kako treba da stavim?
 
Ne znam kod VB Ali u VB2005 i VB.NETU Rnd bez Randomize() uvek prvi put kad pokrenes aplikaciju dace isti broj!!

Kod:
Randomize()
' Slucajan broj izmedju u rasponu od 1 - 1000.

Dim slucajanBroj As Integer = CInt(Int((1000 * Rnd()) + 1))
 
Ne znam kod VB6 Ali u VB2005 i VB.NETU Rnd bez Randomize() uvek prvi put kad pokrenes aplikaciju dace isti broj!! Zato postoji Randomize() da bi se izbegao taj problem :)

Kod:
Randomize()
' Slucajan broj izmedju 1 - 1000.

Dim slucajanBroj As Integer = CInt(Int((1000 * Rnd()) + 1))


Isto moze ovako da se uradi:

Kod:
Dim GenerisiSlucajanBroj as Random = New Random(DateTime.Now.Millisecond)
' Slucajan Broj izmedju 0 i 1000
Dim Slucajan Broj as Integer = GenerisiSlucajanBroj.Next(1000)
' ili recimo izmedju 1 i velicine forme :)
Dim Slucajan Broj as Integer = GenerisiSlucajanBroj.Next(1,Me.Width)
 
@ SALE83
I u VB6 je isto.
Evo od mene, malo krace i sa malim dodatkom:
Private Sub Command1_Click( Button As Integer, Shift As Integer, X As Single, Y As Single)
Dim x,y as Integer
Randomize
x = Int(Rnd(1)*1000)
y = Int(Rnd(1)*1000)
Button1.move x, y
end sub
 
toxi:
Private Sub ja_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)

Dim i As Integer

i = 500 + Rnd(1) * 4000
ja.Left = i

i = 500 + Rnd(1) * 4000 /*ovde da napomenem samo da sam ove brojke lupio.Ti samo krkni malo veci prozor ili smanji brojeve (da budu u opsegu prozora) i nece biti "izletanja" iz okvira*/
ja.Top = i
End Sub
/* JA je neko dugme koje treba da se premesti kad predjes misom preko njega.
Pozz. Konacno da i ja nesto korisno uradim :-)

Ovo je sasvim korektno rješenje. Naravno, ograničenja se mogu izračunati preuzimanjem Height i Width iz propertija prozora pa se može pisati

me.Left = imeprozora.Width * Rnd(1)
me.Top = imeprozora.Height * Rnd(1)
 

Back
Top