Tema: Re: Visual studio 5 ir modaline forma
Autorius: Valdas
Data: 2010-10-28 07:47:07
Na taip, o vat kaip uzdarineti, kuriuo budu geriau ?
Dim OpenFileDialog as new Form2
-------------------------------------
Form2.close
OpenFileDialog.close
Me.Close

?

"Jornada Del Muerto" <Jornada@Lythum.lt> wrote in message 
news:ia99tp$dch$1@trimpas.omnitel.net...
>    Jei labai jauciasi ant greiciu tai gali tada gal ir laikyt atmintyj, 
> kad ir toje pacioje klaseje sukurt statini memberi saugot tos klases 
> objektui ir 1 statine startavimo funkcija. paprastai statines statinio 
> kintamojo tikrai nenaikins GC, bet cia galima sakyt atbulas anam variantui 
> variantas :)  pvz:
>
> public class ManoKlase {
>
>    static ManoKlase _Objektas = null; // c# jeigu nenurodomas access 
> modyfer (t.y. public, private, protected, internal ir pan.) tai pagal 
> nutylejima tai buna private
>
>    /* Statinis start metodas toje pacioje klaseje inicializuojantis klases 
> objekta - tavo atveju forma su tam tikrais parametrais */
>
>    public static [returnType] Start (...parametrai...) {    // 
> [returnType] jeigu reikia cia aprasai duomenu tipa koki grazinti, dialogam 
> as paprastai dedu bool - priklausomai ar paspausta YES|OK/NO|Cancel
>
>        // jeigu ner objekto
>        if(_Objektas == null ) {
>            // sukuriu objekta
>            _Objektas = new _Objektas(...parametrai...);
>        }
>        // objektas yra
>        else {
>            // priskiriame parametrus jau esamam objektui, jie galbut 
> pasikeite
>            _Objektas.Memberis = ...parametrai...
>        }
>
>        // cia vyks modalinio dialogoo rodymas
>        // Paimu true arba false priklausomai ar paspausta OK ar ne
>        IF   _Objektas.ShowDialog() == DialogResult.OK THEN
>            ' Paspausta OK
>            return _Objektas.[FilePath];    // daleiskim musu returnType 
> yra string, jeigu grazinama null reiskia nebuvo spausta ok, jeigu tekstas 
> reiskia tai failas/katalogas
>
>                        ' cia gali dar tikrinti ar realiai egzistuoja 
> failas
>            FileInfo file = new FileInfo(_Objektas.Path);
>            if file.Exist then.....
>
>            ' taip pat jeigu tai direktorija tai:
>            DirectoryInfo dir = new DirectoryInfo(_Objektas.Path);
>            if dir.exist .... (jei gerai pamenu)
>
>            ' Nors visumoje file dialogas validuoja pats
>
>
>
>        Else
>            return Null;    // VB kiek pamenu tai butu Start = Null vat del 
> VB.net pamirses ;)
>
>        END IF
>
>
>    } /* end of  Start  */
>
>    /* Toliau klases visi kiti memberiai */
> }
>
>    Visumoje isorinis kvietimas atrodytu tada taip:
>
>    Dim path AS String = ManoKlase.Start(...parametrai...)
>
>    if Not String.IsNullOrEmpty(path) then
>
>        ' kazka atidarinejam
>
>        ....fileOpen(path)...
>
>    endif
>
>
>
> "Valdas" <valdonas@super.lt> wrote in message 
> news:ia8be4$4fg$1@trimpas.omnitel.net...
>> na as parametra path ir filtra laikau globaliai, kiek jau ten jie tos 
>> vietos
>> uzima, o pacios formos turinys generuojamas kekviena karta ja 
>> paleidziant.
>> Dar vat idomu kokiu komponentu nenaudoti kad forma greiciau pasileistu ?
>>
>> "Jornada Del Muerto" <agiraTrintI@gmx.co.uk> wrote in message
>> news:ia6tuq$vvm$1@trimpas.omnitel.net...
>>>    Tai taip ir yra daryti geriausia, o jeigu tu ja nori saugotis 
>>> atmintyje
>>> del to kad nepamirst paskutinio vartotojo nurodyto kelio ar kazkokios
>>> tokios informacijos, geriau pasidaryk nustatymu klasyte ar struktura 
>>> kuria
>>> naudotu jis, pvz:
>>>
>>> // rasau c# taip greiciau man, bet cia elementari klasyte
>>> public class MyDialogSettings {
>>>    public string Path;
>>>    public string SelectedExtensions;
>>>    public string LastFile;
>>>
>>>    public MyDialogSettings(string path) {
>>>        // Jeigu path tuscias ar lygus null tai nukreips i MyDocuments,
>>> kitu atveju naudos path
>>>        Path = (String.IsNullOrEmpty( path ?
>>> Environment.SpecialFolder.MyDocuments : path);
>>>    }
>>>
>>>    ir t.t...
>>> }
>>>
>>> Ir tada sios klases objekta saugai kur nors savo klaseje kuri naudoja
>>> dialoga, kadangi .NET dirba reference'ais tai i klase bus paduodamas ne
>>> objektas o tik nuoroda i ji:
>>>
>>> MyDialogSettings FileOpenSettings = new MyDialogSettings(null); //
>>> inicializuojam my documents keliu
>>>
>>> ManoDialogas d = new ManoDialogas(Me.FileOpenSettings);
>>> d.ShowDialog();
>>>
>>> Viska ka darys iskvietus d.ShowDialog tavo klase su settingu objektu ja
>>> sunaikinus liks FileOpenSettings klases memberyje, tada kita kart
>>> inicializuojant nauja dialoga paduodi tapati FileOpenSettings ir tavo
>>> klase naudoja juos vel, taip islaikant visa pries tai buvusio dialogo
>>> stovi.
>>>
>>> Bent jau galima taip daryti, tada nesaugosi ko nereikia o tik ko reikia
>>> atmintyje.
>>>
>>>
>>> "Valdas" <valdonas@super.lt> wrote in message
>>> news:ia5mo5$3qb$1@trimpas.omnitel.net...
>>>> na vienok tas variantas :
>>>> Dim FileDialog as new Form2
>>>> FileDialog.Showdialog()
>>>>
>>>> padejo, aciu, galima tema uzdarinet :)
>>>>
>>>> "Jornada Del Muerto" <agiraTrintI@gmx.co.uk> wrote in message
>>>> news:ia470e$thv$1@trimpas.omnitel.net...
>>>>> GC.[spausk tada ctrl+space] :))
>>>>>
>>>>> "Valdas" <valdonas@super.lt> wrote in message
>>>>> news:ia35n5$bs4$1@trimpas.omnitel.net...
>>>>>> Na o tai kaip mano atveju (Visual Studio 5, Visual Basic), 
>>>>>> prisibrauti
>>>>>> prie
>>>>>> to GC (Garbage Collector) ?
>>>>>>
>>>>>> "Jornada Del Muerto" <agiraTrintI@gmx.co.uk> wrote in message
>>>>>> news:i9s1h6$n88$1@trimpas.omnitel.net...
>>>>>>> Instance tai kazkokio tipo sukurtas objektas, pvz.: DataTable yra
>>>>>>> tipas,
>>>>>>> tipas gali buti klase, struktura, ar primityvus tipas pvz int ir 
>>>>>>> t.t..
>>>>>>> tai
>>>>>>> yra tipas, o sio tipo sukurtas objektas yra to tipo object instance,
>>>>>>> arba
>>>>>>> tiesiog to tipo instance, pvz.:
>>>>>>>
>>>>>>> Daleiskim tu susikurei savo open file dialog klase, ja uzvadinai
>>>>>>> "ManoFileOpenDialogas" <- kitaip sakant sukurei ManoFileOpenDialogas
>>>>>>> tipa.
>>>>>>>
>>>>>>> ' Deklaruojam
>>>>>>> Dim a As ManoFileOpenDialogas ' nurodai kad kintamasis a bus
>>>>>>> ManoFileOpenDialogas tipo
>>>>>>>
>>>>>>> ' kintamajame a sukuriu (kiti dar vadina inicializuoju)
>>>>>>> ManoFileOpenDialogas tipo object instance
>>>>>>> a = new ManoFileOpenDialogas ' va a ir bus instance (dar kiti 
>>>>>>> vadintu
>>>>>>> objektu, zodziu kaip nepavadinsi taip nepagadinsi)
>>>>>>>
>>>>>>>    Siaip terminologijos ipac tokios bazines OOP vertetu pasimokinti,
>>>>>>> ok
>>>>>>> toliaujam keliau :)  tau ka is esmes norejo pasakyti zmones, kad 
>>>>>>> .NET
>>>>>>> yra
>>>>>>> toks dalykas kaip GC (Garbage Collector) grubiai vertus, siuksliu
>>>>>>> rinkejas, pvz. kokiam nors C++ viska alokuota rankiniu budu atminti
>>>>>>> skirta
>>>>>>> kazkokiam programos darbui, po to reikedavo nepamirsti atlaisvinti -
>>>>>>> kitaip ji uzimdavo ir toliau vieta ir su laiku prisikaupdavo tos
>>>>>>> rezervuotos/alokuotos atminties daug, nuo ko galedavo luzti 
>>>>>>> programa,
>>>>>>> .net
>>>>>>> atvejais tam buna ivairus metodai dispose ir pan.. Bet .NET daugeli
>>>>>>> tokiu
>>>>>>> objektu pasalina pats GC pagalba, del to greiciausia su tavuoju
>>>>>>> objektu
>>>>>>> taspats atsitinka, tiesiog reik suprasti kokiom aplinkybem .net pats
>>>>>>> juos
>>>>>>> naikina.
>>>>>>>
>>>>>>>    Visumoje .net automatu, kaip jau ir minejau naikina objektus 
>>>>>>> kurie
>>>>>>> niekur nera saugomi ar isiminti, pvz kazkokiam kintamajame ir
>>>>>>> panasiai,
>>>>>>> pvz. turime funkcija:
>>>>>>>
>>>>>>> Public Sub ManoFunkcija
>>>>>>>
>>>>>>>    Dim a As ManoFileOpenDialogas '
>>>>>>>    a = new ManoFileOpenDialogas
>>>>>>>
>>>>>>>    ' dirbi su a
>>>>>>>    a.DoModal() ' ir t.t...
>>>>>>>
>>>>>>> End Sub
>>>>>>>
>>>>>>>    Isejus is sios funkcijos a bus automatiskai naikinamas, bet 
>>>>>>> sekanti
>>>>>>> karta iskvietus sia funkcija (tiksliau metoda) objektas sukuriamas 
>>>>>>> bus
>>>>>>> is
>>>>>>> naujo, taip va ir turetu buti daroma, paprastai atmintyje niekas
>>>>>>> nelaiko
>>>>>>> inicializuotu OpenFileDialog'u, aplamai kuo maziau laikysi tokio
>>>>>>> nereikalingo saugoti slamsto tuo tavo programa maziau resursu 
>>>>>>> valgys,
>>>>>>> o
>>>>>>> jeigu nori ji saugotis del to kad naudosi labai daznai (nebent) tai
>>>>>>> saugokis toje klaseje kuri su juo dirbs, tada butu kazkas tokio:
>>>>>>>
>>>>>>> ' Klases, bet ne metodo/funkcijos zonoje deklaruotas kintamasis
>>>>>>> public OpenFile As ManoFileOpenDialogas = Null ' Nepamenu gerai 
>>>>>>> VB.NET
>>>>>>> sintakses, paskutini kart reikejo pries 5 metus
>>>>>>>
>>>>>>> Public Sub ManoFunkcija
>>>>>>>
>>>>>>>    If Me.OpenFile = Null Then ' rodos VB kitaip tikrinasi ar 
>>>>>>> objektas
>>>>>>> null
>>>>>>>        Me.OpenFile = new ManoFileOpenDialogas
>>>>>>>    End If
>>>>>>>
>>>>>>>    ' kreipiesi i savo dialoga
>>>>>>>    Me.DoModal() ' ir t.t...
>>>>>>>
>>>>>>> End Sub
>>>>>>>
>>>>>>> Tada 1 karta bus sukuriamas dialogas ir veliau pernaudojamas ji
>>>>>>> nekuriant
>>>>>>> dar karta, tuo paciu jis saugomas bus klaseje kuri ji naudoja, siaip
>>>>>>> tai
>>>>>>> geriausia savo kodo parasytum, tai tada butu aiskiau kas negerai, 
>>>>>>> gal
>>>>>>> beda
>>>>>>> visai kitur.
>>>>>>>
>>>>>>>
>>>>>>> Freelancer Developer [R&D]
>>>>>>> http://www.lythum.lt
>>>>>>>
>>>>>>> Naujausias research:
>>>>>>> http://wiki.lythum.lt/index.php?title=Facebook_integrafimo_galimyb%C4%97s
>>>>>>>
>>>>>>>
>>>>>>> "Valdas" <valdonas@super.lt> wrote in message
>>>>>>> news:i9rr3e$cre$1@trimpas.omnitel.net...
>>>>>>>> na as kazko nesuprantu, siaip as ant Visual Basic darau, tai kas 
>>>>>>>> tas
>>>>>>>> instance nezinau :((
>>>>>>>>
>>>>>>>> "Andrius F" <andriusflMORESPAM@gmail.com> wrote in message
>>>>>>>> news:i9rq8p$bic$1@trimpas.omnitel.net...
>>>>>>>>> kiekviena karta pries ShowDialog() kurk nauja instance..
>>>>>>>>> using(var form = new SomeForm())
>>>>>>>>> {
>>>>>>>>>    if(form.ShowDialog(this) == DialogResult.Ok)
>>>>>>>>>    {
>>>>>>>>>        ...
>>>>>>>>>    }
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> "Valdas" <valdonas@super.lt> wrote in message
>>>>>>>>> news:i9rf9u$qk9$1@trimpas.omnitel.net...
>>>>>>>>>> ka reiskia nereusint instance, tai kaip tada naudotis tuo
>>>>>>>>>> ShowDialog
>>>>>>>>>> ?
>>>>>>>>>> man reikalingas tas modaliskumas, nes darau savo open file 
>>>>>>>>>> dialoga,
>>>>>>>>>> ir
>>>>>>>>>> kai uzdarau forma, tik tuomet gaunu reiksme...
>>>>>>>>>>
>>>>>>>>>> "fakeID" <fakeID@fakeHost.com> wrote in message
>>>>>>>>>> news:i9rcss$n3d$1@trimpas.omnitel.net...
>>>>>>>>>>> Nereiktu reusinti formos instance, nebent tau tikrai taip reikia
>>>>>>>>>>> (pvz
>>>>>>>>>>> forma kuriasi 15 sek, bet tada turbut kazkas blogai su tavo 
>>>>>>>>>>> forma
>>>>>>>>>>> ;)..
>>>>>>>>>>> Blogiausiu atveju isitikink, kad GarbageCollector nesunaikins 
>>>>>>>>>>> tavo
>>>>>>>>>>> formos:
>>>>>>>>>>>    a. ikisk instance i static field
>>>>>>>>>>>    b. galbut verta overridint close, ir hidint forma vietoj
>>>>>>>>>>> base.close()
>>>>>>>>>>>
>>>>>>>>>>> bet siaip - nereusink instance. tai bloga architektura
>>>>>>>>>>>
>>>>>>>>>>> "Valdas" <valdonas@super.lt> wrote in message
>>>>>>>>>>> news:i9r6gd$er1$1@trimpas.omnitel.net...
>>>>>>>>>>>> Sveiki, iskilo tokia beda, bandant is vienos formos atidaryti
>>>>>>>>>>>> kita
>>>>>>>>>>>> "Forrm2.ShowDialog()", pradzioje atidaro, bet programai 
>>>>>>>>>>>> padirbus
>>>>>>>>>>>> kokia
>>>>>>>>>>>> valanda ir vel bandant atidaryti, meta klaida
>>>>>>>>>>>> "ObjectDisposedException", gal nujauciat kur cia beda ?
>>>>>>>>>>>>
>>>>>>>>>>>> aciu
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>
>>>>>>
>>>>
>>>>
>>
>>