孙鑫第8课--对话框的编程(属性页,属性表单)

合集下载

第4章对话框设计和编程

第4章对话框设计和编程
int SetScrollPos( int nPos, BOOL bRedraw = TRUE ); 与SetScrollRange 和SetScrollPos相对应的两个函数是分别用来 获取滚动条的当前范围以及当前滚动位置:
void GetScrollRange( LPINT lpMinPos, LPINT lpMaxPos ) ;
重写
OnInitDialog函数
§4.2 对话框设计——EX04A示例程序
4.2.4 对话框程序的完善 3、为对话框类添加控件通知消息的处理函数 (2)利用属性对话框为省份组合框添加事件 CBN_SELCHANGE的控制函数OnChangeProvice(), 以便能够根据选定省份向城市列表框中添加该省份所在的城市。 (3)添加判定复选框是否选中的成员函数GetCheck()实 现兴趣和爱好字符串。 (4)利用添加事件处理程序向导为“确定”按钮添加鼠标单 击事件BN_CLICKED的事件处理程序OnSubmission()。
§4.3 滚动条、旋转按钮和滑动条控件
4.3.1 滚动条控件
滚动箭头按钮
滚动条
滚动块
§4.3 滚动条、旋转按钮和滑动条控件
4.3.1 滚动条控件 1、滚动条的基本操作 在MFC的CScrollBar类中,函数SetScrollRange是用来设置滚动条 的滚动范围的,其原型如下:
SetScrollRange( int nMinPos, int nMaxPos, BOOL bRedraw = TRUE ); 在CScrollBar类中,设置滚动块位置操作是由SetScrollPos函数来完 成的,其原型如下:
§4.2 对话框设计——EX04A示例程序
4.2.1 创建对话框资源

最新VB程序设计课件第8章

最新VB程序设计课件第8章

8.1 通用对话框
1. 打开对话框
2. 另存为对话 框结构
例 8-4 设计一个应用程序,通过命令按钮可 以改变标签的字体。
3.颜色对话框
4.字体对话框 5.打印对话框
6.帮助对话框
云南农业大学< Visual Basic 程序设计>教学课件① 2011-2
16
第八章 菜单、工具栏和多文档程序设计
8.1 通用对话框
VB程序设计课件第8章
第八章 菜单、工具栏和多文档程序设计
本章学习目标
1.掌握通用对话框的使用 2.掌握各种菜单的设计方法 3.能够用多重窗体的方法来设计应用程序
云南农业大学< Visual Basic 程序设计>教学课件① 2011-2
2
第八章 菜单、工具栏和多文档程序设计
云南农业大学< Visual Basic 程序设计>教学课件① 2011-2
2. 另存为对话 框结构
3.颜色对话框
4.字体对话框
DialogTiltle FileName InitDir Filter
DefaultExt FilterIndex
5.打印对话框 6.帮助对话框
Filter的格式: 文件说明|文件类型 例如:
Word(*.DOC)|*.DOC|Text (*.TXT)|*.txt|All Files|*.*
3.颜色对话框
4.字体对话框 5.打印对话框 6.帮助对话框
云南农业大学< Visual Basic 程序设计>教学课件① 2011-2
看图
11
第八章 菜单、工具栏和多文档程序设计
8.1 通用对话框
1. 打开对话框
“颜色”对话框

表单设计与使用 课件

表单设计与使用 课件

Visual FoxPro数据库应用教程
8.4 表单常用控件
第22页
8.4.2 命令按钮控件
命令按钮控件的常用属性如下: (1)Cancel属性:该属性的默认值为.F.。属性值为.T.的命
令按钮称为“取消”按钮,即按下【Esc】键时得到响应 的那个按钮。 (2)Caption属性:该属性指定在按钮上显示的文本。 (3)Default属性:该属性值为.T.的命令按钮称为“确认” 按钮,即按下回车键时得到响应的那个按钮。 (4)Enabled属性:该属性指定表单或控件能否响应由用户 引发的事件,默认为.T.,即对象是有效的。当Enabled=.F. 时,用于显示只读信息。 (5)Visible属性:指定对象是可见还是隐藏。默认值为.T., 即对象是可见的。
(1)Caption属性 :指定标签上显示的标题文本 (2)AutoSize属性 :指定标签是否能根据显示内容多少自
动调控大小。
(3)BackStyle属性 :确定标签对象与表单背景前面颜色是 否一致,0表示透明,1表示不透明。
(4)FontName属性:指定标签中显示文本的字体名。 (5)FontSize属性 :指定标签中显示文本的字体大小。 (6)Alignment属性 :指定标题文本在控件中的显示对齐方
Visual FoxPro数据库应用教程
第8页
8.1 面向对象程序设计的概念
在VFP中,当对象被创建后,就可以调用 这个对象的方法了。为对象设置方法的命令格 式如下:
<对象引用>.<方法> 【例8.2】调用当前表单的方法,使文本框Textl
获得焦点,然后刷新表单。
Thisform.Textl.Setfocus
如果在命令按钮Command1的Click(单击鼠标)事件 代码中将Command1的标题设置为“确定”,可使用如下 命令: This.caption= "确定"

第8章 窗体的编辑与设计

第8章 窗体的编辑与设计

第8章窗体的编辑与设计窗体界面不但要功能全面,而且还要美观大方,并且要按照用户的需求设计出特殊的效果,这时就需要对窗体进行设计。

窗体的各个视图中包含了多种不同的窗体设计工具,通过这些工具可以设计出多种不同的窗体界面。

本章重点:窗体设计工具窗体的基本操作窗体界面设计8.1窗体设计工具在窗体的设计过程中往往想为窗体设置一些特殊的效果,例如将某个字段按照降序排列或者将某个控件设置为固定大小等,这些就需要用到窗体的设计工具。

8.1.1窗体视图工具窗体视图工具主要用于数据的查询和预览等,通常不会在该视图中进行窗体界面和属性的设置。

打开一个窗体视图,切换至【开始】选项卡,可以看到窗体视图中可用的工具,如图8-1所示。

图8-1窗体工具下面我们将简单地介绍这几个工具的功能及用法,如下所示。

·【视图】按钮:单击该按钮,可以将当前视图模式切换至不同的视图模式,如图8-2所示,列出了【窗体视图】、【布局视图】、【设计视图】三种。

图8-2 视图列表·【升序】按钮和【降序】按钮:如果窗体中的字段比较多,那么想要对其重新排序的时候,我们可以单击【排序和筛选】选项组中的【升序】按钮或者【降序】按钮,即可对窗体中的数据进行重新排序。

·【选择】按钮 :该按钮的使用比较简单,在窗体中选择某个字段后单击该按钮,就可以对窗体视图中的数据进行筛选,筛选的结果是与事先选中的数据同样的数据。

单击该按钮,可弹出一个下拉列表,如图8-3所示。

·【清除所有排序】按钮 :单击该按钮,可以清除所有的窗体排序痕迹。

图8-3下拉列表·【高级筛选选项】按钮:单击该按钮,在弹出的下拉列表中可以选择【按窗体筛选】、【应用筛选/排序】和【高级筛选/排序】等选项,如图8-4所示。

图8-4【高级筛选选项】列表·【应用/取消筛选】按钮:当窗体视图中存在某种筛选时,包括筛选被应用和筛选被取消两种情况,该按钮都将变为可用状态,否则为不可用状态。

Visual Basic程序设计VB语言第8章 菜单与对话框

Visual Basic程序设计VB语言第8章 菜单与对话框

❖ 基本属性
CommonDialog控件的属性可分为文件、颜色与字体三类。 1)文件类属性 ① FileName属性用于设置或返回要“打开”、“保存、 “打印”的文件名。 ② Filter属性用于文件过滤器,属性格式为:
描述1| 过滤器1| 描述2 | 过滤器2 …。 例如: 所有文件(*.*)|*.*| RTF格式(*.RTF) | *.rtf | 文本文件 (*.txt)|*.txt
❖ 基本方法 CommonDialog控件打开对话框的6种方法如下: 1)ShowOpen方法用于显示打开文件对话框,打开指定 目录中的文件。 调用该方法的格式为:CommonDialog.ShowOpen 当用户在对话框中选择文件名后,应使用控件的 CommonDialog.FileName属性返回所选文件名 可用RichTextBox控件的LoadFile方法打开指定文件: RichTextBox.LoadFile CommonDialog.FileName
❖ 相关语句和方法
[窗体名.]Hide 隐藏窗体。
UnLoad 窗体名 执行Load语句后,从内存中删除指定窗体。常用语句 UnLoad Me 来关闭窗体,这里的Me表示的是该语句所在的窗体。
❖ 不同窗体间的数据存取
窗体名.控件名.属性 窗体名.全局变量名
8.2 菜单设计
菜单是应用程序和用户间的交互方式,分为下拉 式菜单与弹出式菜单两种。下拉式菜单使用菜单 编辑器设计,而弹出式菜单则使用窗体或控件的 PopupMenu方法设计。 VB中的菜单是一种特殊的控件。菜单中的每个菜 单项都是独立的菜单控件对象。菜单控件有自己 的属性和事件,如Name和Caption属性和Click事 件。
❖ 2)ShowSave方法用于显示保存文件对话框,将文件保存 到指定目录去。 调用该方法的格式为: CommonDialog.ShowSave 当用户在对话框中选择文件名后,应使用控件的 CommonDialog.FileName属性返回所选文件名 可用RichTextBox控件的SaveFile方法保存指定文件: RichTextBox.SaveFile CommonDialog.FileName

第8章 表单高级设计

第8章 表单高级设计

17
8.3.2 用户定义类
支持创建在应用程序中可以重复使用的类是VFP最强大的 支持创建在应用程序中可以重复使用的类是VFP最强大的 功能之一,用户定义的类能添加到表单控件工具栏中. 通常创建用户定义类有以下目的:
(1)封装通用功能 (2)赋予应用称心统一的外观和风格
一,类的创建
创建用户定义类的步骤为:
13
8.2.2 用户定义方法程序
所谓用户定义方法程序,就是用户为表单或表单集定义的过程. 1. 方法程序的创建 该对话框与新建属性对话框基本一致,可参阅图8.4.(Page253) 该对话框与新建属性对话框基本一致,可参阅图8.4.(Page253) 2. 过程代码的编制 方法程序创建后,尚需为它定义过程代码.用户可在属性窗口列 表中先选定某个用户定义方法程序,然后双击它,即打开代码 编辑窗口对它进行编辑, 对于在整个表单集有效的用户定义方法程序,其调用基本格式为: THISFORMEST.方法程序. THISFORMEST.方法程序.
11
二,表单应用程序的有效参数
1. 公共变量与用户定义属性的参数特点
用设置的公共变量对所有表单文件有效,而用户 定义属性的作用范围只是以个表单文件, 单因一个表单集仅包含在一个表单文件中,顾这 两种参数都可适用于表单集.
2. 父表单与子表单间的参数传递 命令格式: DO FORM <表单名>[WITH<参数表>][TO<变量名>] <表单名>[WITH<参数表>][TO<变量名>] 功能:运行表单,并可将参数传入表单,或接受其返 回值.
18
二,将类添加到工具栏 [例8-8] 试将例8-7创建的"退出按钮"类添加到表单 试将例8 创建的"退出按钮" 控件工具栏中.(Page263) 控件工具栏中.(Page263) 三,类的编辑 1. 修改已定义的用户定义类 [例8-9] 试修改退出类按钮,要求为表单定义的基 于该类的按钮具有提示功能.(Page264) 于该类的按钮具有提示功能.(Page264) 2. 删除类库中的一个类 (1)使用REMOVE CLASS命令:RENAME )使用REMOVE CLASS命令:RENAME CLASS<类名>OF<类库名> CLASS<类名>OF<类库名> (2)在项目管理器的类选项卡中添加该类库,然 后选定类库中的一个类,选定"移去" 后选定类库中的一个类,选定"移去"按钮. (3)删除类库 只要删除.vcx类库文件 只要删除.vcx类库文件

《vb》第八章 创建用户界面

《vb》第八章 创建用户界面
3
标签(Label)
属性 Caption:文本标题。 : Alignment
0:文本显示在右边。 1:文本显示在左边。 2:文本显示在中间
Enabled
True:控件能使用 False:禁止控件使用,控件显示为灰色
4
标签(Label)
Visible
True:控件可见; False False:控件不可见。
(1)刚运行程序时,列表框中显示预定的选修课程选项,“添加”、 “修改确定”按钮禁用; (2)添加选项:当用户在文本框中有输入字符时,“添加”按钮可用, 此时用户可以通过单击“添加”按钮将文本框中的内容添加到列表框; (3)删除选项:选中列表框中的某选项,然后单击“删除”按钮,若未 事先选定选项,则系统会出现信息框提示用户; (4)修改选项:选中列表框中的某选项然后单击“修改”按钮,或直接 双击该选项,这时该选项显示在文本框中供用户编辑,同时“修改确定” 按钮可用、“修改”按钮不可用;修改完后单击“修改确定”按钮。
True :多行显示 False:单行显示
6
文本框(TextBox)
ScrollBars
0:None:无滚动条(默认值); 1:Horizontal:加水平滚动条; 2:Vertical:加垂直滚动条; 3:Both:同时加水平和垂直滚动条。
★设置ScrollBars属性的前提是:MultiLine属性为True。 SelStart、SelLength、SelText 、 、 ★这三个属性不能在属性窗口中设置,只能在代码窗口设
命令按钮 (Command)
属性
Caption:命令按钮上显示的文本。 : Style、Picture、DownPicture、DisabledPicture:这 、 、 、 : 几个属性可增强按钮的视觉效果,分别为处于不同状态 (未选中、选中、禁用)的命令按钮指定不同的图像。 步骤如下:

《Visual C++程序设计教程》第六章属性单(CPropertySheet)

《Visual C++程序设计教程》第六章属性单(CPropertySheet)

设置的非默认属性
Caption为“请输入半 径:”
Caption为“边框颜色:”
静态文本
静态文本
IDC_STATIC
IDC_STATIC
Caption为“红色(0255)”
Caption为“绿色(0255)”
边框 颜色 (填充 颜色)
静态文本
编辑框 编辑框 编辑框
IDC_STATIC
IDC_RED IDC_GREEN IDC_BLUE
6.2.2 创建CPropertyPage类

建立好属性页资源之后,就可以根据这个 对话框资源生成一个新类,可以利用MFC 的Class Wizard来实现.

通过“查看”→ “建立类向导...” 菜单命令,也可以使 用快捷键“Ctrl+W” 来打开类向导,但由 于添加的属性页对话 框资源并没有相应的 类,因此会弹出添加 类对话框,如图所示。
为了能在属性单中显示我们已经建立好的三个 属性页对话框,就需要使用属性单的成员函数 将属性页添加到属性单中,为了实现这一目的 1.在CProSheet类中引入3个属性页类的头文件: #include "DlgRadius.h" #include "DlgBorder.h" #include "DlgFill.h"


该类从对话框类派生,它的对象表示单个的 属性页。使用方法如同使用标准的对话框一 样,进行数据交换时,也是通过变量和属性 页控件进行数据交换来完成的。 该类实现了对属性页的封装,同时还提供一 些非常有用的成员函数和成员变量,通过这 些成员,可以很方便的操作和定制属性页的 各个特性。
(1)CPropertyPage方法 其原型为: CPropertyPage( ); CPropertyPage( UINT nIDTemplate, UINT nIDCaption = 0 ); CPropertyPage( LPCTSTR lpszTemplateName, UINT nIDCaption = 0 );
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

选择一个基于对话框的MFC工程。

下面做一个逃跑按钮。

在对话框上添加两个按钮。

新建一个CBtn,基类是CButton.为这个类添加:CBtn *pbtn;为这两个按钮关联新建立的这个按钮类。

在BOOL CTestDlg::OnInitDialog()中添加:m_btn1.pbtn=&m_btn2;m_btn2.pbtn=&m_btn1;void CBtn::OnMouseMove(UINT nFlags, CPoint point){// TODO: Add your message handler code here and/or call defaultShowWindow(SW_HIDE);pbtn->ShowWindow(SW_SHOW);CButton::OnMouseMove(nFlags, point);}运行,达到效果,但是初始化运行的时候能看到两个按钮。

为此做如下修改:将其中一个按钮的可见性不选。

下面是属性表单和向导的创建:创建一个MFC的单文档程序。

为菜单增加一个显示属性表单的按钮,并添加VIEW类中响应。

添加三个属性页对话框。

(由于在上面要写中文,将属性改为中文),并为这三个属性页创建一个类,再新建一个对话框,为它创建一个属性表单类。

在属性表单的头文件中添加:(要包含三个属性页的头文件)public:CPage1 m_page1;CPage2 m_page2;CPage3 m_page3;为属性表单的构造函数:CPageSheet::CPageSheet(UINT nIDCaption, CWnd* pParentWnd, UINT iSelectPage) :CPropertySheet(nIDCaption, pParentWnd, iSelectPage){AddPage(&m_page1);AddPage(&m_page2);AddPage(&m_page3);}CPageSheet::CPageSheet(LPCTSTR pszCaption, CWnd* pParentWnd, UINT iSelectPage) :CPropertySheet(pszCaption, pParentWnd, iSelectPage){AddPage(&m_page1);AddPage(&m_page2);AddPage(&m_page3);}void CTestView::OnPage(){// TODO: Add your command handler code hereCPageSheet ps("属性表单");ps.SetWizardMode();//设置向导,如没这句,不是设置向导。

ps.DoModal();}CPageSheet类不用关联任何的对话框,直接创建这个类。

为单选按钮关联一个成员变量。

BOOL CPage1::OnSetActive(){// TODO: Add your specialized code here and/or call the base classCPageSheet* psheet = (CPageSheet*) GetParent();psheet->SetWizardButtons(PSWIZB_NEXT);return CPropertyPage::OnSetActive();}BOOL CPage2::OnSetActive(){CPropertySheet* psheet = (CPropertySheet*) GetParent();psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_NEXT);return TRUE;}BOOL CPage3::OnSetActive(){// TODO: Add your specialized code here and/or call the base classCPropertySheet* psheet = (CPropertySheet*) GetParent();psheet->SetWizardButtons(PSWIZB_BACK | PSWIZB_FINISH);return CPropertyPage::OnSetActive();}BOOL CPage1::OnInitDialog(){CPropertyPage::OnInitDialog();// TODO: Add extra initialization here((CListBox*)GetDlgItem(IDC_LIST1))->AddString( "北京" );((CListBox*)GetDlgItem(IDC_LIST1))->AddString( "上海" );((CListBox*)GetDlgItem(IDC_LIST1))->AddString( "广州" );return TRUE; // return TRUE unless you set the focus to a control// EXCEPTION: OCX Property Pages should return FALSE}为列表框控件关联一个列表框成员变量(CSTRING类型)。

LRESULT CPage1::OnWizardNext(){// TODO: Add your specialized code here and/or call the base class//GetText( int nIndex, LPTSTR lpszBuffer ) int GetCurSel( )UpdateData();if (-1==m_radio1){MessageBox("请选择你的职业!!");return -1;}if (m_list==""){MessageBox("请选择你的工作地点!!");return -1;}((CListBox*)GetDlgItem(IDC_LIST1))->GetText(((CListBox*)GetDlgItem(IDC_LIST1))-> GetCurSel( ),m_list );UpdateData(FALSE);return CPropertyPage::OnWizardNext();} LRESULT CPage2::OnWizardNext(){// TODO: Add your specialized code here and/or call the base classUpdateData();if(m_check1==FALSE&&m_check2==FALSE&&m_check3==FALSE&&m_check4==FALSE) {MessageBox("请选择你的兴趣爱好");return -1;}UpdateData(FALSE);return CPropertyPage::OnWizardNext();}将COMBO的SORT项取消。

BOOL CPage3::OnInitDialog(){CPropertyPage::OnInitDialog();// TODO: Add extra initialization here IDC_COMBO1((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString("1000元以下");((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString("1000元--2000元");((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString("2000元--3000元");((CComboBox*)GetDlgItem(IDC_COMBO1))->AddString("3000元--4000元");return TRUE; // return TRUE unless you set the focus to a control// EXCEPTION: OCX Property Pages should return FALSE}为Page3增加:private:CString m_strsalary;BOOL CPage3::OnWizardFinish(){// TODO: Add your specialized code here and/or call the base class//GetLBText( int nIndex, CString& rString ) constint nIndex=((CComboBox*)GetDlgItem(IDC_COMBO1))->GetCurSel();((CComboBox*)GetDlgItem(IDC_COMBO1))->GetLBText( nIndex, m_strsalary );return CPropertyPage::OnWizardFinish();}下面是VIEW类中将用户的选择在VIEW中输出。

为VIEW类增加:private:CString m_zhiye;CString m_strworkaddr;CString m_aihao;CString m_xinzhi;并初始化。

void CTestView::OnPage(){// TODO: Add your command handler code here 篮球,足球,游泳,排球CPageSheet ps("属性表单");ps.SetWizardMode();if(ID_WIZFINISH==ps.DoModal()){if(ps.m_page1.m_radio1==0){m_zhiye="程序员";}if(ps.m_page1.m_radio1==1){m_zhiye="系统工程师";}if(ps.m_page1.m_radio1==2){m_zhiye="项目经理";}m_strworkaddr=ps.m_page1.m_list;if (ps.m_page2.m_check1==TRUE){m_aihao+="篮球";}if (ps.m_page2.m_check2==TRUE){m_aihao+="足球";}if (ps.m_page2.m_check3==TRUE){m_aihao+="游泳";}if (ps.m_page2.m_check4==TRUE){m_aihao+="排球";}m_xinzhi=ps.m_page3.m_strsalary;}Invalidate();}void CTestView::OnDraw(CDC* pDC){CTestDoc* pDoc = GetDocument();ASSERT_V ALID(pDoc);CFont font;font.CreatePointFont(300,"华文行楷");CFont *poldfont=pDC->SelectObject(&font);TEXTMETRIC tm;pDC->GetTextMetrics(&tm) ;pDC->TextOut(0,0,m_zhiye);pDC->TextOut(0,tm.tmHeight,m_strworkaddr);pDC->TextOut(0,tm.tmHeight*2,m_aihao);pDC->TextOut(0,tm.tmHeight*3,m_xinzhi);pDC->SelectObject(poldfont);}。

相关文档
最新文档