Adatbázis-kezelés ActiveX vezérl kkel Készítette: Szabóné Nacsa Rozália 2004. november
Saját vezérl Feladat: Készítsünk kört kört rajzoló rajzológrafikus vezérl vezérl t. t.
Figyelem!! Most Most az az MFC MFC ActiveX ControlWizard-ot kell kell kiválasztani!
Az ActiveX projekt osztályai Osztály CCircApp CCircCtrl CCircPropPage Feladat A main DLL forrás implementálása. Általában nem kell módosítani. A vezérl elem funkcióinak implementálása. Ide írjuk be a vezérl specifikus kódot. Sablon a tulajdonságlapok számára. Itt adjuk meg a vezérl specifikus Tulajdonság-lapokat.
OnDraw() circctrl.cpp void voidccircctrl::ondraw(cdc* pdc, pdc, const constcrect& rcbounds, rcbounds, const constcrect& rcinvalid) rcinvalid) {{ pdc->fillrect(rcbounds, CBrush::FromHandle((HBRUSH)GetStockObject(WHITE_BRUSH))); pdc->ellipse(rcbounds); }} A CCircCtrl osztály osztály OnDraw() függvénye alapértelmezésben kör kör rajzolásra van van beállítva.
Eszközgomb elkészítése Készítsünk eszközgombot a vezérl vezérl höz. höz.
Háttérszín tulajdonság beállítása 1 2 3
1 2 3
Szín tulajdonság-lap beillesztése BEGIN_PROPPAGEIDS(CCircCtrl, 2) 2) PROPPAGEID(CCircPropPage::guid) PROPPAGEID(CLSID_CColorPropPage) END_PROPPAGEIDS(CCircCtrl)
CCircCtrl::OnDraw() módosítása circctrl.cpp void voidccircctrl::ondraw(cdc* pdc, pdc, const constcrect& rcbounds, rcbounds, const constcrect& rcinvalid) rcinvalid) {{ CBrush* CBrush* poldbrush; poldbrush; CBrush CBrushbkBrush(TranslateColor(GetBackColor())); CPen* CPen* poldpen; poldpen; // // Paint Paintthe thebackground backgroundusing usingthe thebackcolor BackColorproperty pdc->fillrect(rcbounds, &bkbrush); &bkbrush); // // Draw Drawthe theellipse ellipseusing usingthe thebackcolor BackColorproperty propertyand anda a black blackpen pen poldbrush poldbrush = pdc->selectobject(&bkbrush); poldpen poldpen = (CPen*)pdc->SelectStockObject(BLACK_PEN); pdc->ellipse(rcbounds); pdc->selectobject(poldpen); pdc->selectobject(poldbrush); }} Módosítsuk az az OnDraw() függvényt, hogy hogy kezelje kezelje a háttérszínt is. is.
Fordítás/Futtatás
circ.ocx fájl A projekt projekt fordítása után után keletkezik egy egy.ocx.ocxkiterjesztés fájl. fájl.
A Circ Control AxiveX vezérl regisztrációja Üzenet Üzenet a sikeres sikeres regisztráció után. után.
Az ActiveX vezérl tesztelése Az Az ActiveX Control Test Test Container segítségével azonnal tesztelhetjük a vezérl vezérl nket. nket.
Test Container használata -1
Test Container használata -1
CircTest projekt Feladat: Készítsünk egy egy egyszer projektet, amelyben megtanuljuk, hogyan hogyan kell kell használni az az ActiveX típusú típusúkomponenseket.
Vezérl beillesztése az eszköztárba - 1 1 2 3
Vezérl beillesztése az eszköztárba - 1 4 1 3 2
Ezt Ezt a tulajdonság lapot lapot már már mi mi rendeltük a vezérl vezérl höz. höz.
Circ vezérl használat közben
Adatbázis-kezel készítése ActiveX segítségével
Feladat Feladat: Készítsünk egy egy olyan olyan grafikus felület felület alkalmazást, amellyel rugalmasan kezelni kezelni tudjuk tudjuk az az Eaf Eafprojekt tábláit. tábláit. A feladat feladat megoldásához használjunk ActiveX vezérl vezérl ket. ket.
ActiveX vezérl k beillesztése a projektbe - 1
ActiveX vezérl k beillesztése a projektbe - 2
ActiveX vezérl k beillesztése a projektbe - 3
Új ActiveX vezérl k az eszköztárban
Vezérl k elhelyezése az ablakon
Data Control: Tulajdonságok beállítása
DBGrid Control: adatforrás beállítása A táblázatot összekötjük az az IDC_DATA_CONTROL vezérl vezérl ben ben meghatározott adatforrással.
DBGrid Control: M veletek engedélyezése/tiltása
Fordítás/Futtatás
Változók hozzárendelése a vezérl khöz IDC_DATA_CONTROL IDC_GRID_CONTROL
Data Control elrejtése void voidceafview::oninitialupdate() {{ CFormView::OnInitialUpdate(); GetParentFrame()->RecalcLayout(); ResizeParentToFit(); ResizeParentToFit(); m_datacontrol.showwindow(sw_hide); }}
Fordítás/Futtatás
Új gombok elhelyezése IDC_DIAK IDC_FELEV IDC_CSOPORT IDC_GYAKVEZ
Eseménykezel k beillesztése
Eseménykezel k definiálása void voidcactivetablesview::oncsoport() {{ m_datacontrol.setrecordsource("select ** from fromcsoport"); m_datacontrol.refresh(); }}....
Fordítás/Futtatás: Táblacsere tesztelése
Összetett parancs végrehajtása IDC_SQL_EXECUTE IDC_SQL_TEXT
OnSqlExecute() eseménykezel definiálása void voidcactivetablesview::onsqlexecute() {{ UpdateData(); UpdateData(); m_datacontrol.setrecordsource(m_sqltext); m_datacontrol.refresh(); }}
Fordítás/Futtatás select tag.diak_id, concat(diak.nev,'[',diak.azon,']') diak_azon,tag.csoport_id,pont1,pont2,pont3,pont4 from fromtag,diak where tag.diak_id=diak.diak_id and andcsoport_id = 3
Tervek