Tema: Re: 100 formų
Autorius: Jornada Del Muerto
Data: 2010-08-11 13:14:23
Siaip jei tam tikrame lygyje formu funkcionalumai panasus galima tam OOP naudoti, tokiu sprendimu irgi teke imtis, pvz.: 

Beveik bet kokie duomenys visada turi ID, didele duomenu dalis turi varda ir daznai description'a, pvz.:

class Item { string id; }
class NamedItem : Item { string name; string desc; }

    Tai kad bendrus zodynus naudos reiskia jau kad tures dali reference ID tokiu pat, aisku nelygu kas poto daroma su duomenimis, visumoj UI cia lengva butu optimizuoti su PropertyGrid, gal net skaidyti i kelis propertyGrid'us, o propertyGrid esme kad bet kokio objekto public memberius jis leidzia redaguoti, pvz tokiu budu as turiu pasidares universalia Login forma, duosiu kaip pavizdi.

    Faktas tas kad bet koks login box tures login ir password, ane? toliau dar bus kazkokia informacija kaip serverio, vienu atveju webservice url, galbut dar kazkokia autorizavimo info, kitu atveju tai bus duomenu baze, pvz. mssql, o gal tai is vis bus db user level login (prisijungimui naudojami db useriai - niekad pats taip nedares bet teke susidurt su veikejais kurie dare), ar koks oracle, kur tures dar kiek pamenu papildoma parametra, na ju maza kiek gali buti, tos tokios technines informacijos reikalingos pasijungti...

    Ka gi as toliau darau, sukuriu elementaria klase:


public class LoginInfo {
    public string Login;
    public string Password;
    public bool RememberLogin = false;
    public bool Success = false; // sis statosi i true kada logine paspaudzia ok

    // Cia eis ivairiausia technine informacija priklausomai ar loginas loginsis i db ar i webservice ar i faila ar dar kazkur...
    public object ServerInfo;
}


    Tada mano forma turi TabControl, pirmame tab'e randasi login, password textboxai, o antrame property grid, forma inicializuojasi LoginInfo tipo objektu, o propertyGrid'ui kuris kitam tabe prisiskiria ServerInfo objektas, kadangi property grid susidoros su bet bet kokio tipo public memberiais, logino UI nereik i tai gilintis...

    Dali tokiu tasku eina issprest su PropertyGrid ,nors jis nera patogus tuo kad ant jo tab nelabai veikia norint pildyt kelis laukus, tenka pele clickint, del to kuri laika mastau apie savo PropertyGrid analoga...

    Aisku cia tik viena medalio puse, mes pamirsome duombaze, tam kad ivairias apklausas ivedinet atitinkamai lenteliu reikes su ivairiais field... nors pas mane buvo ir tam sprendimas, abstrakti klase DataRowItem, kuri inicializuodavosi DataRow (jis galejo but ir tuscias), tiesa tada deklaruojasi visa kruva Get/Set properciu kurie realiai kreipiasi i bazine klase (DataRowItem) ir per this["Name"] kreipiasi i konkretu DataRow elementa, o tas DataRow gali tada eiti i konkretaus tipo DataTable ir poto updatintis, insertintis ir t.t...

    Faktiskai gali reiketi tada Design Mode dataset'o bet galima padaryt ir kazka tokio Select * from table where id=-1 (selectint itema kurio ner) taip inicializuojant datatable columns ir ju tipus, tiesa jie greiciausia taps readonly tai su foreach teks columnam perbegt ir sudeliot readonly=false;



P.S. Rasau turedamas jau 2 diena temperaturos, sergu biski, tai gal ne viskas tiksliai tai nemuskit stipriai.. :) manau kam reiks tas pasinaudos patarimais...



"Linas Petkevičius" <linas@NONOOglservices.lt> wrote in message news:i3ts8i$rcg$1@trimpas.omnitel.net...
> Klausimukas ant uzbarstymo. O ka darytum tokiu atveju. Kokie 1700 popieriniu 
> formu arba informacijos rusiu gaunamu per call centra, kurias reikai 
> strukturizuotai suvest. Zinynai aisku gali buti bendri. Bet kaip tokiu 
> atveju sprest problemas, kai taisomi nukopinti bug'ai?
> 
> "Jornada Del Muerto" <agira@TRINTIgmx.co.uk> wrote in message 
> news:i3tqq1$p73$1@trimpas.omnitel.net...
>>    Bet tokios formos jei daryt jas atskirom daznai turi tik 10-20% 
>> unikalaus funkcionalumo, jei ja copy pastinta tai jei yra kazkoks bugas 
>> tai ir bugus copy pastina tada, po to jei atsiranda bugas ne visur 
>> istaisoma, as tai kaip tik salininkas to kad viska skaldyt i daug lygiu 
>> klases/funkcijas, nuo low levelio iki hi levelio, paprastai poto jei buna 
>> bugas tenka tik viena vieta pataisyt ir visur issitaiso...
>>
>>    Nors pvz yra pas mane universalus zodynu komponentas, kur tiesiog 
>> implementini tam tikra zodyno objekto ir jo accessinimo interface'us o UI 
>> universaliai apdirba kad ir 1000 zodynu tai pati forma neturi is viso 
>> jokio kodo skirto konkretiem duomenim.. viskas priklauso nuo poziurio 
>> kitaip sakant...
>>
>>    Va dabar is viso kuriu nauja vizija visai kitokio savo framework, kada 
>> bus aplamai UI engine'as ir jokiu formu su konkreciu duomenu apdirbimu, 
>> objektas tures visus savo funkcionalumus pas save, kad jei ant jo spaudus 
>> pvz desini mygtuka tai duos funkcijas kokias jis gali apdirbti, tik aisku 
>> dar pakolkas projektavimo lygyje viskas, bet is esmes eis bet kokia beveik 
>> sistema sukurt nedarant nieko su UI...
>>
>> "BigM" <mindaugask_NOSPAM@centras.lt> wrote in message 
>> news:i3tpcn$mpu$1@trimpas.omnitel.net...
>>> Reikia nepamiršti vėlesnio supportinimo tokio primakliavoto kodo, kai ant
>>> vienos formos užprogramuota n biznio funkcijų. Tai nu ir nafig tokį
>>> programavimo stilių, galiu pasakyt. Geriau jau aiškiai struktūrizuota
>>> (moduliarizuota) sistema, nei vienas didelis jovalynas.
>>>
>>> Kaip ir visur, į kraštutinumus nueiti nereikia ir tikrai galima pvz.
>>> standartinius žinynus daryti universalius. Duomenų modelis tokio
>>> universalaus pvz. būtų:
>>>
>>> Žinynas (id, pavadinimas) -< Žinyno reikšmė (id, pavadinimas)
>>>
>>> Ir psio, padarai vieną moduliuką, kur viršutiniam bloke matai žinynus, o
>>> apatiniame pasirinkto žinyno reikšmes su tvarkymo galimybe.
>>>
>>> "Jornada Del Muerto" <agira@TRINTIgmx.co.uk> wrote in message
>>> news:i3tnr6$k2a$1@trimpas.omnitel.net...
>>>>    Teke ir man kazkada tokia rasyta programa taisyt, kas taip istrigo 
>>>> tai
>>>> kad tapati forma copy pastinta gal 4 kartus ir dadetas biski kitoks
>>>> funkcionalumas, vietoj to kad padaryti tapacia forma multifunkcine... 
>>>> arba
>>>> pvz mygtukai tokio pacio dydzio viens ant kito toje pacioje vietoje
>>>> sudelioti ir daromas kazkuris visible vietoj to kad tiesiog deti 1 
>>>> mygtuka
>>>> ir jo uzrasa keisti....
>>>>
>>>>    Nu dar buna tokiu kurie paprastus trivialius zodynus kur yra tik ID 
>>>> ir
>>>> NAME kuria atskirom formom, nors eitu viska i viena sukisti dadejus
>>>> combobox kur pasirenkama kokius duomenis redaguoti...
>>>