VC6下的DBGrid控件和RemoteDataCtrl控件如何用?

gentlemen 2000-12-08 03:46:00
我正在用它开发程序,但是没有使用说明,痛苦啊。哪位大虾知道,麻烦告知。或者告诉我到哪里去找这个说明,好像跟VB的不一样?所以不能直接看VB的。
或者告诉我:1.如何动态设置它的列?(增加,减少等)用哪个函数?
2.它的数据源好像必须在ODBC设置了数据源才行,但是我用的是DAO,这样就失去DAO的灵活性了,该咋办?
...全文
311 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
yongdu 2000-12-12
  • 打赏
  • 举报
回复
DBGrid 在VC 5.0中 的 使 用

在VC5.0 中 使 用DBGrid 控 件, 首 先 要 运 行 ODBC 数 据 源 管 理 程 序 安 装 数 据 源( 我 们 以 数 据 源 是STUDENT 为 例)。 出 现ODBC Microsoft Access 97 Setup 对 话 框, 输 入 数 据 源 名Student 以 及 选 择 好 数 据 库student.mdb, 然 后 单 击OK, 再 确 定 完 成 设 置。

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

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

一 示 例 程 序

----按 如 下 步 骤 创 建:
运 行AppWizard 生 成 项 目DBGrid。 除 选 择Single Document 和 CDBGridView 的 基 类 改 为FormView 以 外, 其 他 均 按 默 认 设 置 处 理。
在 项 目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, 并 把 相 应 的 文 件 添 加 到 项 目 中。
在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。
编 译 并 测 试 程 序。DBGrid 在 程 序 中 正 确 地 工 作 了。
----示 例 程 序1 可 能 过 于 简 单 了, 不 过 它 的 目 的 只 是 演 示DBGrid 控 件 在VC5.0 中 使 用 的 方 法。 下 面 我 们 对 它 略 作 改 进。

修 改 设 计 时DBGrid 控 件 的 列 数。DBGrid 控 件 在 设 计 时 的 列 数 默 认 为 两 列。 选 择DBGrid 控 件, 单 击 鼠 标 右 键, 选 择DBGrid Control Object, 再 选 择Edit。 看 上 去 没 有 什 么 变 化, 其 实 不 然, 再 选 择DBGrid 控 件, 单 击 鼠 标 右 键, 可 以 发 现 此 时 的 菜 单 不 同 了, 选 择Insert, 此 时DBGrid 控 件 的 列 由 原 来 默 认 的 两 列 变 成 了 三 列。 重 复 操 作, 直 到DBGrid 控 件 的 列 数 满 足 你 的 要 求 为 止。
修 改DBGrid 控 件 的 列 标 题。DBGrid 控 件 的 列 标 题 默 认 为 数 据 集 的 字 段 名, 可 以 改 为 我 们 想 要 的 列 标 题。 步 骤 如 下:
修 改DBGrid 控 件 的 列 标 题。 选 择 该 控 件, 单 击 鼠 标 右 键, 选 择Propertis, 出 现DBGrid Control Properties 对 话 框。 选 择Columns 标 签, 在Column 选 择Column0,Caption 中 输 入“ 编 号”,DataField 中 选 择StudentID, 在 其 他 项 中 选 择 或 输 入 你 认 为 需 要 的 信 息。 重 复 本 步 骤, 直 至 完 成 修 改 所 有 的 列 标 题 为 止。
关 闭DBGrid Control Properties 对 话 框, 可 以 看 到 修 改 的 列 标 题 已 经 在DBGrid 控 件 上 出 现 了。
在 程 序 运 行 时 改 变DBGrid 控 件 的 尺 寸。 在 视 图 尺 寸 大 小 改 变 时,DBGrid 控 件 的 尺 寸 却 没 有 改 变, 需 要 添 加 消 息 处 理 函 数OnSize ()。
使 用ClassWizard 为 类CDBGridView 加 入 成 员 变 量。 在 ClassWizard 中 单 击Member Variables 标 签, 选 择IDC_DBGSTUDENT, 添 加 变 量 m_dbgstudent, 类 型 为Control。
使 用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。

二 示 例 程 序

----按 如 下 步 骤 创 建:
运 行AppWizard 生 成 项 目DBGrid。 选 择Multiple Document,CDBGridView 的 基 类 为 CView 不 变, 其 他 仍 然 按 默 认 设 置 处 理。
在 项 目DBGrid 中 添 加DBGrid 控 件 和Microsoft RemoteData 控 件。 与 示 例 程 序1 相 同。
在CDBGridView 类 中 加 入 两 个 数 据 成 员。 一 个 是 类CRdc 变 量 m_rdcstudent, 另 一 个 是 类CMsDgridCtrl 变 量m_dbgstudent。
加 入 这 两 个 控 件 的 子 窗 口ID 常 数。 从Developer Studio 的View 菜 单 中 选 择Resource Sysbols 命 令, 然 后 加 入ID 符 号ID_RDCSTUDENT 和 ID_DBGSTUDENT。
用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);
}

编 译 并 测 试 程 序。 屏 幕 的 显 示 结 果 与 下 图 类 似。


----以 上 所 述 只 是 谈 及DBGrid 控 件 在 绑 定 方 式 下 使 用 方 法, 那 么 如 何 在 在 非 绑 定 方 式 下 使 用 呢 ? 还 请 朋 友 们 多 指 教。

 
flyhigh 2000-12-12
  • 打赏
  • 举报
回复
to vcmfc:
hai!
good morning!
I am developing a program with dbgrid,but I meet the same question as gentlemen.
Can you give me a copy of your source program ?
thank you!
huangjianxiong@sian.com
bush 2000-12-11
  • 打赏
  • 举报
回复
我我!!
同病相怜!!
我有一个source
!!
vcmfc 2000-12-09
  • 打赏
  • 举报
回复
留下你的E地址,我这里有篇文章:vcmfc@sina.com

16,548

社区成员

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

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

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