📄 list2.cpp
字号:
// List2.cpp : implementation file
//
#include "stdafx.h"
#include "List2.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CList2
CList2::CList2()
{
}
CList2::~CList2()
{
}
BEGIN_MESSAGE_MAP(CList2, CListCtrl)
//{{AFX_MSG_MAP(CList2)
ON_WM_LBUTTONDBLCLK()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CList2 message handlers
void CList2::SetField(int nColumns,FIELD *pField,CDaoRecordset *pSet)
{
m_nColumns=nColumns;
for (int i=0;i<nColumns;i++)
m_fdValue[i]=pField[i];
m_pSet=pSet;
}
void CList2::SetField(int nColumns,FIELD2 *pField,CDaoRecordset *pSet)
{
CRect rc;
GetClientRect(rc);
m_nAvr=rc.Width()/nColumns;
m_nColumns=nColumns;
for (int i=0;i<nColumns;i++)
{
m_fdValue[i].lpCaption=pField[i].lpCaption;
m_fdValue[i].lpName=pField[i].lpName;
m_fdValue[i].nWidth=m_nAvr;
}
m_pSet=pSet;
}
void CList2::SetWidth(int *nWidth,int nFrom,int nTo)
{
for (int i=nFrom;i<=nTo;i++)
SetColumnWidth(i,nWidth[i-nFrom]*m_nAvr);
}
void CList2::SetWidth(double *nWidth)
{
for (int i=0;i<m_nColumns;i++)
SetColumnWidth(i,int(nWidth[i]*m_nAvr));
}
void CList2::SetHeader()
{
for (int i=0;i<m_nColumns;i++)
InsertColumn(i,m_fdValue[i].lpCaption,LVCFMT_CENTER,m_fdValue[i].nWidth);
DWORD dwStyle=GetStyle();
dwStyle|=LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT;
SetExtendedStyle(dwStyle);
}
CString CList2::VariantToString(COleVariant vValue)
{
CString strResult;
COleDateTime tmTemp;
switch (vValue.vt)
{
case VT_BSTR:
strResult=(LPCTSTR)vValue.bstrVal;
break;
case VT_BOOL:
strResult=vValue.iVal?"是":"否";
break;
case VT_I2:
strResult.Format("%d",vValue.iVal);
break;
case VT_I4:
strResult.Format("%d",vValue.lVal);
break;
case VT_DATE:
tmTemp=vValue;
strResult=tmTemp.Format(VAR_DATEVALUEONLY);
if (strResult.GetLength()==0)
strResult=tmTemp.Format(VAR_TIMEVALUEONLY);
break;
default:
strResult="";
}
return strResult;
}
void CList2::Refresh()
{
DeleteAllItems();
m_pSet->Requery();
COleVariant vValue;
int nItem=0;
while (!m_pSet->IsEOF())
{
for (int i=0;i<m_nColumns;i++)
{
m_pSet->GetFieldValue(m_fdValue[i].lpName,vValue);
if (i==0)
InsertItem(nItem,VariantToString(vValue));
else
SetItemText(nItem,i,VariantToString(vValue));
}
nItem++;
m_pSet->MoveNext();
}
}
void CList2::OnLButtonDblClk(UINT nFlags, CPoint point)
{
LVHITTESTINFO *pHitTestInfo=new LVHITTESTINFO;
pHitTestInfo->pt=point;
HitTest(pHitTestInfo);
if (pHitTestInfo->flags==LVHT_ONITEM||pHitTestInfo->flags==LVHT_ONITEMLABEL)
{
m_strID=GetItemText(pHitTestInfo->iItem,0);
GetParent()->SendMessage(WM_LIST2DBLCLICK,atoi(m_strID));
//MessageBox(m_strID);
}
CListCtrl::OnLButtonDblClk(nFlags, point);
}
void CList2::Init()
{
SetHeader();
Refresh();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -