10.07.2015 Views

2× DVD - Vitajte na stránkach www.einsty.hostujem.sk

2× DVD - Vitajte na stránkach www.einsty.hostujem.sk

2× DVD - Vitajte na stránkach www.einsty.hostujem.sk

SHOW MORE
SHOW LESS
  • No tags were found...

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

P R O G R A M U J E M EObr. 1 Pridávanie projektu do WorkspaceTá je potrebná, ak chcete pouíva kolekcie zaloené <strong>na</strong> šablónových triedach (prenešablónové triedy by ste includovali súbor afxcoll.h).To bolo pouitie triedy CtypedPtrList; <strong>sk</strong>úste si aj pouitie ostatných tried, prièomïalšie projekty pridávajte do Workspace Collections. Odporúèam vám všetky triedykolekcií MFC dobre <strong>na</strong>študova, niekedy sa budete musie rozhodnú, ktorú z nichpouijete. A správne sa rozhodnete len v takom prípade, e budete doko<strong>na</strong>le poz<strong>na</strong>kadú z týchto tried.ZLEPŠENIE PROJEKTU ŠTUDENTI. Teraz s vyuitím kolekcií zlepšímeprojekt StudentList zo 16. èasti. Nová verzia bude schopná uchováva informácie o viace−rých študentoch, prièom bude moné posúva sa po jednotlivých záz<strong>na</strong>moch a vkla−da/maza údaje o konkrétnom študentovi. Nevytvárajte zbytoène nový projekt, všetkyzmeny vyko<strong>na</strong>jte do u existujúceho projektu StudentList.Krok 1. Pridajte menu Student, ktoré bude obsahova poloky: First, Last, Next, Prev,|Separator|, Insert, Remove. Takisto pridajte tlaèidlá <strong>na</strong> toolbar, ktoré budú ma rov<strong>na</strong>kývýz<strong>na</strong>m (a hlavne rov−<strong>na</strong>ké ID), ich grafickúinterpretáciu nechám<strong>na</strong> vás. Pomocou Class−Wizardu <strong>na</strong>mapujte ob−deklaruje objekt ukazovate¾ov <strong>na</strong> triedu CSimpleListClass. Prvý parameter je základnoutriedou kolekcie. Môe to by len trieda CPtrList alebo <strong>na</strong>mi pouitá CObList. CObList saodporúèa pouíva, ak ukladáte objekt odvodený od CObject (èo v <strong>na</strong>šom prípade ajrobíme – pozri triedu CSimpleListClass), v opaènom prípade sa pouíva CPtrList (<strong>sk</strong>úste sipríklad aj s touto triedou a sledujte, ako sa zmení Dump výstup). Na riadkuPOSITION pos=m_SimpleList.GetHeadPosition();deklarujeme premennú pos typu POSITION a priraïujeme jej ukazovate¾ <strong>na</strong> zaèiatokzoz<strong>na</strong>mu m_SimpleList (podrobnejšie v helpe). Táto premenná reprezentuje polohu prvkuv zoz<strong>na</strong>me. Ïalej v kóde pouívame túto premennú v spojení s funkciou GetNext, ktorávracia ukazovate¾ <strong>na</strong> prvok, ktorého pozícia je práve pos, a zároveò inkrementuje tútopremennú, èie po zavolaní funkcie bude obsahova polohu prvku pos+1(ak sme <strong>na</strong>poslednom prvku, tak pos=NULL). Preto pri posúvaní sa po prvkoch v zoz<strong>na</strong>me vykoná−vame test:Obr. 2 Vloenie novejtriedy do projektuwhile (pos!=NULL)èi sme u náhodou nedosiahli jeho koniec. Za povšimnutie ešte stojí proces rušenia objek−tov simpleListObject. Pri odstraòovaní objektov z kolekcie vracia funkcia RemoveHeadukazovate¾ <strong>na</strong> práve rušený objekt, ktorý pouijeme, aby sme zrušili aj samotný objekt(vyòatím ukazovate¾a zo zoz<strong>na</strong>mu sa objekt nezruší!). Do súboru stdafx.h vlote ešte tútoinclude direktívu#include ID ovládacieho prvku Správa Obsluná funkcia TriedaID_STUDENT_FIRST COMMAND OnStudentFirst CStudentListViewID_STUDENT_FIRST UPDATE_COMMAND_UI OnUpdateStudentFirst CStudentListViewID_STUDENT_LAST COMMAND OnStudentLast CStudentListViewID_STUDENT_LAST UPDATE_COMMAND_UI OnUpdateStudentLast CStudentListViewID_STUDENT_NEXT COMMAND OnStudentNext CStudentListViewID_STUDENT_NEXT UPDATE_COMMAND_UI OnUpdateStudentNext CStudentListViewID_STUDENT_PREV COMMAND OnStudentPrev CStudentListViewID_STUDENT_PREV UPDATE_COMMAND_UI OnUpdateStudentPrev CStudentListViewID_STUDENT_INSERT COMMAND OnStudentInsert CStudentListViewID_STUDENT_REMOVE COMMAND OnStudentRemove CStudentListViewID_STUDENT_REMOVE UPDATE_COMMAND_UI OnUpdateStudentRemove CStudentListViewTab. 4 Ovládacie prvky projektu StudentListID ovládacieho prvkuID_STUDENT_FIRSTID_STUDENT_LASTID_STUDENT_NEXTID_STUDENT_PREVID_STUDENT_INSERTID_STUDENT_REMOVEOpisPosun <strong>na</strong> zaèiatok zoz<strong>na</strong>mu (<strong>na</strong> prvý záz<strong>na</strong>m)Posun <strong>na</strong> koniec zoz<strong>na</strong>mu (<strong>na</strong> posledný záz<strong>na</strong>m)Posun <strong>na</strong> ïalší prvok zoz<strong>na</strong>muPosun <strong>na</strong> predchádzajúci prvok zoz<strong>na</strong>muVloenie nového záz<strong>na</strong>muOdstránenie aktívneho záz<strong>na</strong>muTab. 5 Výz<strong>na</strong>m ovládacích prvkov projektu StudentListsluné správy týchto tlaèidiel(v tomto prípade je potrebné<strong>na</strong>mapova pre kadé tlaèidlookrem tlaèidla Insert aj správuUPDATE_COMMAND_UI –Obr. 3 – Okno zlepšenej aplikácie StudentListpodrobnosti sú v tab. 4). Tátospráva je potrebná <strong>na</strong> to, abysme mohli pod¾a aktuálnej pozície v zoz<strong>na</strong>me zneprístupni niektoré tlaèidlo (<strong>na</strong>pr. ak sa<strong>na</strong>chádzame <strong>na</strong> prvom záz<strong>na</strong>me, zneprístupníme tlaèidlá First a Prev). Podrobnejšívýz<strong>na</strong>m tlaèidiel je v tab. 5. Nakoniec ešte správne odstráòte tlaèidlo IDC_GETDATA(„správne“ z<strong>na</strong>mená zo zdrojov + nezabudnú odstráni ho pomocou ClassWizardu +vymaza telo obslunej funkcie). Ako by malo vyzera okno aplikácie, to vidíte <strong>na</strong>obr. 3.Krok 2. Teraz to u staèí celé iba <strong>na</strong>programova. Kód nájdete <strong>na</strong> webe PC REVUE. S jehopochopením by ste nemali ma problémy (ak predsa budete ma nejaké otázky, staèí mi<strong>na</strong>písa).TIPY NA DOMA. V helpe si pozrite informácie o kolekciách, vhodne doplnia výklad ztejto èasti. Takisto sa s<strong>na</strong>te aspoò sèasti pochopi príklad Collect, uvedený v helpe.Skutoène, aj keï sa to nezdá, kolekcie sú ve¾mi dôleitou súèasou aplikáèného systému.Ich doko<strong>na</strong>lým zvládnutím sa zaradíte medzi „vyšších“ MFC programátorov. A èo je <strong>na</strong>j−dôleitejšie, kolekcie urèite vyuijete pri mnohých projektoch a pomôu vám spreh¾adniváš kód.NABUDÚCE. V <strong>na</strong>sledujúcej èasti sa <strong>na</strong>plno vrhneme <strong>na</strong> serializáciu, opíšeme si, akoju spojazdni v <strong>na</strong>šich projektoch, samozrejme, nezabudneme <strong>na</strong> nejaký ukákový príklad.Take „doèítania“ o mesiac...Marek Šamaj1/2002 PC REVUE 107

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!