Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 9 odgovora
  • 3.286 pregleda

Najnovija ↓

stvaranje novih objekata 02.03.2008. u 16:29 · pre 227 meseci #1
Pozdrav svima ;)

ovako imam jedan Shape (krug),e sad klikom na dugme on mi stvori na formi npr 5 istih takvih shape-ova na formi a pozicija novog shape-a je random,to znam da uradim samo mi je problem kako kopirati ves postojeci Shape.Kao u wordu sto ima CTRL + D ;)

ako nije jasno recite

TNX
Re: stvaranje novih objekata 02.03.2008. u 17:38 · pre 227 meseci #2
Moras prvo da stavis da ti prvi shape(krug) od koga svi drugi nastaju ima index 0
pa posle jednostavno stavis load shape za 5 krugova:
Code:

dim shape2 as shape
for t = 1 to 5
load shape2
next t

E sad ja sam ovo radio davno pa ako ne radi isprobavaj malo, ali je ta logika. Radio sam to kada sam pravio neki server za komunikaciju a sada nemam instaliran VB pa toliko od mene.
Re: stvaranje novih objekata 02.03.2008. u 18:27 · pre 227 meseci #4
ako sam dobro shvatio,trebalo bi ovako,medjutim ne radi...

Code:
Dim Y As Integer, X As Integer
Dim X as Integer,Y as Integer
Dim shape2 As Shape
For I = 1 To 30
Randomize
Y = Int((5040 * Rnd) + 120)
X = Int((6960 * Rnd) + 240)
Load shape2
shape2.Left = X
shape2.Top = Y
shape2.Shape = 0
shape2.Width = 135
shape2.Height = 135
Next I


"Object Variable or With block Not Set" se javlja na "Load shape2"
Re: stvaranje novih objekata 02.03.2008. u 18:50 · pre 227 meseci #5
ne mozes sa Load shape2, ovako dinamicki dodajes kontrole:
Code:

Dim newShape As Shape
Set newShape = Me.Controls.Add("VB.Shape", "dynshape")
newShape.move(10, 10, 100, 100)
newShape.Visible = TRue


a ako hoces to u petlji onda ovako nesto:
Code:

Dim newShape As Shape
Dim i As Long

For i = 1 To 10
   Set newShape = Me.Controls.Add("VB.Shape", "dynshape" & i)
   newShape.move(10, 10 * i, 100, 100)
   newShape.Visible = TRue
Next
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: stvaranje novih objekata 02.03.2008. u 19:27 · pre 227 meseci #6
Ne niste uhvatili poentu, ili bar ja nisam dobro objasnio.

Prvo taj Shape od koga svi ostali nastaju mora biti sa indexom. To ti je ono da kad kopiras taj shape1 on nije shape2 nego shape1(1).
Prvo moras da stavis DIM SHAPE1(X) AS OBJECT ' X je max broj objekata
Sa komandom Load ti samo ucitavas objekt, sto znaci da ce on kad se ucita imati preslikana podesavanja od onog shape1 od kog je nastao. Samo pazi da ne preteras sa brojem objekata jer ces prepuniti memoriju. Za "izbacivanje" objekata iz memorije moras koristiti Unload Shape1(X)

Ako ti ni sada nije jasno napisi, pa cu da instaliram VB pa da napisem primer, pa da ti postavim...
Pozdrav.

Zapravo evo vec instaliram VB.... Stize primer....
Re: stvaranje novih objekata 02.03.2008. u 20:06 · pre 227 meseci #7
Evo ga primer:

Radi 100%! Testirano ...

Code:

dim shape(255) as object
Private Sub Form_Load()
    For t = 0 To 5
        Set shape(t) = Shape1
    Next t
End Sub

I posle svaki shape(t) mozes da koristis, bez ikakvih problema, kao da si ga nacrtao...
Re: stvaranje novih objekata 02.03.2008. u 20:12 · pre 227 meseci #8
tako vec moze, mada primer koji sam ja dao ne zahteva da na formi postoji objekat, mada je kod ovog tvog primera event-handling mnogo laksi (ako se koristi metod koji sam ja naveo mora da se pravi dodatna klasa za svaki tip objekta ako hoces da imash event handlere) ali je meni ipak ovaj sa Controls.Add elegantniji :)
Potpis
rafforum.rs - Forum Računarskog Fakulteta
Re: stvaranje novih objekata 03.03.2008. u 02:32 · pre 227 meseci #9
I ovde ne mora da postoji objekt ali onda ide:
Code:

Dim Shape1 As VB.Shape

ispred svega. Samo sto onda svi parametri tog objekta moraju da se postavljaju rucno, znaci lakse je kad vec postoji jedan.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme