📄 chap10_7.htm
字号:
<p ALIGN="JUSTIFY">在原来编辑框的位置加入一个组合框。打开该控件的属性对话框,令其</font><font FACE="Times New Roman" SIZE="3">ID</font><font SIZE="3">为</font><font FACE="Times New Roman" SIZE="3">IDC_COURSELIST</font><font SIZE="3">,并在</font><font FACE="Times New Roman" SIZE="3">Styles</font><font SIZE="3">页中选择</font><font FACE="Times New Roman" SIZE="3">Drop List</font><font SIZE="3">。注意要适当调整组合框的下拉列表尺寸</font><font FACE="Times New Roman" SIZE="3">(</font><font SIZE="3">点击向下的箭头后扩大其尺寸</font><font FACE="Times New Roman" SIZE="3">)</font><font SIZE="3">。</p>
<p ALIGN="JUSTIFY">自上到下从新安排</font><font FACE="Times New Roman" SIZE="3">Tab</font><font SIZE="3">顺序。</font></p>
</blockquote>
</blockquote>
<p><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">接下来要用</font><font FACE="Times New Roman" SIZE="3">ClassWizard</font><font SIZE="3">做一些与新加的组合框有关的工作:</p>
<blockquote>
<blockquote>
<p ALIGN="JUSTIFY">进入</font><font FACE="Times New Roman" SIZE="3">ClassWizard</font><font SIZE="3">,选择</font><font FACE="Times New Roman" SIZE="3">Member Variables</font><font SIZE="3">页并选择</font><font FACE="Times New Roman" SIZE="3">CSectionForm</font><font SIZE="3">类。单击列表中的</font><font FACE="Times New Roman" SIZE="3">IDC_COURSE</font><font SIZE="3">项并按</font><font FACE="Times New Roman" SIZE="3">Delete</font><font SIZE="3">键删除该项。然后双击</font><font FACE="Times New Roman" SIZE="3">IDC_COURSELIST</font><font SIZE="3">项,在</font><font FACE="Times New Roman" SIZE="3">Add Member Variable</font><font SIZE="3">对话框的组合框中选择</font><font FACE="Times New Roman" SIZE="3">m_pSet->m_CourseID</font><font SIZE="3">。</p>
<p ALIGN="JUSTIFY">再次双击</font><font FACE="Times New Roman" SIZE="3">IDC_COURSELIST</font><font SIZE="3">,并为</font><font FACE="Times New Roman" SIZE="3">CSectionForm</font><font SIZE="3">类加入一个名为</font><font FACE="Times New Roman" SIZE="3">m_ctlCourseList</font><font SIZE="3">的</font><font FACE="Times New Roman" SIZE="3">CComboBox</font><font SIZE="3">类成员。</p>
<p ALIGN="JUSTIFY">选择</font><font FACE="Times New Roman" SIZE="3">Message Maps</font><font SIZE="3">页,为</font><font FACE="Times New Roman" SIZE="3">IDC_COURSELIST</font><font SIZE="3">组合框加入</font><font FACE="Times New Roman" SIZE="3">CBN_SELENDOK</font><font SIZE="3">通知消息处理函数,函数名为</font><font FACE="Times New Roman" SIZE="3">OnSelendokCourselist</font><font SIZE="3">。该函数负责响应用户在组合框中选择的变化。</p>
<p ALIGN="JUSTIFY">按</font><font FACE="Times New Roman" SIZE="3">OK</font><font SIZE="3">按钮退出</font><font FACE="Times New Roman" SIZE="3">ClassWizard</font><font SIZE="3">。</font></p>
</blockquote>
</blockquote>
<p><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">接着,需要为</font><font FACE="Times New Roman" SIZE="3">Course</font><font SIZE="3">表创建一个名为</font><font FACE="Times New Roman" SIZE="3">CCourseSet</font><font SIZE="3">的记录集类,这个工作可由</font><font FACE="Times New Roman" SIZE="3">ClassWizard</font><font SIZE="3">完成,请读者按下面几步操作:</p>
<blockquote>
<blockquote>
<p ALIGN="JUSTIFY">进入</font><font FACE="Times New Roman" SIZE="3">ClassWizard</font><font SIZE="3">,点击</font><font FACE="Times New Roman" SIZE="3">Add Class...</font><font SIZE="3">按钮并在弹出的菜单中选择</font><font FACE="Times New Roman" SIZE="3">New...</font><font SIZE="3">,然后在</font><font FACE="Times New Roman" SIZE="3">Create New Class</font><font SIZE="3">对话框中的</font><font FACE="Times New Roman" SIZE="3">Name</font><font SIZE="3">栏中输入</font><font FACE="Times New Roman" SIZE="3">CCourseSet</font><font SIZE="3">,在</font><font FACE="Times New Roman" SIZE="3">Base class</font><font SIZE="3">栏中选择</font><font FACE="Times New Roman" SIZE="3">CRecordset</font><font SIZE="3">,按</font><font FACE="Times New Roman" SIZE="3">Create</font><font SIZE="3">按钮。</p>
<p ALIGN="JUSTIFY">在弹出的</font><font FACE="Times New Roman" SIZE="3">Database
Options</font><font SIZE="3">对话框中,在</font><font FACE="Times New Roman" SIZE="3">ODBC</font><font SIZE="3">组合框里选择</font><font FACE="Times New Roman" SIZE="3">Student Registration</font><font SIZE="3">数据源。然后按</font><font FACE="Times New Roman" SIZE="3">OK</font><font SIZE="3">按钮。</p>
<p ALIGN="JUSTIFY">在弹出的</font><font FACE="Times New Roman" SIZE="3">Select
Database Tables</font><font SIZE="3">对话框中选择</font><font FACE="Times New Roman" SIZE="3">Course</font><font SIZE="3">表。按</font><font FACE="Times New Roman" SIZE="3">OK</font><font SIZE="3">确认。</font></p>
</blockquote>
</blockquote>
<p><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">看看新建的</font><font FACE="Times New Roman" SIZE="3">CCourseSet</font><font SIZE="3">类,读者会发现</font><font FACE="Times New Roman" SIZE="3">ClassWizard</font><font SIZE="3">自动为</font><font FACE="Times New Roman" SIZE="3">CCourseSet</font><font SIZE="3">类创建了与</font><font FACE="Times New Roman" SIZE="3">Course</font><font SIZE="3">表的字段相对应的域数据成员,并且建立了</font><font FACE="Times New Roman" SIZE="3">DoFieldExchange</font><font SIZE="3">函数。</font><font FACE="Times New Roman" SIZE="3">ClassWizard</font><font SIZE="3">也为记录集类提供了新的</font><font FACE="Times New Roman" SIZE="3">GetDefaultConnect</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">GetDefaultSQL</font><font SIZE="3">函数。</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">接着,在</font><font FACE="Times New Roman" SIZE="3">CEnrollDoc</font><font SIZE="3">类的定义中,紧接着</font><font FACE="Times New Roman" SIZE="3">m_sectionSet</font><font SIZE="3">成员,加入下面一行:</font><font FACE="Times New Roman" SIZE="3"><b></p>
<p ALIGN="JUSTIFY">CCourseSet m_courseSet;</b></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">这样</font><font FACE="Times New Roman" SIZE="3">CEnrollDoc</font><font SIZE="3">就包含了两个记录集。由于</font><font FACE="Times New Roman" SIZE="3">CEnrollDoc</font><font SIZE="3">类用到了</font><font FACE="Times New Roman" SIZE="3">CCourseSet</font><font SIZE="3">类,所以要在所有含有</font><font FACE="Times New Roman" SIZE="3">#include </font><font SIZE="3">“</font><font FACE="Times New Roman" SIZE="3">EnrolDoc.h</font><font SIZE="3">”语句的</font><font FACE="Times New Roman" SIZE="3">CPP</font><font SIZE="3">文件中,在</font><font FACE="Times New Roman" SIZE="3">#include </font><font SIZE="3">“</font><font FACE="Times New Roman" SIZE="3">EnrolDoc.h</font><font SIZE="3">”语句的前面加上如下的</font><font FACE="Times New Roman" SIZE="3">include</font><font SIZE="3">语句。这些</font><font FACE="Times New Roman" SIZE="3">CPP</font><font SIZE="3">文件包括</font><font FACE="Times New Roman" SIZE="3">CEnrollApp</font><font SIZE="3">、</font><font FACE="Times New Roman" SIZE="3">CSectionForm</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">CEnrollDoc</font><font SIZE="3">类所在的</font><font FACE="Times New Roman" SIZE="3">CPP</font><font SIZE="3">文件。</font><font FACE="Times New Roman" SIZE="3"><b></p>
<p ALIGN="JUSTIFY">#include "CourseSet.h"</b></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">在</font><font FACE="Times New Roman" SIZE="3">CSectionSet</font><font SIZE="3">类的定义中,紧接着域数据成员,在“</font><font FACE="Times New Roman" SIZE="3">//}}AFX_FIELD</font><font SIZE="3">”注释外加入下面一行。</font><font FACE="Times New Roman" SIZE="3"><b></p>
<p ALIGN="JUSTIFY">CString m_strCourseIDParam;</b></p>
<p ALIGN="JUSTIFY">m_strCourseIDParam</font><font SIZE="3">是记录集的参数数据成员,其作用将在后面说明。</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3">最后,请读者按清单</font><font FACE="Times New Roman" SIZE="3">10.11</font><font SIZE="3">和</font><font FACE="Times New Roman" SIZE="3">10.12</font><font SIZE="3">修改程序。清单</font><font FACE="Times New Roman" SIZE="3">10.11</font><font SIZE="3">列出的是</font><font FACE="Times New Roman" SIZE="3">CSectionSet</font><font SIZE="3">类的部分源代码,清单</font><font FACE="Times New Roman" SIZE="3">10.12</font><font SIZE="3">列出的是</font><font FACE="Times New Roman" SIZE="3">CSectionForm</font><font SIZE="3">类的部分代码。</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><b><font SIZE="3"> </p>
<p ALIGN="JUSTIFY">清单</font><font FACE="Times New Roman" SIZE="3">10.11 CSectionSet</font><font SIZE="3">类的部分代码</b> </font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY">CSectionSet::CSectionSet(CDatabase* pdb)</p>
<p ALIGN="JUSTIFY">: CRecordset(pdb)</p>
<p ALIGN="JUSTIFY">{</p>
<p ALIGN="JUSTIFY"><b>. . .</p>
<p ALIGN="JUSTIFY">m_nParams = 1; //</font><font SIZE="3">只有一个参数数据成员</font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY">m_strCourseIDParam = "";</b></p>
<p ALIGN="JUSTIFY">}</p>
<p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY">void CSectionSet::DoFieldExchange(CFieldExchange* pFX)</p>
<p ALIGN="JUSTIFY">{</p>
<p ALIGN="JUSTIFY"><b>. . .</p>
<p ALIGN="JUSTIFY">pFX->SetFieldType(CFieldExchange::param);</p>
<p ALIGN="JUSTIFY">RFX_Text(pFX, "CourseIDParam", m_strCourseIDParam); //</font><font SIZE="3">替换参数</font></b><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY">}</p>
<p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><b><font SIZE="3"> </p>
<p ALIGN="JUSTIFY">清单</font><font FACE="Times New Roman" SIZE="3">10.12 CSectionForm</font><font SIZE="3">类的部分代码</font></b><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY">void CSectionForm::OnInitialUpdate()</p>
<p ALIGN="JUSTIFY">{</p>
<p ALIGN="JUSTIFY">m_pSet = &GetDocument()->m_sectionSet;</p>
<p></font><b><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
<p ALIGN="JUSTIFY">CEnrollDoc* pDoc = GetDocument();</p>
<p ALIGN="JUSTIFY">pDoc->m_courseSet.m_strSort = "CourseID";</p>
<p ALIGN="JUSTIFY">if (!pDoc->m_courseSet.Open())</p>
<p ALIGN="JUSTIFY">return;</p>
<p ALIGN="JUSTIFY"></font><font SIZE="3"> </font><font FACE="Times New Roman" SIZE="3"></p>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -