Kurz6 - Kapitola10

17. června 2007 v 10:36 | http://www.sweb.cz/kurz_evt/ |  Programování pro WinCE

8.10 Dokončení programu

K dokončení programu již zbývá doplnit funkce pro zrušení a editaci položky. To byste jistě dokázali sami. Pro kontrolu a inspiraci zde uvádím:
void CPhoNumbsDlg::OnClear() 
{
sqlite3 *db;
int rc;
CString pom;
char *zErrMsg = NULL;

// Ukazatel na pohled listu a ziskani dat polozky
CListView* pView=(CListView*)GetDlgItem(IDC_LIST1);
int i=pView->GetListCtrl().GetSelectionMark();
if(i<0) return;
// Vytvorim SQL prikaz pro zruseni polozky
pom= _T("DELETE FROM TelNumbers WHERE Surname = '");
pom+= pView->GetListCtrl().GetItemText(i,0);
pom+= _T("' AND Name = '");
pom+= pView->GetListCtrl().GetItemText(i,1);
pom+= _T("' AND Number = '");
pom+= pView->GetListCtrl().GetItemText(i,2);
pom+= _T("'");
// Ujistim se, ze uzivatel chce opravdu polozku zrusit
if(MessageBox(_T("Are you sure?"),_T("Delete?"),MB_YESNO) != IDYES) return;
// Pokusim se danou polozku zrusit
rc = sqlite3_open("TelNumbs.tnb", &db);
if( rc ){
MessageBox(_T("Can't open database:"));
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, CharStrCZ(pom), NULL, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
MessageBox(_T("SQL DELETE Error!"));
sqlite3_free(zErrMsg);
}
sqlite3_close(db);

FillListView();
}

void CPhoNumbsDlg::OnEdit()
{
sqlite3 *db;
int rc;
char *zErrMsg = NULL;
CString pomdel,pom,pomcat,jmeno,prijm,cislo;

CNewItem dlg;

// Ukazatel na pohled listu a ziskani dat polozky
CListView* pView=(CListView*)GetDlgItem(IDC_LIST1);
int i=pView->GetListCtrl().GetSelectionMark();
if(i<0) return;
// Ziskam puvodni udaje polozky
prijm=pView->GetListCtrl().GetItemText(i,0);
jmeno=pView->GetListCtrl().GetItemText(i,1);
cislo=pView->GetListCtrl().GetItemText(i,2);
// Vytvorim SQL prikaz pro zruseni polozky
pomdel= _T("DELETE FROM TelNumbers WHERE Surname = '");
pomdel+= prijm;
pomdel+= _T("' AND Name = '");
pomdel+= jmeno;
pomdel+= _T("' AND Number = '");
pomdel+= cislo;
pomdel+= _T("'");

dlg.m_Surname=prijm;
dlg.m_Name=jmeno;
dlg.m_Phone=cislo;
if(dlg.DoModal() != IDOK) return;
pom="INSERT INTO TelNumbers VALUES ('";
pom+=dlg.m_Surname;
pom+="','";
pom+=dlg.m_Name;
pom+="','";
pom+=dlg.m_Phone;
pomcat.Format(_T("',%d)"),dlg.m_Category);
pom+=pomcat;

// Pokusim se danou polozku zrusit
rc = sqlite3_open("TelNumbs.tnb", &db);
if( rc ){
MessageBox(_T("Can't open database:"));
sqlite3_close(db);
exit(1);
}
rc = sqlite3_exec(db, CharStrCZ(pomdel), NULL, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
MessageBox(_T("SQL DELETE Error!"));
sqlite3_free(zErrMsg);
}
rc = sqlite3_exec(db, CharStrCZ(pom), NULL, 0, &zErrMsg);
if( rc!=SQLITE_OK ){
MessageBox(_T("SQL INSERT Error!"));
sqlite3_free(zErrMsg);
}
sqlite3_close(db);

FillListView();
}
No, a tím by mělo být cíle dosaženo. Pokud si myslíte, že ne, můžete pokračovat a doplňovat další vlastnosti a funkce ...

Co bychom si měli z této lekce zapamatovat?

  • Když se něco nedaří, odložte to. Něco jiného vám může jít hezky od ruky.
  • Jsou ovšem dny (tzv. "den blbec"), kdy je lépe na nic nesahat :-).
 

Buď první, kdo ohodnotí tento článek.

Nový komentář

Přihlásit se
  Ještě nemáte vlastní web? Můžete si jej zdarma založit na Blog.cz.