55上位机VC MFC编辑框写入内容到列表选择框
55上位机VC MFC编辑框写入内容到列表选择框
功能展示
在编辑框输入文件,进行查找操作时,如果相同内容过多,一一的输入内容查找,显得非常麻烦,如果用户仅输入一次,我们就将全部相似内容都罗列出来供用户选择,就会十分方便和人性化,我们当前例程就来实现这功能,效果如图 要点提示 用户往编辑框每输入一个数据时都会触发一个消息EN_CHANGE,比如输入了数字0,字母o,中文啊,系统都会发EN_CHANGE消息,所以我们只要处理这个消息便可以方便实现对用户输入内容的查找
实现功能 1.新建基于对话框的应用程序 2.拖拽一编辑框和列表框控件并关联变量CListCtrl m_List;CEdit m_Edit;并初始化控件 m_List.ModifyStyle(0L,LVS_REPORT); m_List.ModifyStyle(0L,LVS_SHOWSELALWAYS); m_List.ModifyStyle(0L,LVS_NOSORTHEADER); m_List.SetExtendedStyle(LVS_EX_GRIDLINES); m_List.InsertColumn(0,"网站名"); m_List.InsertColumn(1,"网站类型"); m_List.InsertColumn(2,"网址");
m_List.SetColumnWidth(0,100); m_List.SetColumnWidth(1,100); m_List.SetColumnWidth(2,300); 3.实现数据库文件的加载:先复制我们例程的数据库文件到工程根目录;//导入 ADO动态链接库msado15.dll #import "c:\Program Files\CommonFiles\System\ado\msado15.dll" no_namespace rename("EOF","adoEOF") 再添加几个变量用于数据库文件的操作private://数据库操作变量 _ConnectionPtr m_pConnection; _RecordsetPtrm_pRecordset; CString xm,xb,csrq,gzdw,yddh,gddh ; 4.双击列表控件,添加函数实现EN_CHANGE消息的处理 CString sText; m_Edit.GetWindowText(sText); m_List.DeleteAllItems(); if(!sText.IsEmpty()){ SetDataBase(sText); } SetDataBase(sText()是我们自定义的函数用来实现数据库文件的加载的设置列表框内容
- void CGkbc8Dlg::SetDataBase(CString sql)
- {
- ::CoInitialize(NULL);
- m_pConnection=NULL;
- m_pConnection.CreateInstance(__uuidof(Connection));
- m_pConnection->ConnectionString="uid=;pwd=;DRIVER={Microsoft Access Driver (*.mdb)};DBQ=mrdb.mdb;";
- m_pConnection->Open(L"",L"",L"",adCmdUnspecified);
- CString text;
- text.Format("select * from info where xm like '%s%%'",sql);
- m_pRecordset=m_pConnection->Execute((_bstr_t)text,NULL,adCmdText);
- int i=0;
- while(!m_pRecordset->adoEOF)
- {
- xm=(char*)(_bstr_t)m_pRecordset->GetCollect("xm");
- xb=(char*)(_bstr_t)m_pRecordset->GetCollect("xb");
- csrq=(char*)(_bstr_t)m_pRecordset->GetCollect("csrq");
- gzdw=(char*)(_bstr_t)m_pRecordset->GetCollect("gzdw");
- yddh=(char*)(_bstr_t)m_pRecordset->GetCollect("yddh");
- gddh=(char*)(_bstr_t)m_pRecordset->GetCollect("gddh");
- m_List.InsertItem(i,"");
- m_List.SetItemText(i,0,xm);
- m_List.SetItemText(i,1,xb);
- m_List.SetItemText(i,2,csrq);
- m_List.SetItemText(i,3,gzdw);
- m_List.SetItemText(i,4,yddh);
- m_List.SetItemText(i,5,gddh);
- i+=1;
- m_pRecordset->MoveNext();
- }
- m_pRecordset->Close();
- m_pConnection->Close();
- m_pRecordset=NULL;
- m_pConnection=NULL;
- ::CoUninitialize();
- }
复制代码我们来演示下功能实现的整个过程
|