[ Blue82 @ 27.03.2010. 19:32 ] @
Imam jedan naizgled jednostavan problem ali mi je napravio dosta muke.
Da biste shvatili o cemu pricam napravite jednu formu i na njoj postavite dugme. Zatim napravite drugu formu (form2) i na njoj napravite textbox.

Na formu1 ubacite sledeci code

Code:

Private Sub Command1_Click()
Set f = New Form2
f.Show
f.Text1 = "Mladen"
End Sub


Cilj programa je da svaki put kada se klikne na dugme na formi1, program automatski kreira novu formu koja je identicna formi2 sto ovaj jednostavan program i radi. Ali problem je sledeci, posle ovoga ja vise ne znam kako da pristupim tehtboxu na tim kreiranim formama? Znaci kada na ekranu imam 2 novokreirane forme ne znam da u jednu od njih naknadno unesem neki text u njihov textbox.


[ t.marko016 @ 27.03.2010. 20:43 ] @
Budi malo precizniji, kazi tacno sta ti treba posto te ja nisam razumeo najbolje?
[ Blue82 @ 27.03.2010. 20:48 ] @
Pa kazem uradi kako sam rekao tako ces najbolje shvatiti. Napravi form1 i na nju stavi jedno dugme. U tu formu kopiraj code koji sam postavio. Onda kreiraj jos jednu formu koja se zove form2 i na njoj stavi jedan textbox.
Zatim pokreni program i svaki put kada kliknes na dugme pojavice se nova forma koja je identicna formi 2. Klikni par puta i dobices par prozora. Moj problem je kako sada kada imam par prozora da u textbox nekog od njih upisem neki tekst?
[ Blue82 @ 28.03.2010. 12:33 ] @
Zar bas niko? :(

Primena toga je u pravljenju chata. Form2 je forma koja se prikazuje pri chatovanju sa nekim i ona se umnozava onoliko puta sa koliko ljudi chatujes u isto vreme. Ali da bi to radilo ja moram moci poruku od odredjene osobe da upisem u prozor koji je namenjen toj osobi, to je sve.
[ t.marko016 @ 28.03.2010. 18:00 ] @
Ne znam bas neki direktan nacin ali mozda ti i ovo bude od pomoci.

Stavi tajmer na Form2 da cita kad je pretisnut taster "Enter" i tad da ispisuje iz neki TextBox u TextBox na Form2.
Jer ako pravis program za Chat, sigurno ces staviti da se poruka salje na Enter.

Mada te ne kapiram, sto ces praviti komunikaciju izmedju prozora ako ces praviti program za Chat.
Ja bih napravio komunikaciju preko servera na isti nacin na koji sam ti sad gore predlozio.

Pozdrav
[ Blue82 @ 28.03.2010. 19:48 ] @
hehe pa i nije to komunikacija medju prozorima samo sam je skroz pojednostavio radi primera. Cilj je samo kako pristupiti bilo cemu u tim novootvorenim prozorima? Ako na klasican nacin imam 2 forme u textbox druge forme hocu da unesem nesto, uradicu to sa:
Code:

Form2.Text1.Text="Neki tekst"


A sada takodje imam otvoreno vise formi ali iako znam tacno ime forme ne mogu da joj pristupim sa FormX.Text1.Text i to me buni. Tvoj primer bi se mozda nekako i mogao izvrdati ali je code slozices se katastrofa i ne bih program gusio jos sa tim jer je to deo mnogo veceg i slozenijeg programa. 100% sam siguran da postoji normalan nacin pristupa ali ne znam kako.
[ t.marko016 @ 28.03.2010. 20:38 ] @
Ma 100% sam siguran i ja nego eto rekoh da predlozim posto nemas drugog resenja.

A kod ne bi bio katastrofa nego katastrofa na kvadrat .

Ako mi nesto kvalitetnije padne na pamet ja ti javim.

Pozz
[ Marko_L @ 28.03.2010. 21:39 ] @
Pa možeš da napraviš array formi i onda im pristupaš putem indexa. Znači nešto tipa
Code:
Option Explicit
Dim frm() As Form2
Dim X As Long

Private Sub Command1_Click()
ReDim Preserve frm(X) As Form2
Set frm(X) = New Form2
frm(X).Tag = X
frm(X).Show
X = X + 1
End Sub

Private Sub Command2_Click()
frm(0).Text1.Text = "AAAAAAAAAA"
frm(1).Text1.Text = "BBBBBBBBBBB"
End Sub

Tako, svaki out kad otvoriš novu formu, povećavaš array, i smeštaš novokreiranu formu kao novog člana, a svakoj formi pristupaš navođenjem njenog indexa. Ono Tag svojstvo popunjavaš da bi sama instanca forme "znala" koja je ona instanca po redu, za slučaj da ti to ustreba prilikom kodiranje te forme. Tako recimo možeš u tu drugu formu u Load eventu da staviš
Code:
Me.Caption = "Instanca broj " & me.Tag

I onda ćeš tačno videti koja forma je koja instanca po redu.

Drugo rešenje je da bez array-a uvek prolaziš kroz kolekciju formi i proveravaš Tag svojstvo koje naravno dodeljuješ prilikom otvaranja. Ovako nešto
Code:
Option Explicit
Dim X As Long

Private Sub Command1_Click()
Dim f As Form
Set f = New Form2
f.Tag = X
f.Show
X = X + 1
End Sub

Private Sub Command2_Click()
Dim frm As Form
For Each frm In Forms
    Select Case frm.Tag
    Case 0
        frm.Text1.Text = "AAAAAAAAAAAA"
    
    Case 1
        frm.Text1.Text = "BBBBBBBBBBBB"
        
    End Select
Next frm
End Sub

Ali rekao bih da je ono prvo rešenje brže i čistije, a ti sad vidi šta ti više odgovara.
[ Blue82 @ 28.03.2010. 22:56 ] @
E stvarno si genije. Gde si ceo dan dok se ja mucim :D

for i=1 to 100
print"Hvala"
next i
msgbox("Mnogo hvala!")

:)

[Ovu poruku je menjao Blue82 dana 29.03.2010. u 00:15 GMT+1]
[ Marko_L @ 28.03.2010. 23:35 ] @
Ej, pa nedelja je, ne može to odma :)

Btw,
Code:
Dim I As Integer
Me.AutoRedraw = True
For I = 50 To 255 Step 5
    Me.ForeColor = RGB(255 - I, 255 - I, 255 - I)
    Me.Print "Nema na cemu"
Next I


;)