Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Pomoć početniku molim: VB.NET i forme

[es] :: .NET :: Pomoć početniku molim: VB.NET i forme

Strane: 1 2

[ Pregleda: 6477 | Odgovora: 26 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

S A J A
Beograd

Član broj: 226539
Poruke: 1904
*.static.sbb.rs.



+421 Profil

icon Re: Pomoć početniku molim: VB.NET i forme30.03.2014. u 10:50 - pre 122 meseci
Citat:
Sija: Ne mogu da stavim na 2 forme. Parametara za pretragu ima toliko da su u TabControl, a rezultat pretrage bi se otvorio na formi sa gridom koje bi opet mogao editovati itd. itd.


Ti ko da praviš svemirski brod :)

Probaj onda ovako: na prvu formu, gde treba da se primene rezultati pretrage, stavi Public Sub(naki argumenti). Onda možeš iz treće forme da pozoveš tu proceduru, pošalješ joj određene podatke i ona će se izvršiti na formi 1. Sad sam probao i radi, ja na prvoj formi imam samo glavni meni, napravio sam Public proceduru koja stavlja da je glavni meni Visible=False. Onda sam u trećoj po nivou formi pozvao tu proceduru i meni je nestao :) Dakle može.
 
Odgovor na temu

Sija

Član broj: 19607
Poruke: 83
*.dynamic.telemach.ba.



+8 Profil

icon Re: Pomoć početniku molim: VB.NET i forme30.03.2014. u 14:50 - pre 122 meseci
Nije svemirski brod samo sam tako zamislio da radi ali sve mi se čini da ću da krpim. Kao korisnik aplikacija sam kao mađioničar u 5 minuta nađem grešku u programu pa ne bih da mi se desi kada jednog dana završim aplikaciju i dam nekom na korištenje da me zivka svakih 5 minuta. :(


Problem i jeste u pozivanju nečega na prvoj formi. Kako da pozovem kada je i ta prva forma instanca, a da ne utiče na druge instance?
Suština je da ne mogu da nađem neko normalno rješenje za pristup toj određenoj instanci.


 
Odgovor na temu

S A J A
Beograd

Član broj: 226539
Poruke: 1904
*.static.sbb.rs.



+421 Profil

icon Re: Pomoć početniku molim: VB.NET i forme30.03.2014. u 18:57 - pre 122 meseci
Pobaj ovako:

Kad otvaraš nove forme upiši im Owner.

Dim f2 As New Form2
f2.Owner = Me
f2.Show()


Dim f3 As New Form3
f3.Owner = Me
f3.Show()


Na formi1 stavi

Public Sub Nesto()
...
End Sub


U formi3 pozivas proceduru sa:

CallByName(Me.Owner.Owner, "Nesto", CallType.Method)
 
Odgovor na temu

Sija

Član broj: 19607
Poruke: 83
*.dynamic.telemach.ba.



+8 Profil

icon Re: Pomoć početniku molim: VB.NET i forme30.03.2014. u 19:56 - pre 122 meseci
@S A J A

Hvala care. :D

Za ovo sam ti dužnik veeeeliki.
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12848



+4784 Profil

icon Re: Pomoć početniku molim: VB.NET i forme31.03.2014. u 07:41 - pre 122 meseci
Nisam bio tu da ti ranije odgovorim.
Elem, sto se Sajinog reesnja tice, ok je osim poslednjeg dela. Nema nikakvog razloga da se koristi CallByName a nije type safe. Umesto toga je bolje koristiti:

Code (vbnet):
DirectCast(Me.Owner.Owner, Form1).Nesto()


Ili jos bolje:
Code (vbnet):

If Me.Owner IsNot Null AndAlso Me.Owner.Owner IsNot Null AndAlso Me.Owner.Owner Is Form1 Then
    DirectCast(Me.Owner.Owner, Form1).Nesto()
End If
 


To je sto se tice resavanja konkretne situacije.


Sistematski, bolje resenje je da ti druga klasa vrati podatke o filtriranju u prvu pa onda prva pozove trecu. Tako svaka radi svoj posao. Prva je glavna, druga dobavlja filter, treca trazi. Nesto ovako (sorry ako ima po neka sintaksna greska, ne radim u vb-u godinama):

Klasa za filter:
Code (vbnet):

Class PeopleFilter
    Public Property FirstName As String
    Public Property LastName As String
End Class
 


U Form2 i u Form3:
Code (vbnet):
Public Property Filter as PeopleFilter


Kada se klikne na OK (ili sta vec imas) u Form2, popunis Filter.

U Form1:
Code (vbnet):

Dim FilterForm As New Form2
If FilterForm.ShowDialog() = DialogResult.OK AndAlso FilterForm.Filter IsNot Null Then
    Dim SearchForm As New Form3
    SearchForm.Filter = FilterForm.Filter
    SearchForm.ShowDialog()
End If
 



Naravno, to moze da se prosiruje i uopstava dalje, zavisno od slozenosti projekta, ali ovo je generalna ideja.
 
Odgovor na temu

Sija

Član broj: 19607
Poruke: 83
*.tel.net.ba.



+8 Profil

icon Re: Pomoć početniku molim: VB.NET i forme02.04.2014. u 13:56 - pre 122 meseci
@Shadowed

Kako da se ovo odradi sa klasama, a da FilterForm i SearchForm nisu pozvane sa ShowDialog nego samo sa Show?
 
Odgovor na temu

Shadowed
Vojvodina

Član broj: 649
Poruke: 12848



+4784 Profil

icon Re: Pomoć početniku molim: VB.NET i forme03.04.2014. u 13:29 - pre 122 meseci
Ako ces sa Show, onda nemas tu povratnu informaciju koju ti inace ShowDialog vraca tako da treca forma mora na neki nacin da obavesti da je zavrsila (tacnije da hoce da vrati rezultate).
E sad, mozes to na onaj nacin kako je Saja rekao, ali uz onu izmenu koju sam napisao (da ne koristis CallByName). To je svakako krace i ako je aplikacija bas mala, mozes tako.
Bolja opcija je da treca forma ima event koji okida kada hoce da vrati rezultate. Onda event handler moze biti na prvoj formi. Povezivanje event handler-a sa eventom moze da se uradi na vise nacina. Jedan mozes videti u primeru koji sam ti napravio. Okacen je uz poruku. Glavna prednost eventa je da formu 3 mozes koristiti odakle god hoces, dok sa onim pozivanjem funkcije iz owner-ovog owner-a si zavistan da to bude bas forma1 i da je bas drugi nivo owner-a i da su owneri postavljeni. Ovako, forma 3 okine event pa ako je neko zainteresovan, zakacice svoj handler.

To se, naravno, moze dalje generalizovati i uopstavati, zavisno od potreba. Mogu se uvesti generics i sl. pa da imas filtere za razne vrste podataka i forme i sl. ali to je na tebi, ovo je proof of concept :)
Prikačeni fajlovi
 
Odgovor na temu

[es] :: .NET :: Pomoć početniku molim: VB.NET i forme

Strane: 1 2

[ Pregleda: 6477 | Odgovora: 26 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.