




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 C+ Builder 6 程序设计教程第三章 窗体与常用组件3.1 组件应用基础n常用事件 事件驱动编程(Event -Driven Programming)就是指通过对事件做出反应来进行编程 (1) 用户事件:由用户的行动触发,如OnClick , OnKeyPress , OnDblClick 等。 (2) 系统事件:由操作系统触发,如OnTimer ,OnCreate ,OnPaint 等。3.2 单选钮和检查框 nTRadioButton 和TCheckBox 单选钮中用户只能选择其中之一,而检查框可以单选也可以多选 nChecked属性 : 单选钮只有两种状态:选中或未选中,如选中
2、Checked值为true;如未选中则为false(默认为false) 检查框如Checked值为true,则表明已被选中,其另一属性State值为cbChecked;如Checked值为false,表明未被选中,此时有两种情况:未选取(Unchecked),其State值为cbUnchecked;失效(Grayed),其State值为cbGrayed n示例:群组框和单选按钮组 nTGroupBox :为一组相关联的组件提供一个分组 nTRadioGroup :用于从多个选项中选择一个n示例: 3.3 列表框和组合框 n列表框 TListBox: Items 属性:存放列表部分每一项内容的字
3、符型数组,下标0ItemCount-1 ItemIndex属性:返回程序运行时用户所选择的项目顺序号,其范围也在0ItemCount-1 Count属性:返回列表部分项目的个数 Sorted属性:指定列表部分项目是否按字母表的顺序排列,true-排序,false-不排 MultiSelect属性:仅列表框有,指明运行时用户能否进行复选:false-禁止(默认),true-允许 Style属性:指明显示风格 n组合框TComboBox 与TListBox相比,没有MultiSelect属性,有Text属性,返回程序运行时 用户所选择项目的文本内容 nStyle属性 下拉组合框 (Style属性为
4、csDropDown) 简单组合框 (Style属性为csSimple) 下拉列表框 (Style属性为csDropDownList) n组合框和列表框的区别: 1.组合框实际上可以看成是编辑框与列表框的组合 2.列表框可以选择一个项目也可以选择多个项目,而组合框通常只能选择或输入一个项目 n示例3.4 其它常用组件 n3.4.1 滚动条 :当不需要精确设置数值而只要一个大概的范围时(如调整亮度、设置处理某一事件所花的大致时间等),可以使用滚动条TScrollBar组件实现这一功能。n滚动条常用属性:见下表n示例: 3.4.2 定时器 n可视组件,能有规律地以一定的时间间隔激发定时器事件(On
5、Timer)而执行指定的程序代码 n Interval属性:引发两次OnTimer事件的时间间隔,以毫秒为单位,其取值在065535之间。取0表示不响应OnTimer事件,默认值为1000(1秒钟) Enabled属性:true表示定时器开始工作(默认状态),取false表示定时器停止工作 OnTimer事件:定时发生的事件过程代码n示例:3.4.3 TTrackBar组件 n带有滑尺的组件,用滑尺指示当前位置。可以通过修改TTrackBar组件中的Position属性来改变它的位置。用户也可以使用鼠标或者键盘方向键以及PgUp键和PgDn键使滑尺移动,每次移动的步长可以通过LineSize和
6、PageSize属性进行设置 属性名称设置及意义Max、Min这两个属性用来设置滑尺滚动的范围Frequency设置刻度单位。默认为1LineSize设置当用户按下键盘上方向键移动滑尺时,滑尺每次滑动的步长PageSize设置当用户按下PgUp键、PgDn键或鼠标单击跟踪条时,滑尺每次滑动的步长Orientation设置跟踪条是水平放置还是垂直放置,默认值为tbHorizontal:水平放置Position设置滑尺的位置SelStart/SelEnd这两个属性用来设置填充的起点和终点SliderVisible设置滑尺隐藏或显示。该属性值为false时,滑尺将隐藏ThumbLength设置滑尺本
7、身的宽度,默认是203.4.5 TUpDown组件 n加减组件有一对上下箭头按钮,按动按钮可以使编辑框中的数值连续增加或减少。编辑框中显示的数据就是TUpDown组件的Position属性 属性名称设置及意义Associate用来指定一个联合使用的组件,如编辑框等。运行期间,TUpDown组件将自动调整位置紧靠该联合组件并与之保持一致AlignButton设置TUpDown组件显示在联合组件的位置,udLeft为左侧,udRight为右侧ArrowKeys用户按键盘上的上下方向键是否等价于鼠标单击上下键,值为true表示是Position组件的当前值,变化范围由Min和Max属性设置Incre
8、ment设置当用户单击上下箭头时Position属性变化的步长,默认为1Min、Max设置Position属性的变化范围Thousands值为true时,当Position超过1000时,将自动添加一个千分位符号Wrap值为true时,当Position大于/小于Max/Min时就自动回到Min/Max属性指定的值3.5 窗体 n窗体也是一种对象,有自己的属性、事件与方法。通过对窗体属性的设置可以控制窗体运行时的状态,通过编写特定的窗体事件过程代码可以对某些组件的属性或公用变量进行初始化或执行某种功能,而通过调用窗体的方法可以实现窗体的显示、隐藏、切换等 3.5.1 窗体的属性 属 性意义设置
9、窗体边界格式,共有6种格式,运行时有效:bsDialog双线固定对话框 bsNone没有框线bsSingle单线固定 bsSizeable大小可调整bsSizeToolWin可调整工具窗体bsToolWindow单线固定工具窗体Caption(标题)标题栏上的文字Color(背景色)设置窗体工作区背景色Ctrl3D(外观)设置窗体外观:true立体显示,false平面显示Font(字体)设置显示文字的字体样式Height(高度)窗体的垂直高度(单位为Pixel)BorderStyle(边界)Icon(图标)窗体极小化时所用的图标Left(左边界限)窗体左上角距屏幕左边的距离(单位为Pixel)
10、Name(名称)窗体对象的名称Top(上方界限)窗体左上角距屏幕上面的距离(单位为Pixel)Visible(显示/隐藏)窗体在屏幕上显示或隐藏Width(宽度)窗体的水平宽度(单位为Pixel)设置运行时的状态:wsNormal-正常,与设计时相同;wsMinimized-最小化;wsMaximized-最大化WindowState(窗体状态)3.5.2 窗体的运行与控制 n 多重窗体 :对于一般的应用程序而言,总要包含多个窗体以完成不同的任务。在多重窗体中,每个窗体都有自己的界面与程序代码,都是以独立的.dfm和.cpp文件保存在工程中。 利用【Project | Add to Proje
11、ct】命令可将已有窗体添加进工程。利用【File | New | Form】命令可以创建一个新的窗体。 n设置启动窗体 :缺省时,在工程中创建并保存的第一个窗体会成为工程的主窗体,也即运行时第一个生成的窗体,称为启动窗体 n若要改变工程的主窗体,可以:(1) 选择【ProjectOptions】菜单项,在弹出的“Project Options ”对话框中,选中Forms选项卡; (2) 在Main Form 组合框中选择欲作为工程主窗体的窗体名,并单击“OK”按钮。n窗体的运行 :窗体的生命周期是指窗体从开始运行到运行结束所经历的不同的状态。在整个生命周期中,窗体会经历创建、显示、活动、隐藏、
12、消亡等多种状态 n创建状态 :OnCreate 、OnShow、OnActivate、OnPaint(当窗体重画时,触发OnPaint事件) n活动状态:当窗体处于活动状态时,触发OnActivate事件 n显示/隐藏状态:使用窗体的Show方法可以使窗体进入显示状态 ,Hide方法 方法可以使窗体隐藏n消亡状态 :(1)窗体释放,是指销毁窗体,并从内存中清除窗体,回收窗体所占用的内存资源,可以采用Release方法;(2)窗体关闭,可以使用Close方法 。nOnCloseQuery事件:该事件在窗体关闭前会触发。返回一个bool变量CanClose,默认值为true,即允许关闭。可以在该事
13、件处理中,加入询问操作,对用户是否关闭窗体的操作进行确认 n示例:3.6 C+Builder高级组件 n3.6.1 TRichEdit组件 除了一般的文本编辑功能之外,它还可以编辑字符格式和段落格式,并且提供了打印文本的功能 Text 和Lines属性:存放TRichEdit文本,可以在设计期间(Lines属性)或运行期间访问 DefAttributes和SelAttributes属性:DefAttributes属性是TRichEdit文本的当前默认字体式样;而SelAttributes属性,可以设置或返回被选择文本的字符格式。如果当前没有选中文本,则SelAttributes返回当前插入点前
14、一个字符的格式。 Paragraph属性:通过TRichEdit的Paragraph属性,可以设置或返回插入点所在段落的格式。如果选择了多个段落,则Paragraph属性描述的是其中第一个段落的格式。Paragraph属性是TParaAttributes对象 属性名称意义Alignment段落的对齐(右、左和居中)FirstIndent首行缩进的像素数LeftIndent左缩进的像素数Numbering表明是否要用项目符号RightIndent右缩进的像素数Tab制表键的数组,每个制表键的位置以像素值表示TabCountTab数组中制表键的个数PlainText属性:当PlainText属性设
15、置为true时,则TRichEdit组件中显示RTF文件时,将以普通文本的方式显示出来,否则以RTF文件中的格式显示 Print方法:调用组件的Print方法可以打印编辑器中的文本。Print方法需要传递一个字符串,用于在Windows打印管理器中标识打印任务示例: 3.6.2 TStringGrid组件 是一个二维字符型数组,该组件能以表格形式显示二维字符型数组中每个单元的数据。TStringGrid组件常用于处理数据界面组件无法处理的二维数据表的问题,如校历表、学生班级成绩表等。使用该组件时,可通过RowCount与ColCount属性确定数组的行数与列数。数组元素用Cells属性表示 T
16、StringGrid组件主要属性 属性名称意义RowCount用来确定TStringGrid组件数据表的行数ColCount用来确定TStringGrid组件数据表的列数FixedRows用来设置表格显示过程中固定不变的行数FixedCols用来设置表格显示过程中固定不变的列数FixedColor用来设置固定行与固定列的颜色Cells用来表示表格中的单元格Options用于控制表格线的显示方式,如行、列是否可互换,单元格数据是否可编辑等nTStringGrid组件的主要方法 : MouseToCell方法可将表格相对于屏幕的坐标转换为行和列数,并返回屏幕坐标(X,Y)所在单元的行和列。原型:v
17、oid _fastcall MouseToCell(int X, int Y, int &ACol, int &ARow); nTStringGrid组件的主要事件 :OnRowMoved/OnColumnMoved事件:当行/列的位置改变后,触发该事件。只有Options属性中goRowMoving/goColMoving值为true时,该事件才能发生。 OnDrawCell事件:当表格中的单元需要绘制时,触发该事件。OnSelectCell事件:表格中的单元被选中前,触发该事件。事件过程中的ACol和ARow参数指定将要被选中单元的行列索引,设置CanSelect参数为fa
18、lse可以防止单元被选中OnSetEditText事件:当用户编辑单元值时,触发该事件。事件过程中Value参数为ACol和ARow参数指定单元的新值。只有Options属性中goEditing值为true时,该事件才能发生。 3.6.3 TDateTimePicker和TMonthCalendar组件及日期类函数 n TDateTimePicker组件 :用编辑框方式显示、编辑日期或时间。程序运行时,用户单击编辑框下拉按钮时,组件用日历表方式供用户选择当前的日期。主要属性如下表: 属性名称意 义Date设置用户规定的日期,也可返回用户选择的日期Time设置用户规定的时间,也可返回用户选择的时
19、间Kind用来选择TDateTimePicker组件的显示类型。当Kind属性为dtkDate时,TDateTimePicker组件显示、编辑日期;当Kind属性为dtkTime时,显示编辑时间DateFormat用来控制日期的显示格式。值为dfShort时,以短日期格式显示两位年份, 如3/21/97;值为dfLong时,以长日期格式显示4位年份,如Friday, March 21, 1997TMonthCalendar组件 n以月历方式显示日期 属性名称意义Date设置用户规定的日期,也可返回用户选择的日期MaxDate日期变化的最大值MinDate日期变化的最小值MultiSelect与
20、EndDate属性结合实现TMonthCalendar组件的多选功能。值为true时,运行时可按下Shift键用鼠标选择连续的多个日期,起始/终止日期由Date/EndDate属性决定。值为false时,只能单选日期EndDate见MultiSelect属性的意义描述ShowToday该值为true时,在日历表下方显示今天的日期;否则不显示ShowTodayCircle当该值为true时,在日历表上用红圈标注今天的日期;否则不标注FirstDayOfWeek该属性决定日历表以星期几开始排列,当值为dowMonday时,星期一排在首位WeekNumbers当值为true时,在日历表的左侧显示周列
21、表日期类函数 n(1) 返回日期、时间函数Date()函数:返回系统当前日期Time()函数:返回系统当前时间Now()函数:返回系统当前日期与时间,相当于调用Date()+Time()(2) 日期类转换函数DateToStr(date()函数:将日期转换为字符串TimeToStr(time()函数:将时间转换成字符串日期类转换函数(续) DateTimeToStr(Now()函数:将日期时间转换成字符串EncodeDate(year,month,day)函数:将年、月、日转换成日期DecodeDate(date,year,month,day)函数:将日期转换成年、月、日EncodeTime(
22、hour,min,sec)函数:将时、分、秒转换成时间DecodeTime(time,hour,min,sec)函数:将时间转换为时、分、秒 DayOfWeek()函数:返回TDateTime日期类型对应的星期数 3.6.4 TPageControl组件 n多页组件,用来实现多页面窗体技术,每个页面上均能添加若干组件。程序运行时,通过单击页面标签可以在多页面之间进行切换 TPageControl组件的主要属性 属性名称意 义ActivePage设置TPageControl组件的当前页。单击该属性的下拉列表框,可选择不同页面MultiLine该值为true时,TPageControl组件呈多行风
23、格Images指定与TPageControl组件相关联的TImageList组件名,以便使用TImageList中的图像Pages运行时属性,记录TPageControl的所有页面。该属性是个数组,其元素类型为TTabSheet,元素个数存放在PageCount属性中,索引从0开始ActivePageIndex当前活动页的索引,从0开始计数。该属性也是运行时属性TTabSheet组件的主要属性 n示例:属性名称意义Caption设置页标签的名称PageIndexPageIndex为该页在Pages数组中的下标,从0开始TabVisible用来设置本页是否可见ImageIndex本页所使用图像在
24、TImageList中的索引值3.6.5 TTreeView和TListView组件 nTTreeView组件 :用树形目录结构显示、编辑、删除数据项 TTreeView组件主要方法和事件如下: FullCollapse方法:用来折叠所有数据项 FullExpand方法:用来扩展所有数据项 OnChanging事件:当被选数据项要发生变化时,触发该事件 OnChange事件:当被选数据项发生变化后,触发该事件 OnCollapsed事件:当某个数据项被折叠后,触发该事件 OnExpanded事件:当某个数据项被扩展后,触发该事件 TTreeView组件的主要属性 属性名称意义ItemsTTre
25、eView组件通过该属性来存储所有数据项。它的类型为TTreeNodeSelected该属性指出当前选中的数据项,类型为TTreeNode。如无数据项被选中,则返回NULLAutoExpand该属性值为true时,TTreeView组件的数据项自动展开和折叠;否则,不会自动展开HotTrack该属性值为true时,鼠标所指数据项被加亮显示;属性值为false时,正常显示Images该属性用来保存ImageIndex与SelectedIndex指定的图标,类型为TImageListShowButtons值为true时,TTreeView组件显示展开和折叠的“+”、“”按钮ShowLines值为t
26、rue时,TTreeView组件显示连接父、子数据项的直线ShowRoot值为true时,TTreeView组件显示根目录SortType指定组件中的数据何时自动排序:stNode不排序;stData数据对象改变时重排;stText数据项标题改变时重排;stBoth数据对象或标题改变时重排nItems编辑器 :可以使用4个按钮进行编辑 New Item :添加数据 New SubItem:添加数据项的子项 Delete:删除当前项及其所有子项 Load:从文本文件中读取数据项。文本文件格式为每一行写一个数据项,第二层的数据项前加Tab键。 n向Items添加的每一个数据项都有4个属性,用来显示
27、数据项的值或图像。这4个属性分别是 : Text :数据项显示文本 Image Index :图像索引,值为与TTreeView相关联的TImageList中的图像索引。运行时,该数据项前显示相应的图像 Selected Index:显示选中项的图像索引,-1禁止显示图像 State Index:为一个数据项选择附加图像索引,-1禁止显示图像 TListView组件 n用4种图形方式(大图标、小图标、列表、详细列表)来描述选项内容 ,属性如表所示: 属性名称意义ViewStyle用来选择数据项的4种显示方式:vsIcon,大图标;vsSmallIcon小图标;vsList,列表;Items用来
28、表示TListView组件的数据项,数据项可以用Items属性编辑器输入LargeImage当ViewStyle属性为vsIcon时,数据项对应的大图标放在LargeImages属性指定的TImageList组件中,图像索引由各个数据项的ImageIndex属性指定SmallImage当ViewStyle属性不为vsIcon时,数据项对应的小图标放在SmallImage属性指定的TImageList组件中,图像索引由各个数据项的ImageIndex属性指出Columns当ViewStyle属性为vsReport时,ListView组件以报表方式(即详细列表)显示数据项,报表各列的标题、宽度等信
29、息可以用Columns属性设置ShowColumnHeaders 该属性为true时,显示列标题;为false时,不显示列标题ColumnClick该属性为true时,可以单击表头,同时触发OnColumnClick事件nTListView组件的主要事件 : OnSelectItem事件 :当某个数据项被选中时触发该事件 OnColumnClick事件:当ListView工作于报表方式时,单击表头按钮触发该事件nItems编辑器:3个按钮,NewItem、New SubItem、Delete,分别用来添加数据项、添加数据项子项和删除数据项 3.6.6 TSplitter组件 n可以实现窗体分割
30、。如果想要建立一个运行时可以自由改变大小的区域,可以使用该组件。TSplitter组件在各个组件间合理分隔Form空间 n TSplitter组件的主要属性见下表属性名称意义Align控制TSplitter组件的位置和移动方向。值为alLeft或alRight时,该组件可以沿水平方向移动;值为alTop或alBottom时,该组件可以沿垂直方向移动Beveled值为true时,在TSplitter组件上将出现两条垂直(Align=alLeft或alRight)或水平凹下去(Align=alTop或alBottom)的直线MinSize如果Align属性为alLeft或alRight,则TSpl
31、itter组件左右两边组件的宽度不能小于MinSize值;如果Align属性为alTop或alBottom,则TSplitter组件上下两边组件的宽度不能小于MinSize值nTSplitter组件的主要事件 : OnCanResize事件:当用户试图移动TSplitter组件时被触发 OnMoved事件:当TSplitter组件被拖动且改变了相应组件的大小后,被触发 n示例3.6.7 TProgressBar进度条组件 n用来显示程序执行的进度,它的主要属性如下表 属性名称意义Max用来设置TProgressBar组件中位置的坐标的最大值Min用来设置TProgressBar组件中位置的坐标
32、的最小值Position提供TProgressBar组件中填充块的位置坐标值,以实现对其它组件的滚动控制Step用来设定TProgressBar组件的每步间隔3.7 程序调试方法 n程序错误类型 语法错误:键盘输入错误、命令格式不对、粗心大意等 运行错误:程序在输入或编译时没有出现错误,但在运行代码时产生了错误而导致了运行的中断 逻辑错误:算法上的错误 3.7.2 程序跟踪 n程序跟踪可以采用两种方法: 1. 传统方法,通过在程序中直接设置断点、输出重要变量内容等来掌握程序的运行情况 2. 直接利用C+Builder中的单步执行(Step Over)、跟踪(Trace Into)、断点设置(Add Breakpoint)、监视表达式(Add Watch)等功能对程序进行跟踪 n单步执行(Step Over) :一条语句一条语句地执行代码,通过查看应用程序的窗体和相关的调试窗体来判断该语句的执行是否正确(主要是观察变量和表达式的值是否正确,窗体上显示是否正常等)。 选择【Run|Step Over】或,即可开始程序的单步执行 n示例: n 跟踪执行(Trace Into):当需要得到函数调用过程中数据传递和函数内处理过程的细节时,可以通过在函数的调用位置选择跟踪(Trace Into)(),在函数内再使用单步执行进行调试 n设置断
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 初中校级课题申报书
- 发票供销合同范本
- 南汇家电运输合同范本
- 保时捷合同范本
- 网球课题申报书格式要求
- 公司交保险合同范本
- 全国合同范本模板
- 合同范本是几号字体
- 买卖小型合同范本
- 中介签独家合同范本
- 2025年湖南水利水电职业技术学院单招职业技能测试题库附答案
- 2025年哈尔滨铁道职业技术学院单招职业适应性测试题库1套
- 2025年湖南食品药品职业学院单招职业倾向性测试题库参考答案
- 2025年湖南水利水电职业技术学院单招职业适应性测试题库1套
- 国网公司安全责任清单
- 2025届高考百日誓师大会校长发言稿
- 2025年家政服务策划免责声明协议
- 膀胱癌护理疑难病例讨论
- 2025年春期六年级班主任工作计划
- 译林版小学英语四年级上册单词表(分单元含音标)
- 2025年江苏无锡市属国有企业招聘笔试参考题库含答案解析
评论
0/150
提交评论