300 likes | 560 Views
Keep on walking. 《Delphi 程序设计 》 工学结合特色精品课程. —— 杨丽敬. Delphi 中的类 窗体 容器类组件 文本显示与编辑组件 按钮 选项按钮. 列表组件 组件的布局 Timer 组件. Chap3 可视化程序设计与基本组件. 组件与 TComponet 类. 组件的分类. 返回. 窗体(一). 窗体也是一个组件,也具有属性。 窗体的主要属性 name 、 caption :名称和标题 left 、 top :窗体的位置 height 、 width :窗体的高度和宽度
E N D
Keep on walking 《Delphi程序设计》工学结合特色精品课程 ——杨丽敬
Delphi中的类 窗体 容器类组件 文本显示与编辑组件 按钮 选项按钮 列表组件 组件的布局 Timer组件 Chap3 可视化程序设计与基本组件
组件的分类 返回
窗体(一) • 窗体也是一个组件,也具有属性。 • 窗体的主要属性 name、caption:名称和标题 left、top:窗体的位置 height、width:窗体的高度和宽度 Color、font:窗体客户区的背景颜色与窗体的字体 visible、 enabled:窗体组件的可视性和有效性 windowsState:窗体运行时的初始状态 position、borderStyle:窗体运行时的位置和边框类型(详见参考书)
窗体(二) • 窗体的主要事件 OnCreate(分配资源设置窗体的标题、位置、是否最大化等初值)和OnDestroy(释放资源) OnActivate(窗体被激活)OnDeactivate (窗体失去焦点) OnCloseQuery(是否关闭窗体)和OnClose (枚举类型的参数action决定它关闭from的操作,多用于MDI的子窗体)值为: canone:form不关闭,无任何操作; cafree:释放form所占的内存; cahide:隐藏form; caminimize:最小化form 4.Onkeydown (在窗体上按下任意键触发)与onkeyup(释放时)
OnCanResize和OnResize(组件改变大小时触发) OnShow和OnHide(组件隐藏时触发) • 小结: • 窗体事件有多种,常见的如上所述,其它可慢慢积累。 建立窗体的顺序:见2.3.1演示窗体创建和获得焦点事件例子 OnCreate Onshow OnActivate 其它事件 结论:每个组件激发的事件是有顺序性的。 返回
实验五、窗体练习 • 试验目的:进一步熟悉可视化编程的步骤 • 实验内容: 如何改变窗体上几个组件获得焦点的次序; 修改窗体的简单属性观察效果,例:窗体的图标(*.ico); 分别实验窗体上的五个事件(create\closequery\close\keydown\keypress); 嵌入窗口的创建; 创建启动画面。(两种方式)
消息框函数 • 1.格式1MessageDlg(‘提示信息串',消息框类型,按钮类型,0); 例:MessageDlg( '继续吗?', mtwarning, [mbyes,mbno], 0); ①信息串可以是任意字符。 ②消息框类型决定窗口的标题和图标,有5种MtWarning、mtError、mtinformation、mtconfirmation、mtcustom ③按钮类型有16种按钮类型要加方括号,且多个按钮用逗号隔开:如 [mbok, mbcancel]。但以下类型不用加方括号: mbyesnocancel, mbokcancel, mbAbortRetryIgnor。 ④函数返回值为:所按的按钮文本字符前加 mr。 即:mryes, mrno, mrok, mrcancel, mrAbort, mrRetry, mrIgnore等。 2.格式2MessageDlgPos(‘提示信息串',消息框类型,按钮类型,0, x, y );x, y 表示信息框出现的位置,为屏幕像素值。如:MessageDlgpos( '继续吗?', mtwarning, [mbyes,mbno], 0, 200, 200 );
MessageBox函数MessageBox函数是WindowsAPI函数,在DELPHI6中能够直接使用。1.格式1:MessageBox( hWnd, Text,Caption, style );如:messagebox(form1.handle ,' 退出本系统吗?','hello',mb_yesno+mb_iconquestion);注:handle是指句柄(1)Style参数通常由以下二部分组合:l 按钮类型常量MB_ABORTRETRYIGNORE 、 MB_OK 、 MB_OKCANCEL、MB_RETRYCANCEL、MB_YESNO、MB_YESNOCANCEL; retry重试 abort 放弃 、取消、终止l 图标类型常量{icon}MB_ICONEXCLAMATION(或MB_ICONWARNING):显示感叹号MB_ICONINFORMATION(或 MB_ICONASTERISK):显示小写字母iMB_ICONQUESTION: 显示问号?MB_ICONSTOP(或MB_ICONERROR 或 MB_ICONHAND):显示错误标志X注:函数返回值(详见帮助)Value 数值 MeaningIDOK 1 OK button was selected.IDCANCEL 2 Cancel button was selected.IDABORT 3 Abort button was selected.IDRETRY 4 Retry button was selected.IDIGNORE 5 Ignore button was selected.IDYES 6 Yes button was selected.IDNO 7 No button was selected. • 格式2application.MessageBox( Text,Caption, style );如:application.MessageBox('This is a sample!','HELLO',MB_OK+MB_ICONEXCLAMATION);
容器类组件 • GroupBox • 组框,一个带有标题的组件。 • Panel:以多种三维效果显现出来的矩形区域 返回
文本显示和编辑组件 • Label标签与Edit单行编辑框 • MaskEdit格式编辑框 • Memo、RichEdit与SpinEdit 返回
文本显示与编辑 • Label见3.2.1使用Label组件例子 • 只能显示文本,不能编辑。其主要属性有: Caption(标题)、autosize(自动调整大小)、alignment(文本水平对齐)、Layout(文本垂直对齐)、WordWrap(换行)、transparent(透明) • Edit:编辑单行文本见1.4.1转换大小写例子 主要属性:autoselect(获得焦点修改替换)、enabled(是否可用)、BorderStyle(边框风格)、passwordchar(以遮掩形式显示如* )、readonly(只读不能修改,但可以复制)、Text(显示内容的值)、TabOrder(焦点获取的顺序)、Charcase(大小写) 常用事件:onChange 此事件可区分modified属性是否变化 3.运行起来的属性 Seltext sellength等 如果把一个Lable组件的FocusControl 属性设置为同一个表单上的Edit组件, label中Caption包含有&字符,如&File, F下面有下花线。你一按ALT+F,焦点 就到label相应的Edit了。
可在keypress事件用以下语句获得焦点: • If key=#13 then edit1.setfocus; • 如果内容修改可在onexit事件中加入: • If edit1.modified then • Begin • Edit.selectall; Edit1.CopyToClipboard; • Edit2.PasteFromClipboard; • End; 返回
*MaskEdit(additional页) • MaskEdit:定制编辑框的输入格式其主要属性有 EditMask:是用来控制用户输入数据格式的屏蔽字符串。 屏蔽分为三部分,用分号分隔,如“!99/99/00;1;_”。第一部分是屏蔽的主要部分,决定数据的格式;第二部分决定是否将屏蔽中的字符作为数据的一部分,它将影响Text属性中的值;第三部分指出屏蔽中用来代表未输入数据的字符。 Text、EditText • 当屏蔽字符串第二部分为0时,Text表示用户输入的字符串,EditText表示带格式的字符串。当屏蔽字符串第二部分为1时,Text和EditText属性的值是相同的,都是带格式的字符串(保留合法字符的选项)。 • 注意:EditText是运行时属性,在“ObjectInspector”中看不到。
Memo、RichEdit与*SpinEdit • Memo:处理多行文本 • 主要属性:Lines(设置多行文字)、WantReturns(ctrl+Enter的不同)、WantTabs(ctrl+Tab的不同)、ScrollBars(水平或者垂直滚动条)见2.6.2记事本例子gettextlen 及lines的各种方法(同后面items) • Rich Edit:多行RTF(rich text format) 文本编辑框 主要属性:SelStart(第一个字符编号为0)、SelLength(长度)、DefAttributes(缺省)、SelAttributes(选定)、Paragraph 主要事件:OnSelectionChange *SpinEdit:渐变编辑框(sample页) 主要属性:Value、MaxValue、MinValue 主要事件:OnChange。 返回
SelText:表示编辑控件文本的所选部分; SelStart:指定第一个被选字符的位置; SelLength:指定被选字符数。 而SelAttributes是一个TTextAttributes对象,包括字体名、颜色、大小、字形,利用它可以获得或设置当前选择文本的字体格式。要改变当前所选文本的单个属性,可以读取SelAttributes,并设置其中一个属性。要改变所有属性,可把SelAttributes设为具有要求配置格式的TTextAttributes对象。如果没有所选文本,SelAttributes就表示光标所在位置的格式。而如果再插入新的文本,它的字体格式将匹配SelAttributes。 缺省字符格式DefAttributes
实验六、界面组件练习一 • 试验目的:基本组件的练习 • 试验内容: 完成图3.10选择界面的效果 Combobox编辑框的新输入的值加入到下拉列表中,并使新值与原来的值不重复。 实训:设计只能输入18位身份证号的编辑框,并把输入的数字赋给自己定义变量id; 总结那些组件有items属性
按钮 • Button:一种有标签的灰色组件 主要属性:cancel、default都会以taborder的数为准 主要事件:OnClick • BitBtn:按钮表面可显示位图文件,按钮文本颜色也可改变,其主要属性有: Kind(常见按钮) Glyph(选用文字) Layout(图片与文字的布局) • SpeedButton:一种可成组工作的按钮,其主要属性有: Down(默认为false,并且groupindex要设置才生效 ) Flat GroupIndex(值为0表示不和其它组件协同工作) 见3.3.2按钮例子
选项按钮 • CheckBox • 复选框,是一个旁边带有文字说明的方框,有选中和未选中两种状态,其主要属性为Checked、allowgrayed、state • RadioButton • 单选按钮,一组互斥的选择,其主要属性为Checked。 • RadioGroup • 单选按钮组,一个GroupBox与一组RadioButton的组合,其主要属性有: • columns、items、itemindex见3.3.3单选框和复选框例子 返回
Items属性 • Items属性的类型是Tstrings数组 • Items类常用的属性有: 增加项add 插入项insert 删除项delete 统计项数count 清除项clear
列表组件 • ListBox:列表框,一个内含若干选项的显示框。 主要属性:items、itemindex(用 • ListBox 1. items [ListBox 1. itemindex]表示选中项的字符串)、columns、multiSselect(是否允许多选)、Selected(是否被选中结果是布尔型的如: Selected [i]为true,表示第i-1个选项被选中)、sorted(指示 ListBox中的项是否按字母顺序排序。 )EXtendselect 主要方法:clear(清除所有选项) • ComboBox:组合框,是Edit和ListBox的结合体。 主要属性:dropdowncount、maxlength(仅对style的几种有效)、style、text(表示当前项的值) 主要方法:clear 注意与ListBox的区别 主要事件:与listbox类似,还有ondropdown • CheckListBox:是ListBox的一个扩展 • 主要属性:checked、state见example3-3 返回
组件的布局 • 布局工具 选择多个组件(按下shift再选择) 对齐组件工具Edit|size、align 调整组件大小 • Parent属性:父控件(包容器)见例窗体的嵌入 • Owner属性:指组件的所有者,他负责组件的组件的创建和释放。比如窗体上的组件的所有者就是窗体,而窗体的所有者是Application • Owner是拥有该控件的类,最后负责删除该控件 Parent该控件的父控件,该控件放在Parent控件上。 例如:一个Label的Owner一般是Form,但 Parent可能是一个Panel. • 共同点:运行阶段的属性,只能通过代码设置
实验七、界面组件练习二 实验目的: • 熟练掌握简单组件 实验内容: 参照project_xsda.dpr界面添加组件
Delphi易混淆的几个概念 • Self和sender • sender 在事件处理程序中,至少包含一个参数sender,它代表触发事件处理程序的组件,有了该参数就可以使多个组件共用相同的事件处理程序。 • Self只能用于方法中,不能用于过程中。它所编程序范围是在哪一个类中。Delphi大多是在窗体范围内编程,self即指窗体,即代表“.”号前的组件名。 • Sender--意义:指本对象。Sender在什么对象相关代码里,那么Sender就是什么。Self--意义:指本类,也就是Self被引用的类。比如若在类TMyClass内引用了Self,那么Self=TMyClass.
Splitter分隔条 主要属性:align、beveled(是否出现凹陷的直线)、MinSize(组件旁边组件的最小值) 主要事件 • OnCanResize:splitter组件被拖动而试图改变其他组件大小时触发 • OnMove:splitter被拖动且改变了相应组件的大小后触发见例3-4 • Bevel组件实现分隔 返回
Timer定时器 • Timer定时器是一个非可视化组件,能够定时地触发OnTimer事件,完成模拟时钟、系统延时等工作。 • 主要属性 Enabled:当值为true时,打开定时器;否则关闭定时器。默认值为true。 Interval:控制OnTimer事件触发的时间间隔,单位是毫秒,类型是Integer。将Interval设置为0,相当于关闭定时器。默认值为1000(1秒)。 • OnTimer事件 • 当Timer打开时,每经过Interval属性指定的时间,Timer就会触发OnTimer事件,执行其中的程序。 • 见3.5计时器例子
感谢聆听! Thanks for your time!