菜鸟求助!!!

mux 2000-11-18 08:57:00
我的程序要用到类似EXECL表格的控件,可怎么也找不到有关的书籍做参考 ,哪位大虾做过请指导小弟一下,100分做为答谢越详细越好!!!!
如有源程序请Email to :xmwzhswq&163.net,不胜感谢!!!
老天,只让给74分比我还小气!!!
...全文
94 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
mux 2000-11-21
  • 打赏
  • 举报
回复
非常感谢二位大哥的指导, 另外还请问:
我的程序并不想对任何数据库文件操作,只想对自已定义的一些数据文件操作 , 我还能用这个控件吗?应该怎么做?
playpcgame 2000-11-19
  • 打赏
  • 举报
回复
DBGrid 在VC 5.0中的使用
  在VC5.0 中使用DBGrid 控件,首先要运行ODBC 数据源管理程序安装数据源(我们以数据源是STUDENT 为例)。其方法为:在控制面板中双击ODBC 图标,运行ODBC 数据源管理程序。单击Add 按钮, 在Add Data Source 对话框中选择Microsoft Access Driver,出现ODBC Microsoft Access 97 Setup 对话框,输入数据源名Student 以及选择好数据库student.mdb,然后单击OK,再确定完成设置。

  与在VB 中使用DBGrid 控件相类似,在VC 中使用DBGrid 控件也需要一个类似于Data 的控件,不过它叫RemoteData 控件。

  下面我们举两个示例程序来演示DBGrid 控件的使用方法,这两个示例的项目名都为DBGrid。

  一、示例程序

  按如下步骤创建:
  1、运行AppWizard 生成项目DBGrid。除选择Single Document 和CDBGridView 的基类改为FormView 以外,其他均按默认设置处理。
  2、在项目DBGrid 中添加DBGrid 控件和Microsoft RemoteData 控件。从Developer Studio 的Project 菜单中选择Add To Project,再从子菜单中选择Componets And Controls。选择Registered ActiveX Controls,然后选择DBGrid Control 和Microsoft RemoteData Control。Developer Studio 将产生控件类CMSDgridCtrl 和CRdc,并把相应的文件添加到项目中。
  3、在IDD_DBGRID_FORM 模板中加入控件。利用控件工具箱加入RemoteData 和DBGrid 控件。
  对控件RemoteData 编辑。选中该控件,单击鼠标右键,选择Propertis,出现Microsoft RemoteData Control 2.0 Properties 对话框。选择General 标签,修改资源ID 为IDC_RDCSTUDENT,Caption 为Student。单击Control 标签,Datasource 选择Student(即前面ODBC 数据源管理程序安装的数据源),SQL 中输入语句Select *from student。
  对控件DBGrid 编辑。选择该控件,单击鼠标右键,选择Propertis,出现DBGrid Control Properties 对话框。选择General 标签,修改资源ID 为IDC_DBGSTUDENT,Caption 为Student 或不设置。单击All 标签,DataMode 选择0 -Bound,DataSource 选择IDC_RDCSTUDENT。
  4、编译并测试程序。DBGrid 在程序中正确地工作了。
  示例程序1 可能过于简单了,不过它的目的只是演示DBGrid 控件在VC5.0 中使用的方法。下面我们对它略作改进。

  1、修改设计时DBGrid 控件的列数。DBGrid 控件在设计时的列数默认为两列。选择DBGrid 控件,单击鼠标右键,选择DBGrid Control Object,再选择Edit。看上去没有什么变化,其实不然,再选择DBGrid 控件,单击鼠标右键,可以发现此时的菜单不同了,选择Insert,此时DBGrid 控件的列由原来默认的两列变成了三列。重复操作,直到DBGrid 控件的列数满足你的要求为止。
  2、修改DBGrid 控件的列标题。DBGrid 控件的列标题默认为数据集的字段名,可以改为我们想要的列标题。步骤如下:
  A、修改DBGrid 控件的列标题。选择该控件,单击鼠标右键,选择Propertis,出现DBGrid Control Properties 对话框。选择Columns 标签,在Column 选择Column0,Caption 中输入“编号”,DataField 中选择StudentID,在其他项中选择或输入你认为需要的信息。重复本步骤,直至完成修改所有的列标题为止。

  B、关闭DBGrid Control Properties 对话框,可以看到修改的列标题已经在DBGrid 控件上出现了。
  3、在程序运行时改变DBGrid 控件的尺寸。在视图尺寸大小改变时,DBGrid 控件的尺寸却没有改变,需要添加消息处理函数OnSize ()。
  A、使用ClassWizard 为类CDBGridView 加入成员变量。在ClassWizard 中单击Member Variables 标签,选择IDC_DBGSTUDENT,添加变量m_dbgstudent,类型为Control。
  B、使用ClassWizard 映射视图类的WM_SIZE 函数。编辑函数如下:
void CDBGridView::OnSize(UINT nType, int cx, int cy)
{
   CFormView::OnSize(nType, cx, cy);
   
   CRect rect;
   GetClientRect(rect);
   ::SetWindowPos(m_dbgstudent,HWND_TOP,0,0,rect.right
  -rect.left,rect.bottom -rect.top,SWP_SHOWWINDOW);
}
  示例程序1 演示了DBGrid 控件在类CFormView 的派生类中的使用方法,在对话框中使用DBGrid 控件的方法与此完全相同。

  以上示例是DBGrid 控件最简单地使用,因为它们都是把控件添加到控件容器内,然后再设定其属性,所以RemoteData 和DBGrid 控件可以像Button、Edit 控制一样,用鼠标点几下就可以了。下面再介绍DBGrid 控件在类Cview 或其派生类等非控件容器中的使用方法。这时就不能用上面的方法向视图类中添加控件了,也就不能在设计时设定它们的属性,必须在运行时使用DBGrid 和RemoteData 控件的Create() 函数创建对象,然后再设置属性。请看示例程序2。

  二、示例程序

  按如下步骤创建:
  1、运行AppWizard 生成项目DBGrid。选择Multiple Document,CDBGridView 的基类为CView 不变,其他仍然按默认设置处理。
  2、在项目DBGrid 中添加DBGrid 控件和Microsoft RemoteData 控件。与示例程序1 相同。
  3、在CDBGridView 类中加入两个数据成员。一个是类CRdc 变量m_rdcstudent,另一个是类CMsDgridCtrl 变量m_dbgstudent。
  4、加入这两个控件的子窗口ID 常数。从Developer Studio 的View 菜单中选择Resource Sysbols 命令,然后加入ID 符号ID_RDCSTUDENT 和ID_DBGSTUDENT。
  5、用ClassWizard 映射视图的WM_CREATE 和WM_SIZE 函数。编辑DBGidView.cpp 中的消息处理函数如下:
int CDbgridView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
 if (CView::OnCreate(lpCreateStruct) == -1)
      return -1;
   
   RECT r={0,0,100,30};
   
   //  create the RDC
   m_rdcstudent.Create(_T("Student"),
   WS_CHILD,r,this,IDC_RDCSTUDENT);
   m_rdcstudent.SetDataSourceName(_T("Student"));
   m_rdcstudent.SetSql
   (_T("Select *from student,section"));
   m_rdcstudent.SetUserName(_T("admin"));
   m_rdcstudent.SetPassword(_T(""));
   m_rdcstudent.SetCursorDriver(2);

   // create the DBGrid control
   &connect it to IDC_RDCSTUDENT
m_dbgstudent.Create(_T(""),WS_VISIBLE|WS_CHILD,r,
this,IDC_DBGSTUDENT);
LPUNKNOWN pCursor=m_rdcstudent.GetDSCCursor();
ASSERT(pCursor!=NULL);
m_dbgstudent.SetDataSource(pCursor); //bind the grid
m_dbgstudent.BindProperty(0x9, &m_rdcstudent);

return 0;
}

void CDbgridView::OnSize(UINT nType, int cx, int cy)
{
   CView::OnSize(nType, cx, cy);
   
   // TODO: Add your message handler code here
   CRect rect;
   GetClientRect(rect);
  ::SetWindowPos(m_dbgstudent,HWND_TOP,0,0,rect.right
-rect.left,rect.bottom -rect.top,SWP_SHOWWINDOW);
}
  6、编译并测试程序。
vcmfc 2000-11-18
  • 打赏
  • 举报
回复
该站上有一个CGridWnd的类,该类在www.comprg.com.cn上有篇文章有说明。如果是商用的话,请用Cell组件,技术支持应该很不错。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧