Esempio n. 1
0
int InitHeader(CListCtrl& list, const CString& header, int first)
{
   int beg, end, nbCol, fmt, field, len;
   HDITEM hi;

   if (first == 0) {
      // Delete the old columns
      int nbCol = list.GetHeaderCtrl()->GetItemCount();
      while (--nbCol >= 0) list.DeleteColumn(0);
   }

   len = header.GetLength();
   hi.mask = HDI_LPARAM|HDI_IMAGE;
   hi.iImage = 0;

   // Loop for all columns (a field in the string for each)
   for (beg = nbCol = 0; beg < len; nbCol++, beg = end + 1) {
      // It's not '\n' at the last field
      if ( (end = header.Find(_TCHAR('\n'), beg)) < 0 ) end = len;

      if (end > beg) {
         // Read the data type
         switch ( header.GetAt(beg) ) {
         case _TCHAR('T'): hi.lParam =             STI_TEXT,   beg++; break;
         case _TCHAR('N'): hi.lParam = STI_REVERSE|STI_NUMBER, beg++; break;
         case _TCHAR('H'): hi.lParam = STI_REVERSE|STI_HEXADEC,beg++; break;
         case _TCHAR('A'): hi.lParam = STI_REVERSE|STI_ABSOLU ,beg++; break;
         default : hi.lParam = 0;   // sort disable
         }
      } else hi.lParam = 0;         // sort disable

      if (end > beg) {
         // Read the alignment of the column and skip this char
         switch ( header.GetAt(beg) ) {
         case _TCHAR('L'): fmt = LVCFMT_LEFT,   beg++; break;
         case _TCHAR('C'): fmt = LVCFMT_CENTER, beg++; break;
         case _TCHAR('R'): fmt = LVCFMT_RIGHT,  beg++; break;
         default : fmt = LVCFMT_LEFT;
         }
      } else fmt = LVCFMT_LEFT;

      if ( (field = end - beg) >= 0 ) {
         // Inserts a new column in the list view
         list.InsertColumn(first + nbCol, header.Mid(beg, field), fmt);
         list.GetHeaderCtrl()->SetItem(first + nbCol, &hi);
      }
   }

   // Set reasonable widths for our columns
   for (int i = 0; i < nbCol; i++)
      list.SetColumnWidth(first + i, LVSCW_AUTOSIZE_USEHEADER);

   return first + nbCol;
}
Esempio n. 2
0
void GeometryListView::Update() 
// Rebuild the list of geometry resources.
{
//	CPropertyPage::OnUpdate(pSender, lHint, pHint);

	// TODO: Add extra initialization here
	CTerrainDoc*	doc = GetDocument();
	Geometry*	g = doc->GetGeometryList();
	int	GeometryCount = doc->GetGeometryCount();
	CListCtrl*	list = &m_ListControl /* (CListCtrl*) GetDlgItem(IDC_GEOMETRYLIST) */;
	if (list->m_hWnd == NULL) return;

	// Setup the column headings.
	while (list->DeleteColumn(0)) ;

	LV_COLUMN	col;
	col.mask = LVCF_FMT | LVCF_SUBITEM | LVCF_TEXT | LVCF_WIDTH;
	col.fmt = LVCFMT_LEFT;

	// Name.
	col.pszText = "Name";
	col.iSubItem = 0;
	col.cx = 75;
	list->InsertColumn(0, &col);

	// Filename.
	col.iSubItem = 1;
	col.pszText = "Filename";
	col.cx = 100;
	list->InsertColumn(1, &col);

	// Comment.
	col.iSubItem = 2;
	col.pszText = "Comment";
	col.cx = 170;
	list->InsertColumn(2, &col);

	// Set the list items.
	list->DeleteAllItems();
	list->SetItemCount(GeometryCount);
	for (int i = 0; i < GeometryCount; i++, g = g->Next) {
		if (g == NULL) break;

		int index = list->InsertItem(i, g->GetName());
		list->SetItemText(index, 1, g->GetFilename());
		list->SetItemText(index, 2, g->GetComment());
		list->SetItemData(index, i);
	}
}
// @pymethod int|PyCListCtrl|DeleteColumn|Deletes the specified column from the list control.
PyObject *PyCListCtrl_DeleteColumn( PyObject *self, PyObject *args )
{
	int col;
	if (!PyArg_ParseTuple( args, "i:DeleteColumn", 
	                   &col)) // @pyparm int|first||Index of the column to be removed.
		return NULL;
	CListCtrl *pList = GetListCtrl(self);
	if (!pList) return NULL;
	GUI_BGN_SAVE;
	BOOL ok = pList->DeleteColumn(col);
	GUI_END_SAVE;
	if (!ok)
		RETURN_ERR("DeleteColumn failed");
	RETURN_NONE;
}
Esempio n. 4
0
void COpenExcelDlg::Lin_InportExcelToList(CString m_FilePath,CListCtrl &m_List)
{
	//先删除列表内容//
	m_List.DeleteAllItems();
	while(m_List.GetHeaderCtrl()->GetItemCount()>0)
	{
		m_List.DeleteColumn(0);
	}
	//导入
	CApplication app;
	CWorkbook book;
	CWorkbooks books;
	CWorksheet sheet;
	CWorksheets sheets;
	CRange range;
	LPDISPATCH lpDisp;
	//定义变量//
	COleVariant covOptional((long)
		DISP_E_PARAMNOTFOUND,VT_ERROR);
	if (!app.CreateDispatch(_T("Excel.Application")))
	{
		this->MessageBox(_T("无法创建Excel应用"));
		return;
	}
	books = app.get_Workbooks();
	//打开Excel,其中m_FilePath为Excel表的路径名//
	lpDisp = books.Open(m_FilePath,covOptional
		,covOptional,covOptional,covOptional
		,covOptional,covOptional,covOptional
		,covOptional,covOptional,covOptional
		,covOptional,covOptional,covOptional
		,covOptional);
	book.AttachDispatch(lpDisp);
	sheets = book.get_Worksheets();
	sheet = sheets.get_Item(COleVariant((short)1));
	CStringArray m_HeadName;
	for (int i=1;i<26;i++)
	{
		CString m_pos = Lin_GetEnglishCharacter(i);
		m_pos = m_pos + _T("1");
		range = sheet.get_Range(COleVariant(m_pos),COleVariant(m_pos));
		//获得单元格的内容
		COleVariant rValue;
		rValue = COleVariant(range.get_Value2());
		//转换成宽字符//
		rValue.ChangeType(VT_BSTR);
		//转换格式,并输出//
		CString m_content = CString(rValue.bstrVal);
		if (m_content!=_T(""))
		{
			m_HeadName.Add(m_content);
		}
	}
	Lin_InitList(m_List,m_HeadName);	
	CStringArray m_ContentArr;
	for (int ItemNum = 0;ItemNum<10000;ItemNum++)
	{
		for (int j=1;j<m_List.GetHeaderCtrl()->GetItemCount();j++)
		{
			CString m_pos = Lin_GetEnglishCharacter(j);
			CString m_Itempos;
			m_Itempos.Format(_T("%d"),ItemNum+2);
			CString m_str = m_pos+m_Itempos;
			range = sheet.get_Range(COleVariant(m_str),COleVariant(m_str));
			//获得单元格的内容
			COleVariant rValue;
			rValue = COleVariant(range.get_Value2());
			//转换成宽字符//
			rValue.ChangeType(VT_BSTR);
			//转换格式,并输出//
			CString m_content = CString(rValue.bstrVal);
			m_ContentArr.Add(m_content);
		}
		if (m_ContentArr.GetAt(0)!=_T(""))
		{
			Lin_InsertList(m_List,m_ContentArr);
			m_ContentArr.RemoveAll();
		}
		else{
			break;
		}
	}
	book.put_Saved(TRUE);
	app.Quit();

}
Esempio n. 5
0
void CfoodTrackView::FilterClass()
{
	CDlgFilterClass dlg;
	if(dlg.DoModal()==IDCANCEL)
		return;
	CListCtrl *pListCtrl;
	pListCtrl = &this->GetListCtrl(); 
	pListCtrl->DeleteAllItems();
	while(pListCtrl->DeleteColumn(0)){}
	
	//LV_ITEM lvitem;
	CStudent *pStu;
	CItem *pItem;
	CString sTmp;
	CClass *pClass;
	int i=0,iPos=0,j=0;
	CfoodTrackDoc *pDoc=this->GetDocument();
	
	pListCtrl->InsertColumn(0,"*",LVCFMT_LEFT,30,-1);
	pListCtrl->InsertColumn(1,"日期",LVCFMT_LEFT,80,-1);
	pListCtrl->InsertColumn(2,"时间",LVCFMT_LEFT,40,-1);
	pListCtrl->InsertColumn(3,"车号",LVCFMT_LEFT,80,-1);
	pListCtrl->InsertColumn(4,"教练",LVCFMT_LEFT,50,-1);
	pListCtrl->InsertColumn(5,"姓名",LVCFMT_LEFT,50,-1);
	pListCtrl->InsertColumn(6,"性别",LVCFMT_LEFT,40,-1);
	pListCtrl->InsertColumn(7,"身份证",LVCFMT_LEFT,100,-1);
	pListCtrl->InsertColumn(8,"联系地址",LVCFMT_LEFT,110,-1);
	pListCtrl->InsertColumn(9,"电话",LVCFMT_LEFT,80,-1);		
	pListCtrl->InsertColumn(10,"上车时间",LVCFMT_LEFT,70,-1);
	pListCtrl->InsertColumn(11,"场考时间",LVCFMT_LEFT,70,-1);
	pListCtrl->InsertColumn(12,"路考时间",LVCFMT_LEFT,70,-1);
	pListCtrl->InsertColumn(13,"考试类型",LVCFMT_LEFT,70,-1);
	pListCtrl->InsertColumn(14,"发证日期",LVCFMT_LEFT,70,-1);
	if(pDoc->ReadClasss(dlg.m_tmStart,dlg.m_tmEnd,dlg.m_sAutoNo,dlg.m_sTeacher)<=0)
		return;
	for(i=0;i<pDoc->m_arrClass.GetSize();i++)
	{   pClass = pDoc->m_arrClass[i]; 
	for(j=0;j<pClass->m_arrStudent.GetSize();j++)
	{
		pStu = pClass->m_arrStudent[j];
		sTmp.Format("%d",pListCtrl->GetItemCount()+1);
		iPos = pListCtrl->InsertItem(pListCtrl->GetItemCount(),sTmp,0);
		sTmp.Format("%d-%d-%d",pClass->m_F_Date.GetYear(),pClass->m_F_Date.GetMonth(),pClass->m_F_Date.GetDay());
		pListCtrl->SetItemText(iPos,1,sTmp);
		if(pClass->m_F_NoonID==0)
			sTmp = "上午";
		else
			sTmp = "下午";
		pListCtrl->SetItemText(iPos,2,sTmp);
		pListCtrl->SetItemText(iPos,3,pClass->m_F_AutoNo);
		pListCtrl->SetItemText(iPos,4,pClass->m_F_Teacher);
		pListCtrl->SetItemText(iPos,5,pStu->m_F_ItemName);
		pListCtrl->SetItemText(iPos,6,pStu->m_F_Sex);
		pListCtrl->SetItemText(iPos,7,pStu->m_F_SN);
		pListCtrl->SetItemText(iPos,8,pStu->m_F_Address);
		pListCtrl->SetItemText(iPos,9,pStu->m_F_Tel);
		//*/日期/时间/车号/教练/姓名/性别/身份证/联系地址/电话/上车时间
		//场考时间/路考时间/考试类型/发证日期
		if(pStu->m_tmUpAuto>0)
		{	
			sTmp.Format("%d-%d-%d",pStu->m_tmUpAuto.GetYear(),pStu->m_tmUpAuto.GetMonth(),pStu->m_tmUpAuto.GetDay());
			pListCtrl->SetItemText(iPos,10,sTmp);
		}
		if(pStu->m_tmExamField>0)
		{
			sTmp.Format("%d-%d-%d",pStu->m_tmExamField.GetYear(),pStu->m_tmExamField.GetMonth(),pStu->m_tmExamField.GetDay());
			pListCtrl->SetItemText(iPos,11,sTmp);
		}
		if(pStu->m_tmExamRoad>0)
		{
			sTmp.Format("%d-%d-%d",pStu->m_tmExamRoad.GetYear(),pStu->m_tmExamRoad.GetMonth(),pStu->m_tmExamRoad.GetDay());
			pListCtrl->SetItemText(iPos,12,sTmp);
		}
		pItem = pDoc->GetItemByID(&pDoc->m_arrExamType,pStu->m_nExamTypeID); 
		if(pItem)
			pListCtrl->SetItemText(iPos,13,pItem->m_F_ItemName); 
		if(pStu->m_tmEnd>0)
		{
			sTmp.Format("%d-%d-%d",pStu->m_tmEnd.GetYear(),pStu->m_tmEnd.GetMonth(),pStu->m_tmEnd.GetDay());
			pListCtrl->SetItemText(iPos,14,sTmp);
		}
		pListCtrl->SetItemData(iPos,pClass->m_F_ID);
	}
	}
	
}
Esempio n. 6
0
void CfoodTrackView::OnViewRefresh() 
{
	// TODO: Add your command handler code here
	CListCtrl *pListCtrl;
	pListCtrl = &this->GetListCtrl(); 
	pListCtrl->DeleteAllItems();
	while(pListCtrl->DeleteColumn(0)){}

	//LV_ITEM lvitem;
	CStudent *pStu;
	CItem *pItem;
	CString sTmp;
	CClass *pClass;
	int i=0,iPos=0,j=0;
	CfoodTrackDoc *pDoc=this->GetDocument();
	switch(m_nDataType)
	{
	case dtStudent:
		pDoc->FillStudentsToListctrl(pListCtrl,_T(""),_T("")); 
		break;
	case dtClass:
		pListCtrl->InsertColumn(0,"*",LVCFMT_LEFT,30,-1);
		pListCtrl->InsertColumn(1,"日期",LVCFMT_LEFT,80,-1);
		pListCtrl->InsertColumn(2,"时间",LVCFMT_LEFT,40,-1);
		pListCtrl->InsertColumn(3,"车号",LVCFMT_LEFT,80,-1);
		pListCtrl->InsertColumn(4,"教练",LVCFMT_LEFT,50,-1);
		pListCtrl->InsertColumn(5,"姓名",LVCFMT_LEFT,50,-1);
		pListCtrl->InsertColumn(6,"性别",LVCFMT_LEFT,40,-1);
		pListCtrl->InsertColumn(7,"身份证",LVCFMT_LEFT,100,-1);
		pListCtrl->InsertColumn(8,"联系地址",LVCFMT_LEFT,110,-1);
		pListCtrl->InsertColumn(9,"电话",LVCFMT_LEFT,80,-1);		
		pListCtrl->InsertColumn(10,"上车时间",LVCFMT_LEFT,70,-1);
		pListCtrl->InsertColumn(11,"场考时间",LVCFMT_LEFT,70,-1);
		pListCtrl->InsertColumn(12,"路考时间",LVCFMT_LEFT,70,-1);
		pListCtrl->InsertColumn(13,"考试类型",LVCFMT_LEFT,70,-1);
		pListCtrl->InsertColumn(14,"发证日期",LVCFMT_LEFT,70,-1);
		if(pDoc->ReadClasss(0,0,_T(""),_T(""))<=0)
			return;
		for(i=0;i<pDoc->m_arrClass.GetSize();i++)
		{   pClass = pDoc->m_arrClass[i]; 
			for(j=0;j<pClass->m_arrStudent.GetSize();j++)
			{
				pStu = pClass->m_arrStudent[j];
				sTmp.Format("%d",pListCtrl->GetItemCount()+1);
				iPos = pListCtrl->InsertItem(pListCtrl->GetItemCount(),sTmp,0);
				sTmp.Format("%d-%d-%d",pClass->m_F_Date.GetYear(),pClass->m_F_Date.GetMonth(),pClass->m_F_Date.GetDay());
				pListCtrl->SetItemText(iPos,1,sTmp);
				if(pClass->m_F_NoonID==0)
					sTmp = "上午";
				else
					sTmp = "下午";
				pListCtrl->SetItemText(iPos,2,sTmp);
				pListCtrl->SetItemText(iPos,3,pClass->m_F_AutoNo);
				pListCtrl->SetItemText(iPos,4,pClass->m_F_Teacher);
				pListCtrl->SetItemText(iPos,5,pStu->m_F_ItemName);
				pListCtrl->SetItemText(iPos,6,pStu->m_F_Sex);
				pListCtrl->SetItemText(iPos,7,pStu->m_F_SN);
				pListCtrl->SetItemText(iPos,8,pStu->m_F_Address);
				pListCtrl->SetItemText(iPos,9,pStu->m_F_Tel);
			//*/日期/时间/车号/教练/姓名/性别/身份证/联系地址/电话/上车时间
			//场考时间/路考时间/考试类型/发证日期
				if(pStu->m_tmUpAuto>0)
				{	
					sTmp.Format("%d-%d-%d",pStu->m_tmUpAuto.GetYear(),pStu->m_tmUpAuto.GetMonth(),pStu->m_tmUpAuto.GetDay());
					pListCtrl->SetItemText(iPos,10,sTmp);
				}
				if(pStu->m_tmExamField>0)
				{
					sTmp.Format("%d-%d-%d",pStu->m_tmExamField.GetYear(),pStu->m_tmExamField.GetMonth(),pStu->m_tmExamField.GetDay());
					pListCtrl->SetItemText(iPos,11,sTmp);
				}
				if(pStu->m_tmExamRoad>0)
				{
					sTmp.Format("%d-%d-%d",pStu->m_tmExamRoad.GetYear(),pStu->m_tmExamRoad.GetMonth(),pStu->m_tmExamRoad.GetDay());
					pListCtrl->SetItemText(iPos,12,sTmp);
				}
				pItem = pDoc->GetItemByID(&pDoc->m_arrExamType,pStu->m_nExamTypeID); 
				if(pItem)
					pListCtrl->SetItemText(iPos,13,pItem->m_F_ItemName); 
				if(pStu->m_tmEnd>0)
				{
					sTmp.Format("%d-%d-%d",pStu->m_tmEnd.GetYear(),pStu->m_tmEnd.GetMonth(),pStu->m_tmEnd.GetDay());
					pListCtrl->SetItemText(iPos,14,sTmp);
				}
				pListCtrl->SetItemData(iPos,pClass->m_F_ID);
			}
		}
		break;
	default:
		break;
	}
}
/////////////////////////////////////////////////////////////////////////////
// CLryEDBQryView message handlers
void CLryEDBQryView::FillList()
{
	int iStrLen = 0;
	int i		= 0;
	_variant_t  str;
	CStringArray ColNameArray;
	BeginWaitCursor() ;
	try
	{
		CLryEDBQryDoc* pDoc  = (CLryEDBQryDoc*)GetDocument();
		_RecordsetPtr pRs = pDoc->Rs;
			//得到所有字段名称
		GetAllFieldName(pRs,&ColNameArray);
		
		CListCtrl * ListCtrl = (CListCtrl  *)&GetListCtrl(); 
		ListCtrl->SetRedraw(FALSE);
		//清除所有数据
		
		ListCtrl->DeleteAllItems();
		//清除所有标题
		do
		{
			ListCtrl->DeleteColumn(0);
		}
		while(ListCtrl->GetHeaderCtrl()->GetItemCount()>0); 
		//写字段标题
		for(i=ColNameArray.GetSize()-1;i>=0;i--)
		{
			CDC *pDC = GetDC();
			iStrLen	= pDC->GetTextExtent(ColNameArray.GetAt(i)).cx*2;				
			ListCtrl->InsertColumn(0,ColNameArray.GetAt(i),LVCFMT_CENTER,iStrLen ,-1);
			ReleaseDC(pDC);	
		}
		//
		LONG RecordCount = 0;
		RecordCount = pRs->GetRecordCount();
		ListCtrl->SetItemCount(RecordCount);

		if(RecordCount>0)
		{
			if(!pRs->adoEOF)
				pRs->MoveLast();
				
			while(!pRs->BOF)
			{		
				for(i=0;i<pRs->Fields->Count;i++)
				{
					str = pRs->GetCollect((_bstr_t)ColNameArray.GetAt(i));
					if(i==0)
						ListCtrl->InsertItem(0,VariantToStr(str));
					else
						ListCtrl->SetItemText(0,i,VariantToStr(str));
				}
				pRs->MovePrevious();
			}  
			pDoc->MoveFirst();
		}
		ListCtrl->SetRedraw(TRUE); 
		pDoc->UpdateAllViews(this);
	}
	catch(_com_error &e)
	{
		dump_com_error(e);
	}
	EndWaitCursor();
}