#include "stdafx.h"
#include "../../../BasicAdmin.h"
#include "FrmAccSearch.h"
IMPLEMENT_DYNAMIC(CFrmAccSearch, CDialog)
CFrmAccSearch::CFrmAccSearch(CWnd* pParent /*=NULL*/)
: CDialog(CFrmAccSearch::IDD, pParent)
{
}
CFrmAccSearch::~CFrmAccSearch()
{
}
BEGIN_MESSAGE_MAP(CFrmAccSearch, CDialog)
ON_BN_CLICKED(IDC_BTN_CANCEL, &CFrmAccSearch::OnBnClickedBtnCancel)
ON_BN_CLICKED(IDC_BTN_OK, &CFrmAccSearch::OnBnClickedBtnOk)
ON_WM_CTLCOLOR()
ON_WM_ERASEBKGND()
ON_NOTIFY(GVN_SELCHANGED, IDC_GRID, OnGridRowChange)
ON_NOTIFY(TVN_SELCHANGED, IDC_TREE_ACC, OnTvnSelchangedTreeAcc)
ON_NOTIFY(TVN_ITEMEXPANDING, IDC_TREE_ACC, OnTvnItemexpandingTreeAcc)
ON_EN_CHANGE(IDC_ED_SEARCH, OnEnChangeEdSearch)
END_MESSAGE_MAP()
void CFrmAccSearch::OnBnClickedBtnCancel()
{
OnCancel();
}
void CFrmAccSearch::OnBnClickedBtnOk()
{
int irow = m_grid.GetSelectedCellRange().GetMinRow();
int id = atoi(m_grid.GetCell(irow, 0)->GetText());
m_treecbo->FindItemByID(id);
OnOK();
// TODO: Add your control notification handler code here
}
HBRUSH CFrmAccSearch::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor)
{
HBRUSH hbr = CDialog::OnCtlColor(pDC, pWnd, nCtlColor);
int nID = pWnd->GetDlgCtrlID();
switch (nID)
{
case LBLSEARCH3:
pDC->SetBkMode(OPAQUE);
pDC->SetBkColor(DarColor());
return (HBRUSH) GetStockObject(NULL_BRUSH);
}
return hbr;
}
BOOL CFrmAccSearch::OnEraseBkgnd(CDC* pDC)
{
CRect rect;
GetClientRect(&rect);
pDC->FillSolidRect(0,0,rect.Width(),rect.Height(),DarColor());
return TRUE;
}
void CFrmAccSearch::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
DDX_Control(pDX, IDC_BTN_OK, BtnOK);
DDX_Control(pDX, IDC_BTN_CANCEL, BtnCancel);
DDX_Control(pDX, IDC_GRID, m_grid);
DDX_Control(pDX, IDC_TREE_ACC, m_treeacc);
DDX_Control(pDX, IDC_ED_SEARCH, EdtSearch);
}
BOOL CFrmAccSearch::OnInitDialog()
{
CDialog::OnInitDialog();
ut.FormatButtonsOKCancel(&BtnOK, &BtnCancel);
ut.FormatGrid(&m_grid);
ut.AccLoadArrayWithParent("ACCOUNTS", "DESCRIPTION");
GridColumns();
LoadGridData();
uttree.pParent = (CTreeParams*)&acc;
uttree.Table = "ACCOUNTS";
uttree.type = 0;
uttree.LoadTree(&m_treeacc);
GridRowColChange(1,0);
return TRUE;
}
void CFrmAccSearch::GridColumns()
{
m_grid.SetColumnCount(3);
m_grid.GetCell(0,0)->SetText("Id");
m_grid.GetCell(0,1)->SetText("Cuenta");
m_grid.GetCell(0,2)->SetText("Direcci�n Completa");
m_grid.SetColumnWidth(0, 0);
m_grid.SetColumnWidth(1, 80);
m_grid.SetColumnWidth(2, 300);
}
void CFrmAccSearch::LoadGridData()
{
m_grid.SetRedraw(FALSE);
int irow = 1;
CString strid;
CppSQLite3Query q = dbAdmin.execQuery("SELECT * FROM ACCOUNTS");
while (!q.eof())
{
m_grid.SetRowCount(irow + 1);
strid.Format("%d", q.getIntField("ID"));
m_grid.GetCell(irow, 0)->SetText(strid);
m_grid.GetCell(irow, 1)->SetText(q.getStringField("DESCRIPTION"));
m_grid.GetCell(irow, 2)->SetText(ut.AccGetArrDescription(q.getIntField("ID"), 0));
irow++;
q.nextRow();
}
m_grid.SetRedraw(TRUE, TRUE);
ut.SelectFirstRow(&m_grid);
}
void CFrmAccSearch::OnGridRowChange(NMHDR *pNotifyStruct, LRESULT* /*pResult*/)
{
NM_GRIDVIEW* pItem = (NM_GRIDVIEW*) pNotifyStruct;
GridRowColChange(pItem->iRow, pItem->iColumn);
}
void CFrmAccSearch::GridRowColChange(int irow, int icol)
{
if (irow <= 0 || icol < 0) return;
int id = atoi(m_grid.GetCell(irow,0)->GetText());
uttree.SelectNodeByID(&m_treeacc,id);
}
void CFrmAccSearch::OnTvnSelchangedTreeAcc(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMTREEVIEW pNMTreeView = reinterpret_cast<LPNMTREEVIEW>(pNMHDR);
// TODO: Add your control notification handler code here
*pResult = 0;
HTREEITEM item=m_treeacc.GetSelectedItem();
if (item==NULL) return;
int id = (DWORD)m_treeacc.GetItemData(item);
int idgrid, irow;
irow = 0;
for (int i=0;i<=m_grid.GetRowCount() - 1;i++)
{
idgrid = atoi(m_grid.GetCell(i, 0)->GetText());
if (id == idgrid)
{
irow = i;
break;
}
}
if (irow == 0) return;
if (m_grid.GetRowHeight(irow) > 0)
{
m_grid.EnsureVisible(irow, 0);
m_grid.SetFocusCell(irow,0);
m_grid.SelectRows(m_grid.GetFocusCell(), 1,1);
}
}
void CFrmAccSearch::OnTvnItemexpandingTreeAcc(NMHDR *pNMHDR, LRESULT *pResult)
{
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
if (pNMTreeView->action == TVE_COLLAPSE)
m_treeacc.SetItemImage(pNMTreeView->itemNew.hItem,10,10);
else
m_treeacc.SetItemImage(pNMTreeView->itemNew.hItem,16,16);
// TODO: Add your control notification handler code here
}
void CFrmAccSearch::OnEnChangeEdSearch()
{
m_grid.SetRedraw(FALSE);
CString strvalidar;
EdtSearch.GetWindowTextA(strvalidar);
for (int i=1;i<m_grid.GetRowCount();i++)
ut.FilterGenerico(strvalidar, &m_grid, i);
m_grid.SetRedraw(TRUE, TRUE);
}