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

Kako deklarisati promenljivu, a da bude ...

[es] :: .NET :: Kako deklarisati promenljivu, a da bude ...

[ Pregleda: 3289 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

gotivac
Kragujevac

Član broj: 26754
Poruke: 160
*.198.EUnet.yu.



+2 Profil

icon Kako deklarisati promenljivu, a da bude ...15.12.2005. u 11:19 - pre 223 meseci
Dakle, kako deklarisati promenljivu a da bude vidljiva u svim formama koje se pojavljuju u programu?

Pokusao sam da napravim modul koji ce biti prvi pokrenut kada se program startuje, i u kome ce biti deklarisane public promenljive koje mi trebaju, medjutim, kad pokusam iz takvog modula da prikazem formu na sledeci nacin:

Code:

Dim frm as new Form1
frm.show()


, forma se prikaze samo na trenutak, a zatim se kontrola vrati modulu i program se zatvori.

O cemu se radi, to je u VB6 normalno radilo. I, kako da deklarisem promenljivu kao public, ali ne samo u okviru jedne forme (odnosno klase) ,vec tako da bude vidljiva iz svih delova programa?
 
Odgovor na temu

jablan

Član broj: 8286
Poruke: 4541



+711 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...15.12.2005. u 12:57 - pre 223 meseci
Ako u klasi deklarišeš atribut kao public, biće vidljiv iz svih drugih klasa.

Sve mi se čini da nisi baš bio na svim časovima OO programiranja...

[Ovu poruku je menjao jablan dana 15.12.2005. u 13:58 GMT+1]
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...15.12.2005. u 13:39 - pre 223 meseci
Citat:
jablan: Sve mi se čini da nisi baš bio na svim časovima OO programiranja...


Nije problem u tome, problem je sto je covek VB6 programer kome je neko (na marketinski predlog samog MSa) saopstio da je VB.NET sledeca verzija VB6-ce . Od kako sam otisao iz Srbije sreo sam bar 50 ljudi (nazalost uglavnom sadasnjim menadzera) koji su VB6 programeri i koji su uzasnuti "komplikovanoscu" i "neupotrebljivoscu" VB.NET-a Steta koji su ovi ljudi u stanju da naprave je proporcionalna visini njihovog polozaja. Inhouse nesrecnici u firmi do nas i dalje prave aplikacije u VB6 jer im je CTO bivsi VB programer . Da sam dobio dolar za svaki sat koji sam proveo objasnjavajuci ljudima da su VB6 i VB.NET dva sveta....

gotivac, izvinjavam se ako sam te pogresno protumacio kao vb6 programera, ali ja po navici sve koji u VB.NET-u koriste module svrstavam u tu kategoriju...

Citat:
gotivac: Dakle, kako deklarisati promenljivu a da bude vidljiva u svim formama koje se pojavljuju u programu?

Elem, prvi savet koji mogu tebi da dam je: skupi sve svoje znanje o funkcionisanju VB6-ce, i sve sem najosnovnijeg znanja o sintaksi vb6-ce i sve to lepo baci u vodu. VB.NET NIJE VB7, ma sta rekao MS.

Postoje transition tutoriali (google: vb6 to vb.net tutorial) koji ti mogu pomoci da se odviknes lose navike zvane vb6

U ovom tvom slucaju, aplikacija ti se gasi zato sto nikad nije ni pokrenuta. Kad to kazem, mislim jeste se pokrenuo .exe ali instanca Application klase nije dobila Form koji predstavlja osnovni prozor aplikacije. Ti si kreirao form, pokazao ga, ali je posle tog show tvoj metod zavrsio sa radom, application objekat je zakljucio da nema sta da odrzava, i glavni thread izvrsavanja se ugasio. Bez aktivnih threadova, proces vise ne postoji i Windows ga uklanja iz memorije gaseci sve preostale prozore ukljucujuci i tvoj form. Da bi tvoj program radio, moras da posle kreiranja Forma, instancu forme predas applikaciji.

Code:

Dim frm as new Form1
Application.Run(frm)


Application.Run je sinhroni metod koji se nece vratiti dok god se forma koja je prosledjena ne zatvori, cime obezbedjujes kontinuirano funkcionisanje programa.

PS: ne garantujem da se Application vidi iz tvog modula, zavisi koje si import-e stavio na vrh.

Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

gotivac
Kragujevac

Član broj: 26754
Poruke: 160
*.197.eunet.yu.



+2 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...16.12.2005. u 08:14 - pre 223 meseci
Hebi ga, u pravu si, jesam VB6 programer i jako se mucim sa prelaskom na vb.net, ali ide polako. Skupio sam literaturu, a vi me razumite, svako je jednom bio na pocetku. Posto vidim da imas dosta znanja o vb.net, mozes li, molim te da pokusas da mi pomognes u vezi sledeceg problema koji sam vec postavio na jednom drugom topicu, ali niko ne odgovara:

Citat:

Da pojednostavim, imamo konekciju prema Access bazi (cn), data adapter (da) i dataset (ds). Podaci iz dataseta (jedna tabela) su prikazani u datagridu (dg).
Pored datagrida se nalazi šest textboxova koji su vezani na dataset:

Code:


Textbox1.DataBindings.Add(New Binding("Text", ds, "Table.Ime")
Textbox2.DataBindings.Add(New Binding("Text", ds, "Table.Prezime")
...


Recimo da hocu da dodam novi slog, napravim novi row u datasetu (to jest u tabeli "Table"), popunim text boxove i kada uradim dg.Refresh(), u datagidu se uredno pojave dodati podaci.

Medjutim!

Komanda koju posle toga izvršim da bih apdejtovao podatke u bazi:

Code:

da.Update(ds, "Table")


u bazu doda prazan red, bez ikakvih podataka!

E, sad, ako umesto u textboxove podatke unosim direkno u datagrid, nakon updatea podaci bivaju upisani u bazu!!!

Zna li neko o čemu se radi, mislim, ako je već datasource tog datagrida ovaj dataset, i ako sve u redu prikazuje, zašto ne uspeva da upiše podatke???


@jablan

U pravu si, kada sam ja ucio programiranje, u ovoj zemlji se koncept oo programiranja nije ucio ni u skoli, a i retko na kom faksu. Hebi ga, prerano rodjen, sta li? :(


[Ovu poruku je menjao gotivac dana 16.12.2005. u 09:16 GMT+1]
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
*.fiberop.matgnet.com.

Sajt: www.mika.rs


+6 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...16.12.2005. u 10:20 - pre 223 meseci
Meni lici na problem sa CurrencyManagerom.
Ako si bindovao textboxove na datasource moras CurrencyManageru da kazes da je zavrsio editovanje sa metodom EndEdit().
CurrencyManager uzimas iz BindingContext-a forme.
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...16.12.2005. u 13:56 - pre 223 meseci
Citat:
dusty: Meni lici na problem sa CurrencyManagerom.
Ako si bindovao textboxove na datasource moras CurrencyManageru da kazes da je zavrsio editovanje sa metodom EndEdit().


Da, definitivno lici na bug sa EndEdit i textboxovima, ali samo delimicno. jedan od osnovnih preduslova nije ispunjen (da ne postoji datagrid vezan na taj dataset), koliko sam shvatio on ima datagrid vezan na taj dataset, a kad postoji grid, onda se EndEdit poziva iz samog grida i bug se ne ispoljava, dok se kod njega javlja, sto je veoma cudno...

Citat:
gotivac: Hebi ga, u pravu si, jesam VB6 programer i jako se mucim sa prelaskom na vb.net, ali ide polako. Skupio sam literaturu, a vi me razumite, svako je jednom bio na pocetku.


Nista ti ne brini oko toga, niko se naucen nije rodio, pa ni ja. To sto se ja malo zekim na tvoj racun, to je vise moja falinka nego tvoja Ako nista drugo, smatram da je za pohvalu sto uopste zelis da naucis vb.net umesto da kritikujes "novotarije". E sad, sto se tice ovog tvog problema, bil ti okacio taj form ovde (u zip fajl zajedno sa XSD semom dataseta). iz ovih par okacenih linija se malo moze zakljuciti...





Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

gotivac
Kragujevac

Član broj: 26754
Poruke: 160
*.234.eunet.yu.



+2 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...19.12.2005. u 07:44 - pre 223 meseci
Dusty, hvala ti na odgovoru, upravo mi je jedno EndCurrentEdit pomoglo pre Update-a.
Cudi me samo da se to ni u jednoj od ove dve knjige koje imam i jos nekih skripti nigde ne pominje da je potrebno uraditi. Hm.
 
Odgovor na temu

gotivac
Kragujevac

Član broj: 26754
Poruke: 160
*.234.eunet.yu.



+2 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...19.12.2005. u 07:49 - pre 223 meseci
mmix, kao sto sam napisao u prethodnoj poruci, resio sam problem, samo me cudi da nigde nisam naisao da se EndEdit pominje kao potrebno pre update-a. Vidim da pominjes bug, OK, neka je i bug, ali kao sto si primetio, ja imam vezan datagrid, a kazes da se u tom slucaju ne ispoljava. I primetio sam, kada se pretrci tabom preko svih kontrola na formi, to jest kada se pretrci preko datagrida, onda uspe da apdejtuje.
Ne mogu trenutno da ti posaljem ovo jer sam na poslu pa nemam to kod sebe, kada budem dosao kuci poslacu ako te zanima - bar da rascistimo sta je u pitanju, mozda sam i ja negde napravio gresku.
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
*.fiberop.matgnet.com.

Sajt: www.mika.rs


+6 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...19.12.2005. u 11:05 - pre 223 meseci
'Bug' je prejaka rec

Pazi u cemu je problem. Plasticno: selektujes jedan red u dataGridu (ili si na neki drugi nacin promenio Position property CurrencyMAnager-a), CurrencyManager detektuje promenu aktivnog recorda i koristi ga da populise sve kontrole koje su bindovane, ali pre toga uradi EndEdit za prethodni aktivni record !

Zato tebi uspeva update ako promenis aktivni red. MEdjutim, ako izmenis sadrzaj polja i odmah radis .Update, CurrencyManager nece pozvati EndEdit, jer nema promene aktivnog recorda.

Citat:
samo me cudi da nigde nisam naisao da se EndEdit pominje kao potrebno pre update-a.


Pa i nije CurrencyManager radi za bindovane kontrole kao veza izmedju nekog data sorsa (neka baza ili mozda neki arrayList) i kontrole, a to, moras priznati, nema nikakve sa ADO.Netom A, sada, zamisli konzolnu aplikaciju



Happy coding
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

gotivac
Kragujevac

Član broj: 26754
Poruke: 160
*.215.eunet.yu.



+2 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...19.12.2005. u 12:01 - pre 223 meseci
Izgleda da si potpuno objasnio sve sto je bilo nejasno.

Hvala!

 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...19.12.2005. u 14:51 - pre 223 meseci
Citat:
dusty: 'Bug' je prejaka rec


Pa i nije . Cela poenta databinding-a je da omoguci transparentu statefull vezu izmedju dataseta i bindovanih kontrola. Kao sto znamo, tako nesto nije postojalo kao gotovo resenje u praksi i svaka custom implementacjia istog je izgledala ocajno glomazno (zbog same kolicine dogadjaja koje korisnik moze da namerno/slucajno izazove a koje moras da pokrijes kodom). MS je u .NETu pokusao da implementira taj sistem i samim tim sto ne radi bez korisnicke intervencije (dakle pozivanja EndEdit-a) vise nije transparentan, posto sad opet moras da sanjas o svim scenarijima kad treba pozvati EndEdit , dakle bagovit je jer ne radi ono sto treba da radi

Ne postoji izgovor MS-a za ovo a da ne moze da se pokrije sa "nije tacno, to moze ovako" . U ovom slucaju CurrencyManager ima spisak non-grid kontrola koje su bindovane preko njega i moze da se nakaci na multicast event Leave, i mogao bi da u trenutku kad kontrola izgubi fokus da uporedi i promeni vrednost u datasetu... Jednostavno nema izgovora...






Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
*.fiberop.matgnet.com.

Sajt: www.mika.rs


+6 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...19.12.2005. u 16:17 - pre 223 meseci
Citat:
MS je u .NETu pokusao da implementira taj sistem i samim tim sto ne radi bez korisnicke intervencije (dakle pozivanja EndEdit-a) vise nije transparentan


U tome je geg, 'ocu reci stos CurrencyManager i ne treba da bude transparentan, mada svi misle obrnuto (priznajem i ja sam

Kako CurrencyManager moze da zna sta sam hteo uraditi nad tim recordom ?
Sve to stoji da se mogao uraditi 'automatski' EndEdit, ali sta ako ja necu da updateujem, nego hocu da uradim undo nad celim recordom sa .CancelEdit ?

Zamerka je jedino sto M$ nigde (molim vas, ispravite me) nije objasnio kako ceo taj mehanizam sa CurrencyManager-om radi.
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...19.12.2005. u 17:18 - pre 223 meseci
Citat:
dusty: U tome je geg, 'ocu reci stos CurrencyManager i ne treba da bude transparentan, mada svi misle obrnuto (priznajem i ja sam
Kako CurrencyManager moze da zna sta sam hteo uraditi nad tim recordom ?
Sve to stoji da se mogao uraditi 'automatski' EndEdit, ali sta ako ja necu da updateujem, nego hocu da uradim undo nad celim recordom sa .CancelEdit ?
Zamerka je jedino sto M$ nigde (molim vas, ispravite me) nije objasnio kako ceo taj mehanizam sa CurrencyManager-om radi.


E sad, zavisi sta smatras pod "normalnim tokom stvari", ja, ti i 99% ostalih smatramo da je normalno da je editovanje transparentno a ponistavanje edita predstavlja exception koji treba handlovati, jer je to situacija koja se redje javlja. Narocito sto vec sam dataset ima logiku za undo (preko internog diffgrama) i nema cak ni potrebe da se currency manager uplice u to. Jednostavno su zeznuli stvar i pravili duplu logiku bez preke potrebe...

Ja i dalje smatram da currency manager treba da bude transparentna veza izmedju dataseta i boundovanih kontrola. I iz vremena bete za 1.0 se secam da je to reklamirano kao glavna prednsot koja ce nam svima ustedeti ogromne pare i vreme . Ali u klasicnom MS maniru, kad su videli da su se zeznuli, proglasise bug za feature i ajmo dalje

U principu nisam imao vremena jos da dublje gledam sta .net2.0 radi po ovom pitanju posto su uvedene nove intermediate kontrole. Eto meni razonode za popodne
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

dusty
Predrag Glumac
Zemun, Srbija

Član broj: 15383
Poruke: 549
*.ptt.yu.

Sajt: www.mika.rs


+6 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...19.12.2005. u 19:27 - pre 223 meseci
Citat:
smatramo da je normalno da je editovanje transparentno a ponistavanje edita predstavlja exception koji treba handlovati


Pretpostavljam da su na oba dogadjaja dali shanse 50% i rekli: na vam, pa sami vidite sta ce te

Zaista, ne znam kada bi mogao da se okine nekakav event za EndEdit ? Na Leave event ne moze jer EndEdit treba da se okine tek kada se zavrsi obrada svih bindovanih recorda.

Citat:
Narocito sto vec sam dataset ima logiku za undo (preko internog diffgrama) i nema cak ni potrebe da se currency manager uplice u to. Jednostavno su zeznuli stvar i pravili duplu logiku bez preke potrebe...


Jeste, ali su nam barem ushtedeli muku oko zahebancije da sami citamo diffgrame pri svakoj update/undo operaciji, a zamisli josh dataset sa gomilom relacija i gomilom bindinga sa child tabela .... brrrrrr Nije normalno, ali uzmi u obzir da je od majkrosofta, hvala im i na tome

Citat:
I iz vremena bete za 1.0 se secam da je to reklamirano kao glavna prednsot koja ce nam svima ustedeti ogromne pare i vreme


Da, ta im je dobra :~)
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...20.12.2005. u 12:36 - pre 223 meseci
Citat:
dusty: Zaista, ne znam kada bi mogao da se okine nekakav event za EndEdit ? Na Leave event ne moze jer EndEdit treba da se okine tek kada se zavrsi obrada svih bindovanih recorda.


Ok, mislim da me nisi dobro razumeo. EndEdit, kao takav, bi bio suvisan. Sta je u stvari EndEdit, nego manualna instrukcija CurrencyManager-u da pokupi vrednosti iz svih bindovanih kontrola i prebaci ih u dataset. To je sve sto radi (moze se videti preko NET Reflectora). Prvi leave event koji bi bio okinut bi currency manager natero da prebaci vrednost tog polja u dataset i proglasi row za modified, i onda dataset automatski kreira diffgram za taj row. Umesto CancelEdit, radio bi se CancelEdit u dataset row-u koji bi, opet automatski, vratio vrednosti iz internog diffgrama, a CurrencyManager bi preko *Changed eventa mogao da detektuje da se to desilo i da vrati originalne vrednosti u kontrole. Kompletno i potpuno transparentno, i izvodljivo...

Citat:
Jeste, ali su nam barem ushtedeli muku oko zahebancije da sami citamo diffgrame pri svakoj update/undo operaciji, a zamisli josh dataset sa gomilom relacija i gomilom bindinga sa child tabela ....


Diffgrami su interna stvar dataseta, kao sto znas, svaki row moze biti u jednom od cetiri moda, Added, Deleted, Modified, Original. Iako se diffgram moze snimiti/ucitati iz XMLa, u ovoj situaciji je to nepotrebno, koristi se samo interno stanje memorijskog dataseta. DataAdapter, u Update metodu koristi upravo taj interni DiffGram da preko GetChanges izvuce redove koji su ne-Original i da pozove odgovarajucu komandu iz svog arsenala da uskladi row iz DataSeta sa bazom. Kad zavrsi update, dataadapter poziva AcceptChanges koji red u datasetu prebacuje u Original (efektivno brisuci diffgram u pozadini). Dakle, nemas nikakvo manuelno ucitavanje bilo cega za update/undo, niti potrebe da brines da li je red ima ili nema diffgram. Sto se tice child tabela, one su, narafski, vezane preko foreign key-a, i jedini problem tu moze biti sa brisanjem i promenom primary key-a. Ali ako stavis to na papir, videces da sam dataset i sad ne dozvoljava da uradis te stvari ako relacija nije delete cascade tj. update cascade. A ako jeste, te dve stvari se desavaju automatski i brisu se ili menjaju foreign key svi childovi tog mastera (efektivno kreirajuci diffgram koji posle koriste datadapteri za child tabelu da obrisu/prelinkuju child redove). Ako si kreirao master i njegove childove, CancelChanges na novo dodatom masteru ce obrisati childove koji su na njega vezani ili ce baciti exception (u zavisnosti od delete cascade opcije). Dakle, ne postoji scenariojo koji ometa transparentonst CurrencyManagera

Pazi ovako, sve je ovo akademska rasprava. Bottom line, MS je imao sansu da napravi nesto stvarno dobro i uprskali su stvar. Sva funkcionalnost koja je neophodna za ovu transparentnost je mogla da se definise u IControl i IDataSource interfejse i time bi se isforsiralo da sve bindable kontrole i svi "izvori" podataka mogu da se povezu na ovaj nacin.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

gotivac
Kragujevac

Član broj: 26754
Poruke: 160
*.204.EUnet.yu.



+2 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...21.12.2005. u 13:11 - pre 223 meseci
Nego, da mi vi kad vec znate razjasnite stvar iz naslova topica ...

Dakle, imam dve forme, Form1 i Form2 i jedan modul, recimo Module1. :)

Kada u okviru modula deklarisem promenljivu kao Public, obe forme je bez problema koriste, to jest moze da se koristi u kodu bilo koje od dve forme. Medjutim, kad promenljivu deklarisem kao Public u okviru jedne od formi, odmah na pocetku koda posle Inherits linije, druga forma ne vidi tu promenljivu, to jest pokusaj koriscenja iste u kodu druge forme prijavljuje da varijabla nije deklarisana.

Da li to znaci, da ako neku promenljivu zelim da koristim u okviru citavog projekta, odnosno namespace-a, moram da je deklarisem u posebnom modulu, ili postoji nacin da se promenljiva deklarise u okviru forme i da joj scope obuhvata i druge forme u okviru projekta?
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...21.12.2005. u 14:02 - pre 223 meseci
Cudi me da ti je uopste dozvolio da kompajliras promnljivu na nivou namespace-a, verovatno zato sto je deklarisana u okviru modula pa je otisla u neku genericku klasu. Kreiranje globalnih promenljivih je generalno protivno OOP metodologiji, pa je nadjeno solomonsko resenje u vidu Singleton klase (klase za koju postoji samo jedna jedina instanca):

Code:

Public Class clsSingleton
    Private Shared objSingle As clsSingleton = new clsSingleton()
    Private pMojaVarijabla as String

    Private Sub New()
        ' ovde postavljas default vrednosti
        pMojaVarijabla = "pocetna vrednost"
    End Sub

    Public Shared ReadOnly Property Instance As clsSingleton
    Get
        return objSingle
    End Get
    End Property

    Public Property MojaVarijabla As String
    Set
        SyncLock Me
            pMojaVarijabla = Value
        End SyncLock
    End Set
    Get
        SyncLock Me
            return pMojaVarijabla
        End SyncLock
    End Get
    End Property
End Class

promenljivoj pristupas direktno sa clsSingleton.Instance.MojaVaijabla


PS nadam se da sam pogodio sinaksu iz prve, obicno ove stvari radim u C#u. . Singleton ima dosta prednosti nad generickom klasom koja ima shared promenljive, najvaznija (bar po meni) je da imas instancu (Me, tj this u C#) koju mozes da koristis u SyncLock da bi ti promenljive bile thread-safe. Posto je konstruktor Private, niko sem shared elemenata klase ne moze da kreira instancu ove klase, sto se i desava u shared objSingle.
Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

mmix
Miljan Mitrović
Profesorkin muz
Passau, Deutschland

SuperModerator
Član broj: 17944
Poruke: 6042



+4631 Profil

icon Re: Kako deklarisati promenljivu, a da bude ...21.12.2005. u 14:15 - pre 223 meseci
Citat:
mmix: Pazi ovako, sve je ovo akademska rasprava. Bottom line, MS je imao sansu da napravi nesto stvarno dobro i uprskali su stvar.

Ok, izgleda da cu morati da demantujem samog sebe.

Posle par sati igranja i debagovanja .NET 2.0, sa zadovoljstvom mogu da kazem da je stvar (izgleda) konacno transparentna .

Sve se uskladjuje (i to u oba smera) bez i jedne linije koda. Ono sto jos uvek ne znam je kako to u stvari radi . Samo znam da je sva logika u novoj komponenti (BindingSource) koja se ponasa kao wrapper oko CurrencyManager-a. Ono sto treba da otkrijem sada je kako BindingSource detektuje promene i u kontrolama i u samom DataSetu (da, radi u oba smera, promena polja u datasetu se automatski reflektovala u kontrolu istog trentuka kad je dodela izvrsena) i da li to radi i sa drugim data source elementima sem dataset-a. Medjutim, iz nekog glupog razloga ne mogu u debageru da vidim evente (da bih video da li se BindingSource vezao za kontrole i dataset i kako). Ili ja nesto pogresno radim ili i ostali to ne mogu (sve sto se vidi u Ctrl-Alt-Q su polja i propertiji, nema evenata i metoda...) Mozda nesto treba da se ukljuci u opcijama ali nesto ne uspevam da to nadjem....


Sloba je za 12 godina promenio antropološki kod srpskog naroda. On je od jednog naroda koji je bio veseo, pomalo površan, od jednog naroda koji je bio znatiželjan, koji je voleo da vidi, da putuje, da upozna,
od naroda koji je bio kosmopolitski napravio narod koji je namršten, mrzovoljan, sumnjicav, zaplašen, narod koji se stalno nešto žali, kome je stalno neko kriv… - Z.Đinđić
 
Odgovor na temu

[es] :: .NET :: Kako deklarisati promenljivu, a da bude ...

[ Pregleda: 3289 | Odgovora: 17 ] > FB > Twit

Postavi temu Odgovori

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