按钮void CDialogC5::OnButton1() {}
我把数据库里的数据读到列表控件中(列表控件以报告方式显示数据)
如:
ID号 时间 数量
100 2011-7-30 20
101 2011-8-21 30
我想搞一个按钮可以把列表控件里的内容打印出来。
求高人指点!!!
我是菜鸟,最好有完整的代码。
5 个解决方案
#1
首先在相应的Update函数中创建列表的内容,代码为
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_list.InsertColumn(0,_T("ID号"),LVCFMT_CENTER,80);
m_list.InsertColumn(1,_T("时间"),LVCFMT_CENTER,100);
m_list.InsertColumn(2,_T("数量LVCFMT_CENTER,100);(后边数字为相应列表的宽度,可根据需要自行设置)
//读取数据库中列表数据(使用的是本地数据库)
pConn = OpenLocalDB();
_RecordsetPtr pPtr;
if (IsOpened(pConn))
{
pPtr=Query(pConn ,L"*",L"aaa");(aaa为数据库中存放数据的表名)
_variant_t bb;
_variant_t cc;
_variant_t dd;(bb cc dd均为定义存放数据变量)
while(!pPtr->GetrsEOF())
{
bb= pPtr->GetCollect ("bbb");
cc= pPtr->GetCollect ("ccc");
dd= pPtr->GetCollect ("ddd");(bbb ccc ddd为数据库中存放相应数据的变量名)
CString b((char*)_bstr_t(bb));
CString c((char*)_bstr_t(cc));
CString d((char*)_bstr_t(dd));
b.TrimRight();
c.TrimRight();
d.TrimRight();
int nCount = m_list.GetItemCount();
CString sIntem;
sIntem.Format(_T("%d"),nCount + 1);
m_list.InsertItem (nCount,sIntem);
m_list.SetItemText (nCount,1,b);
m_list.SetItemText (nCount,2,c);
m_list.SetItemText (nCount,3,d);
pPtr->MoveNext();
if (pPtr != NULL)
CloseRst(pPtr);
CloseConn(pConn);(关闭数据库)
上述程序为读取数据库中数据并添加到列表控件
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_list.InsertColumn(0,_T("ID号"),LVCFMT_CENTER,80);
m_list.InsertColumn(1,_T("时间"),LVCFMT_CENTER,100);
m_list.InsertColumn(2,_T("数量LVCFMT_CENTER,100);(后边数字为相应列表的宽度,可根据需要自行设置)
//读取数据库中列表数据(使用的是本地数据库)
pConn = OpenLocalDB();
_RecordsetPtr pPtr;
if (IsOpened(pConn))
{
pPtr=Query(pConn ,L"*",L"aaa");(aaa为数据库中存放数据的表名)
_variant_t bb;
_variant_t cc;
_variant_t dd;(bb cc dd均为定义存放数据变量)
while(!pPtr->GetrsEOF())
{
bb= pPtr->GetCollect ("bbb");
cc= pPtr->GetCollect ("ccc");
dd= pPtr->GetCollect ("ddd");(bbb ccc ddd为数据库中存放相应数据的变量名)
CString b((char*)_bstr_t(bb));
CString c((char*)_bstr_t(cc));
CString d((char*)_bstr_t(dd));
b.TrimRight();
c.TrimRight();
d.TrimRight();
int nCount = m_list.GetItemCount();
CString sIntem;
sIntem.Format(_T("%d"),nCount + 1);
m_list.InsertItem (nCount,sIntem);
m_list.SetItemText (nCount,1,b);
m_list.SetItemText (nCount,2,c);
m_list.SetItemText (nCount,3,d);
pPtr->MoveNext();
if (pPtr != NULL)
CloseRst(pPtr);
CloseConn(pConn);(关闭数据库)
上述程序为读取数据库中数据并添加到列表控件
#2
void CDialogC5::OnButton1() {}
在这个函数中将update设置为true便可现实数据库中内容
要打印要相应添加打印控件PrintDoocument,设置其相应属性,剩下的代码就简单了,自己写吧
在这个函数中将update设置为true便可现实数据库中内容
要打印要相应添加打印控件PrintDoocument,设置其相应属性,剩下的代码就简单了,自己写吧
#3
我的意思是在打印机里打印出来,我的数据已经在列表控件中显示了。
当我点击OnButton1的时间打印机就打印列表控件里的数据。
二楼的“打印要相应添加打印控件PrintDoocument,设置其相应属性”似乎靠谱,不过还是不会用。。。
那位高人指点一下,最好有详细代码。万分感谢!!
当我点击OnButton1的时间打印机就打印列表控件里的数据。
二楼的“打印要相应添加打印控件PrintDoocument,设置其相应属性”似乎靠谱,不过还是不会用。。。
那位高人指点一下,最好有详细代码。万分感谢!!
#4
楼主会用DC之类的东西吗?
给你一个打印机dc,你可以在上面使用DrawText函数画你的文字。一行行画吧,下面就是打印机DC。接着:
for(int i=0;i<nCopy;i++)
{
//*nResult = m_dlg->PrintPaper();
//if(*nResult==0)
// break;
char szprinter[80];
char *szDevice,*szDriver,*szOutput;
HDC hdcprint; // 定义一个设备环境句柄
//定义一个打印作业
static DOCINFO di={sizeof(DOCINFO),"printer",NULL};
//得到设备字符串存入数组szprinter中
GetProfileString("windows","device",",,,",szprinter,80);
// 将设备字符串分解
if(NULL!=(szDevice=strtok(szprinter,","))&& NULL!=(szDriver=strtok(NULL,","))&& NULL!=(szOutput=strtok(NULL,",")))
{
// 创建一个打印机设备句柄
if((hdcprint=CreateDC(szDriver,szDevice,szOutput,NULL))!=0)
{
int WID = GetDeviceCaps(hdcprint,HORZRES);
int HEG = GetDeviceCaps(hdcprint,VERTRES);
if(StartDoc(hdcprint,&di)>0) //开始执行一个打印作业
{
EndDoc(hdcprint); //结束一个打印作业
}
// 用API函数DeleteDC销毁一个打印机设备句柄
DeleteDC(hdcprint);
*nResult = 2;
return S_OK;
}
else
{
MessageBox("没有默认打印机,或者没有安装打印机!");
*nResult = 1;
return S_OK;
}
}
else
{
*nResult = 0;
}
}
给你一个打印机dc,你可以在上面使用DrawText函数画你的文字。一行行画吧,下面就是打印机DC。接着:
for(int i=0;i<nCopy;i++)
{
//*nResult = m_dlg->PrintPaper();
//if(*nResult==0)
// break;
char szprinter[80];
char *szDevice,*szDriver,*szOutput;
HDC hdcprint; // 定义一个设备环境句柄
//定义一个打印作业
static DOCINFO di={sizeof(DOCINFO),"printer",NULL};
//得到设备字符串存入数组szprinter中
GetProfileString("windows","device",",,,",szprinter,80);
// 将设备字符串分解
if(NULL!=(szDevice=strtok(szprinter,","))&& NULL!=(szDriver=strtok(NULL,","))&& NULL!=(szOutput=strtok(NULL,",")))
{
// 创建一个打印机设备句柄
if((hdcprint=CreateDC(szDriver,szDevice,szOutput,NULL))!=0)
{
int WID = GetDeviceCaps(hdcprint,HORZRES);
int HEG = GetDeviceCaps(hdcprint,VERTRES);
if(StartDoc(hdcprint,&di)>0) //开始执行一个打印作业
{
EndDoc(hdcprint); //结束一个打印作业
}
// 用API函数DeleteDC销毁一个打印机设备句柄
DeleteDC(hdcprint);
*nResult = 2;
return S_OK;
}
else
{
MessageBox("没有默认打印机,或者没有安装打印机!");
*nResult = 1;
return S_OK;
}
}
else
{
*nResult = 0;
}
}
#5
“结束一个打印作业”代码之上那行就是你写字画画的位置。有hdc还有坐标。多好画啊。画去吧。就跟在窗体上画画一样
#1
首先在相应的Update函数中创建列表的内容,代码为
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_list.InsertColumn(0,_T("ID号"),LVCFMT_CENTER,80);
m_list.InsertColumn(1,_T("时间"),LVCFMT_CENTER,100);
m_list.InsertColumn(2,_T("数量LVCFMT_CENTER,100);(后边数字为相应列表的宽度,可根据需要自行设置)
//读取数据库中列表数据(使用的是本地数据库)
pConn = OpenLocalDB();
_RecordsetPtr pPtr;
if (IsOpened(pConn))
{
pPtr=Query(pConn ,L"*",L"aaa");(aaa为数据库中存放数据的表名)
_variant_t bb;
_variant_t cc;
_variant_t dd;(bb cc dd均为定义存放数据变量)
while(!pPtr->GetrsEOF())
{
bb= pPtr->GetCollect ("bbb");
cc= pPtr->GetCollect ("ccc");
dd= pPtr->GetCollect ("ddd");(bbb ccc ddd为数据库中存放相应数据的变量名)
CString b((char*)_bstr_t(bb));
CString c((char*)_bstr_t(cc));
CString d((char*)_bstr_t(dd));
b.TrimRight();
c.TrimRight();
d.TrimRight();
int nCount = m_list.GetItemCount();
CString sIntem;
sIntem.Format(_T("%d"),nCount + 1);
m_list.InsertItem (nCount,sIntem);
m_list.SetItemText (nCount,1,b);
m_list.SetItemText (nCount,2,c);
m_list.SetItemText (nCount,3,d);
pPtr->MoveNext();
if (pPtr != NULL)
CloseRst(pPtr);
CloseConn(pConn);(关闭数据库)
上述程序为读取数据库中数据并添加到列表控件
m_list.SetExtendedStyle(LVS_EX_FULLROWSELECT|LVS_EX_GRIDLINES);
m_list.InsertColumn(0,_T("ID号"),LVCFMT_CENTER,80);
m_list.InsertColumn(1,_T("时间"),LVCFMT_CENTER,100);
m_list.InsertColumn(2,_T("数量LVCFMT_CENTER,100);(后边数字为相应列表的宽度,可根据需要自行设置)
//读取数据库中列表数据(使用的是本地数据库)
pConn = OpenLocalDB();
_RecordsetPtr pPtr;
if (IsOpened(pConn))
{
pPtr=Query(pConn ,L"*",L"aaa");(aaa为数据库中存放数据的表名)
_variant_t bb;
_variant_t cc;
_variant_t dd;(bb cc dd均为定义存放数据变量)
while(!pPtr->GetrsEOF())
{
bb= pPtr->GetCollect ("bbb");
cc= pPtr->GetCollect ("ccc");
dd= pPtr->GetCollect ("ddd");(bbb ccc ddd为数据库中存放相应数据的变量名)
CString b((char*)_bstr_t(bb));
CString c((char*)_bstr_t(cc));
CString d((char*)_bstr_t(dd));
b.TrimRight();
c.TrimRight();
d.TrimRight();
int nCount = m_list.GetItemCount();
CString sIntem;
sIntem.Format(_T("%d"),nCount + 1);
m_list.InsertItem (nCount,sIntem);
m_list.SetItemText (nCount,1,b);
m_list.SetItemText (nCount,2,c);
m_list.SetItemText (nCount,3,d);
pPtr->MoveNext();
if (pPtr != NULL)
CloseRst(pPtr);
CloseConn(pConn);(关闭数据库)
上述程序为读取数据库中数据并添加到列表控件
#2
void CDialogC5::OnButton1() {}
在这个函数中将update设置为true便可现实数据库中内容
要打印要相应添加打印控件PrintDoocument,设置其相应属性,剩下的代码就简单了,自己写吧
在这个函数中将update设置为true便可现实数据库中内容
要打印要相应添加打印控件PrintDoocument,设置其相应属性,剩下的代码就简单了,自己写吧
#3
我的意思是在打印机里打印出来,我的数据已经在列表控件中显示了。
当我点击OnButton1的时间打印机就打印列表控件里的数据。
二楼的“打印要相应添加打印控件PrintDoocument,设置其相应属性”似乎靠谱,不过还是不会用。。。
那位高人指点一下,最好有详细代码。万分感谢!!
当我点击OnButton1的时间打印机就打印列表控件里的数据。
二楼的“打印要相应添加打印控件PrintDoocument,设置其相应属性”似乎靠谱,不过还是不会用。。。
那位高人指点一下,最好有详细代码。万分感谢!!
#4
楼主会用DC之类的东西吗?
给你一个打印机dc,你可以在上面使用DrawText函数画你的文字。一行行画吧,下面就是打印机DC。接着:
for(int i=0;i<nCopy;i++)
{
//*nResult = m_dlg->PrintPaper();
//if(*nResult==0)
// break;
char szprinter[80];
char *szDevice,*szDriver,*szOutput;
HDC hdcprint; // 定义一个设备环境句柄
//定义一个打印作业
static DOCINFO di={sizeof(DOCINFO),"printer",NULL};
//得到设备字符串存入数组szprinter中
GetProfileString("windows","device",",,,",szprinter,80);
// 将设备字符串分解
if(NULL!=(szDevice=strtok(szprinter,","))&& NULL!=(szDriver=strtok(NULL,","))&& NULL!=(szOutput=strtok(NULL,",")))
{
// 创建一个打印机设备句柄
if((hdcprint=CreateDC(szDriver,szDevice,szOutput,NULL))!=0)
{
int WID = GetDeviceCaps(hdcprint,HORZRES);
int HEG = GetDeviceCaps(hdcprint,VERTRES);
if(StartDoc(hdcprint,&di)>0) //开始执行一个打印作业
{
EndDoc(hdcprint); //结束一个打印作业
}
// 用API函数DeleteDC销毁一个打印机设备句柄
DeleteDC(hdcprint);
*nResult = 2;
return S_OK;
}
else
{
MessageBox("没有默认打印机,或者没有安装打印机!");
*nResult = 1;
return S_OK;
}
}
else
{
*nResult = 0;
}
}
给你一个打印机dc,你可以在上面使用DrawText函数画你的文字。一行行画吧,下面就是打印机DC。接着:
for(int i=0;i<nCopy;i++)
{
//*nResult = m_dlg->PrintPaper();
//if(*nResult==0)
// break;
char szprinter[80];
char *szDevice,*szDriver,*szOutput;
HDC hdcprint; // 定义一个设备环境句柄
//定义一个打印作业
static DOCINFO di={sizeof(DOCINFO),"printer",NULL};
//得到设备字符串存入数组szprinter中
GetProfileString("windows","device",",,,",szprinter,80);
// 将设备字符串分解
if(NULL!=(szDevice=strtok(szprinter,","))&& NULL!=(szDriver=strtok(NULL,","))&& NULL!=(szOutput=strtok(NULL,",")))
{
// 创建一个打印机设备句柄
if((hdcprint=CreateDC(szDriver,szDevice,szOutput,NULL))!=0)
{
int WID = GetDeviceCaps(hdcprint,HORZRES);
int HEG = GetDeviceCaps(hdcprint,VERTRES);
if(StartDoc(hdcprint,&di)>0) //开始执行一个打印作业
{
EndDoc(hdcprint); //结束一个打印作业
}
// 用API函数DeleteDC销毁一个打印机设备句柄
DeleteDC(hdcprint);
*nResult = 2;
return S_OK;
}
else
{
MessageBox("没有默认打印机,或者没有安装打印机!");
*nResult = 1;
return S_OK;
}
}
else
{
*nResult = 0;
}
}
#5
“结束一个打印作业”代码之上那行就是你写字画画的位置。有hdc还有坐标。多好画啊。画去吧。就跟在窗体上画画一样