收藏 分销(赏)

第3章-窗体和基本组件.ppt

上传人:快乐****生活 文档编号:7518288 上传时间:2025-01-07 格式:PPT 页数:119 大小:637KB 下载积分:20 金币
下载 相关 举报
第3章-窗体和基本组件.ppt_第1页
第1页 / 共119页
第3章-窗体和基本组件.ppt_第2页
第2页 / 共119页


点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,化学工业出版社,第3章 窗体和基本组件,在程序设计中,程序界面是非常重要的,界面是否美观、友好给用户的是第一印象。程序界面元素主要有窗体和基本组件。窗体是应用程序的操作界面,程序的操作元素都必须添加到窗体上,没有窗体程序的框架就无法建起。而基本组件则是用户与应用程序交互的工具,有了这些基本的常见的组件用户才能够方便操作程序,程序才能够响应用户的请求。,Delphi 2005中的组件可以分为VCL Forms组件和Windows Form组件,虽然这些组件有相同的地方,但是它们仍然有一些不同之处。例如在VCL中Label组件具有Caption属性,而在Windows Form中则是Text属性。本章主要介绍VCL Forms组件,Windows Form组件读者可以举一反三。,3.1 窗体,窗体是应用程序的操作界面,用于存放组件,没有窗体应用程序就无法搭建。窗体由标题栏、工作区、边界构成。标题栏不仅有控制菜单、还有最小化、最大化(恢复)、关闭等按钮,窗体的标题栏可以用于改变窗体的大小、位置,还可以最大化、最小化、恢复窗体的大小位置等操作。可以在窗体标题栏中显示窗体的标题文字。边框可以用于调整窗体的大小。工作区是窗体存放组件的位置。下面以建立VCL Forms Application为例讲述窗体,Windows Forms Appication中的窗体类似于VCL Forms Application中的窗体。,1窗体的属性,窗体的属性用来描述窗体的高低、长宽、颜色、边框的,主要属性有如下一些。,(1)Name属性和Caption属性,Name属性,对象的名称属性,它用来唯一标识对象,一个程序中不同对象的名称是不能够相同的。系统是根据对象的名称来识别不同对象的。对象的名称最好要做到见名知义,如Form1表示窗体,而Edit1表示文本框。,Caption属性,窗体的标题文字,是字符类型。默认情况下,窗体的Caption属性是与Name属性是相同的。可以修改窗体的标题文字,例如,设置窗体的标题文字为“游戏程序”。,(2)Height、Width、ClientHeigth、ClientWidth、Top和Left属性,Heigth、Width分别表示窗体的高度和宽度。ClientHeigth、ClientWidth分别表示窗体工作区的高度和宽度(工作区是不包括标题栏和边框的)。Top和Left分别表示窗体左上角在屏幕中的垂直和水平位置。,(3)Enabled属性,窗体是否有效,值为True时窗体有效,此时窗体可以响应各种事件,值为False 时窗体无效,窗体不响应事件。,(4)Visible属性,窗体是否显示,值为True时窗体显示,值为False时窗体不显示。,(5)Color属性,窗体的颜色,颜色可以使用rgb函数来表示,也可以使用类似的clbackground等枚举值。,(6)Font属性,窗体的字体属性,包括字的大小、颜色、下划线、删除线、粗体和斜体等。单击属性font后面的省略号按钮,出现系统设置字体对话框。,(7)Align属性,Align属性用来决定窗体在屏幕中的对齐方式,该属性是枚举类型,其具体取值及其含义参见表3-1。,2窗体的事件,窗体的事件很多,常用的事件有如下一些。,(1)OnCreate事件:建立窗体时首先触发该事件,一般把程序的初始化代码写在OnCreate事件过程中。,(2)OnShow事件:显示窗体时,触发该事件。,(3)OnPaint事件:重画窗体事件,窗体改变大小,窗体被遮盖时触发该事件。,(4)OnActivate事件:激发窗体的时候(窗体得到焦点)触发该事件。,(5)OnClose事件和OnCloseQuery事件:关闭窗体时触发这两个该事件。当窗体要关闭时,首先触发OnCloseQuery事件,该事件处理过程中有一个Boolean类型的参数CanClose,默认值为True,表示窗体可以关闭,当CanClose的值为False时窗体不能关闭,不会触发OnClose事件。如果在OnCloseQuery事件过程中设置CanClose的值为False则窗体可以关闭,接下来将触发OnClose事件。在Onclose事件处理过程中,有一个参数Action,用来决定关闭窗体的实际操作。Action的取值和意义参照表3-6所示。,3窗体的方法,窗体的方法很多。常用的方法主要有如下几个。,(1)Release方法:从内存释放窗体。,(2)Show方法:显示窗体。,(3)Hide方法:隐藏窗体。,(4)Close方法:用于关闭窗体,例如:Form1.Close表示关闭窗体,并触发OnClose事件和OnCloseQuery事件。,4窗体的应用举例,【例3-1】要求程序运行时,窗体位于屏幕中央,请编写程序。,分析,本程序应该在窗体的OnFormCreate事件过程中写代码,代码如下:,procedure TForm1.FormCreate(Sender:TObject);,begin,Form1.Left:=(1024-form1.Width)div 2;,form1.Top:=(768-form1.Height)div 2 /假设屏幕分辨率为1024*768,end;,【例3-2】要编写Form的OnClose和OnCloseQuery事件过程,有时候关闭程序的时候弹出对话框提示是否关闭窗口。请编写程序。,分析:本程序可以使用OnCloseQuery事件来完成,先添加按钮Button1,编写Button1的OnClick事件过程,如下:,procedure TForm1.Button1Click(Sender:TObject);,begin,form1.Close;/该方法将首先触发OnCloseQuery事件,end;,再编写Form1的OnCloseQuery事件过程,代码如下:,procedure TForm1.FormCloseQuery(Sender:TObject;var CanClose:Boolean);,var,i:word;,begin,i:=messagedlg(是否关闭窗口?,mtconfirmation,mbyes,mbno,1);,if i=mryes /点击“是”按钮,then canclose:=true /关闭窗口,将触发OnClose事件,else canclose:=false /不关闭窗口,不会触发OnClose事件,end;,说明:点击Button1按钮或者直接点击窗体右上角的关闭按钮程序将触发Form1的OnCloseQuery事件,程序提示“是否关闭窗口?”,选择“yes”可以关闭窗口,选择“no”不关闭窗口。,说明:点击Button1按钮或者直接点击窗体右上角的关闭按钮程序将触发Form1的OnCloseQuery事件,程序提示“是否关闭窗口?”,选择“yes”可以关闭窗口,选择“no”不关闭窗口。,上面的程序还可以不使用Form1的OnCloseQuery事件,而使用Form1的OnClose事件,可以将上面的Form1的OnCloseQuery事件过程改成Form1的OnClose事件过程,代码如下:,procedure TForm1.FormClose(Sender:TObject;var Action:TCloseAction);,var,i:word;,begin,i:=messagedlg(是否关闭窗口?,mtconfirmation,mbyes,mbno,1);,if i=mryes,then Action:=cafree /关闭窗口,else Action:=canone /不关闭窗口,end;,说明:点击Button1按钮或者直接点击窗体右上角的关闭按钮,此时触发Form1的OnCloseQuery事件,由于Form1的OnCloseQuery事件过程中参数CanClose的默认值是True,因此程序触发Form1的OnClose事件。程序提示“是否关闭窗口?”,选择“yes”可以关闭窗口,选择“no”不关闭窗口。,3.2 VCL Forms组件,窗体是应用程序的操作界面,用于存放组件,因此必须在窗体里面加入其他组件,只有这样用户才可以和程序交互。本节将讲述最常见的几个VCL可视化组件。其中标签、单行文本框、多行编辑框是文本类组件,Panel、Splitter、GroupBox等组件用于分组,Button、BitBtn、SpeedButton、CheckBox、RadioButton和RadioGroup则属于按钮类组件。根据用户建立的是Windows Forms应用程序还是VCL Forms应用程序,系统会自动切换到相应的组件面板。,3.2.1 Label组件,Label标签是最常见的文本显示组件,与文本框不同的是,文本框可以编辑,标签运行之后就不能够直接编辑了。因此它主要用于静态的文本显示。Label组件位于Standard组件面板中。,Label标签是最常见的文本显示组件,与文本框不同的是,文本框可以编辑,标签运行之后就不能够直接编辑了。因此它主要用于静态的文本显示。Label组件位于Standard组件面板中。,1Label的属性,(1)Caption属性:标签上显示的文字,如果Caption属性中含有字符“&”,那么该字符之后的第一个字符为加速键。,(2)FocusControl属性:按下加速键时,获得焦点的组件。,(3)AutoSize属性:Boolean型,决定标签是否随文字的变化而改变标签大小。,(4)Alignment属性:标签的对齐方式,有3个枚举值,分别是左对齐、居中对齐、右对齐。,(5)Layout属性:标签的对齐方式,有3个枚举值,分别是上对齐、居中对齐、右对齐。,(6)WordWrap属性:Boolean型,是否换行显示。,(7)Transparent属性:Boolean型,背景是否透明。,2Label的应用,【例3-3】编写一个密码登录框程序。,程序设计步骤:,(1)程序可以使用标签、编辑框、命令按钮等等,界面设计如图3-1所示。,(3)编写程序如下:,确定按钮的Button1的OnClick事件过程:,procedure TForm1.Button1Click(Sender:TObject);,begin,if(uppercase(edit1.Text)=ABCDEF)and(edit2.Text=123),then showmessage(欢迎使用本系统),else,begin,showmessage(口令或者用户名错);,edit1.Text:=;,edit2.Text:=;,edit1.SetFocus;,end;,end;,取消按钮的Button2的OnClick事件过程:,procedure TForm1.Button2Click(Sender:TObject);,begin,edit1.Text:=;,edit2.Text:=;,edit1.SetFocus,end;,说明:uppercase()函数可以将输入的小写英文字母变成大写英文字母。,3.2.2 Edit组件,Edit编辑框是最常见的文本输入、显示组件,它不仅可以输入、显示而且还可以编辑修改。Edit组件位于Standard组件面板中。,1Edit组件的属性,(1)Text属性:String类型,文本框中的文本内容。,(2)AutoSelect属性:Boolean类型,当编辑框得到焦点的时候,是否自动选定文本。值为True时当编辑框得到焦点自动选动文本框中的文字,值为False时编辑框得到焦点不选定文本框中的文本。,(3)Enabled属性:Boolean类型,编辑框是否有效,值为True时编辑框有效,值为False时编辑框无效。,(4)ReadOnly属性:Boolean类型,决定编辑框中的内容是否可以编辑。,(5)SelStart属性:Integer类型,选定文本的首字符的位置,或者光标所在位置。编辑框的第一个字符的序号是0。,(6)SelLength属性:Integer类型,被选定文本的长度。,(7)SelText属性:String类型,被选定的文本内容。如果设置了SelStart属性和SelLength属性,则自动会选定一段文字,文字的内容为SelText。,(8)CharCase属性:枚举类型,ecNormal,表示不改变输入字符的大小写,ecLowerCase表示将输入的字符中的英文转化为小写字符,ecUpperCase表示将输入的字符中的英文转化为大写字符。,(9)HideSelection属性:Boolean类型,选定的文字是否以加强的背景颜色显示。,(10)PasswordChar属性:默认值是#0,此时,原样显示编辑框中的字符,如果将其设置为其它字符,如“*”,则编辑框中的所有字符都显示为“*”(虽然显示为“*”,但是Text属性仍然不会改变),一般用于设置口令。,2Edit组件的方法,(1)SetFocus:置焦点。,(2)SelectAll:选定所有文本。,3Edit组件的主要事件,(1)OnChange事件:编辑框的内容发生改变。,(2)OnEnter事件:编辑框得到焦点。,(3)OnExit事件:编辑框失去焦点。,(4)OnKeyPress事件:按键事件,参数Key表示所按下的字符,它返回的是一个字符。,(5)OnKeyDown事件:键盘按下事件,Key为返回的按键(如A和a的Key都是65),还可以通过参数Shift检测Shift、Ctrl、Alt等键是否被按下。,(6)OnKeyUp事件:键盘松开事件。参数与OnKeyDown类似。,可以将【例3-3】的程序改进一下,编写Edit2的OnKeyPress事件过程:,procedure TForm1.Edit2KeyPress(Sender:TObject;var Key:Char);,begin,if key=#13 then /如果按回车键,begin,if(uppercase(edit1.Text)=ABC)and(edit2.Text=123),then showmessage(欢迎使用本系统),else,begin,showmessage(口令或者用户名错);,edit1.Text:=;,edit2.Text:=;,edit1.SetFocus;,end;,end;,end;,说明:改进后的程序在输入用户名和口令后无需按“确定”按钮,直接在Edit2中按回车即可判断用户名和口令是否正确。,4Edit的应用,【例3-4】设计一个小学生加法练习器。练习器能随机给出两个两位数的正整数,要求写出两数之和,如果结果正确则提示“你真聪明”,如果答案错误则提示“错误,重做”。请编写程序。,程序设计步骤:,(1)添加组件,在窗体中添加Edit1、Edit2和Edit3,添加Label1和Label2,添加Button1和Button2。设置Label1的Caption为“+”,Label2的Caption为“=”,设置Button1的Caption为“出题”,Button2的Caption为“判断”。设置3个Edit的Text为空,并调整组件的位置和大小。界面如图3-2所示。,(2)编写程序,如下:,procedure TForm1.Button1Click(Sender:TObject);,var,x,y:integer;,begin,randomize;,x:=10+random(90);,y:=10+random(90);/x,y是两位数,edit1.Text:=inttostr(x);,edit2.Text:=inttostr(y);,edit3.Text:=;,edit3.SetFocus;/Edit3置空,并置焦点等待输入结果,end;,procedure TForm1.Button2Click(Sender:TObject);,var,z,i:word;,begin,z:=strtoint(edit3.Text);,if z=strtoint(edit1.Text)+strtoint(edit2.Text),then i:=messagedlg(你真聪明,mtinformation,mbok,1),else,begin,i:=messagedlg(错误,请重做,mterror,mbok,1);,edit3.Text:=;,edit3.SetFocus;/错误后需要重做,end,end;,说明:如果本程序要求每次运行都出题10次,出题10次后,程序自动结束。这时可以借助一个属性Tag,绝大多数组件都有Tag属性,Tag属性的初始值为0。一般可以把Tag看成一个整型的全局变量。修改后的程序如下:,procedure TForm1.Button1Click(Sender:TObject);,var,x,y:integer;,begin,randomize;,x:=10+random(90);,y:=10+random(90);/x,y是两位数,edit1.Text:=inttostr(x);,edit2.Text:=inttostr(y);,edit3.Text:=;,edit3.SetFocus;/Edit3置空,并置焦点等待输入,form1.Tag:=form1.Tag+1;/初始值为0,每出一道题Tag加1,end;,procedure TForm1.Button2Click(Sender:TObject);,var,z,i:word;,begin,z:=strtoint(edit3.Text);,if z=strtoint(edit1.Text)+strtoint(edit2.Text),then i:=messagedlg(你真聪明,mtinformation,mbok,1),else,begin,i:=messagedlg(错误,请重做,mterror,mbok,1);,edit3.Text:=;,edit3.SetFocus;/错误后需要重做,end;,if form1.Tag=10 then application.Terminate;,end;,说明:虽然读者还没有接触到变量的作用域的相关知识,但是此处巧妙地利用Tag属性解决了类似变量作用域的问题。在程序的很多地方,读者都可以使用该属性,希望读者能够举一反三。,3.2.3 Memo组件,Edit组件仅可以显示单行文本,如果要显示多行文本则显得无能为力,要处理多行文本需要使用Memo组件。,1Memo的属性。,(1)Lines属性:用于对Memo组件中的内容进行处理。单击Lines属性后的按钮,打开“String List Editor”对话框,在其中输入多行字符串。,Lines实际上是一个对象,它是一个数组,下标从0开始。例如:s:=Memo1.Lines3;表示将Memo1中第4行文本内容赋值给变量s。Lines还有如下一些用法:,Memo1.Lines.Add(A New Line);/在最后添加一行,Memo1.Lines.Delete(4);/删除第5行,Memo1.Lines.Insert(1,Insert A New Line);/在第2行插入一行,Memo1.Lines.Move(3,5);/将第4行移动到第6行,(2)WantReturns属性:Boolean属性,值为True时按Enter键插入一个回车符,值为False时按Enter表示提交,如果想输入回车符则需要按Ctrl+Enter键。,(3)WantTabs属性:值为True时,按Tab键插入一个Tab字符,值为False时按Tab键将改变或的焦点的组件。,(4)ScrollBars属性:控制Memo组件的滚动条,取值分别有ssNone(无滚动条)、ssHorizontal(只有水平滚动条)、ssVertical(只有垂直滚动条)和ssBoth(同时有水平与垂直滚动条)。,(5)Modified属性:确定Memo组件是否被修改了。2Memo的应用,【例3-5】在Memo中输入文字,按“提交”按钮后,文字显示在标签中。要求按回车键也可以将文本显示在标签中。请编写程序。,分析:应该将Memo1的WantReturns属性设置为False,并且将“提交”按钮的Default属性设置为True。其他组件的属性设置比较简单,程序代码也比较简单。,程序设计步骤:,(1)添加组件Button1、button2、Memo1和Lable1到窗体。并设置组件的属性,界面如图3-3所示。,图3-3【例3-5】的用户界面,(3)编写程序如下:,procedure TForm1.Button1Click(Sender:TObject);,begin,label1.Caption:=memo1.Text;,end;,procedure TForm1.Button2Click(Sender:TObject);,begin,memo1.Text:=;,label1.Caption:=;,end;,(4)按F9键运行程序。如图3-4所示。,图3-4 程序运行界面,说明:这里将Memo1的WantReturns设置为False,并且设置Button1的Default为True,这样设置后,在Memo1中输入内容后直接按回车键,相当于单击Button1(“提交”)按钮。按“ESC”键相当于按“取消”按钮,。,3.2.4 RichEdit组件,RichEdit组件是基于Windows RTF(Rich Text Format)格式的文本框,RichEdit是包含各种编辑格式的多行文本编辑器,它可以设置不同文本的格式,如颜色、字体、字号、下划线、粗体、斜体、对齐方式等等。RichEdit组件位于Win32组件面板中,。,1主要属性,(1)SelStart属性、SelLength属性、SelText属性、WantReturns属性、WantTabs属性、ScrollBars属性、Modified属性、HideSelection等属性。这些属性和Edit组件和Memo组件类似。,(2)SelAttributes属性:选定文字的字体。下面的语句将字体对话框Fontdialog1中选定的字体赋给RichEdit1中选定的文本。还有一些用法将在后面章节详细讲解。,Richedit1.SelAttributes.Assign(Fontdialog1.Font);,(3)DefAttributes属性:RichEdit默认字体。下面的语句将RichEdit1默认的字体赋给字体对话框FontDialog1。,Fontdialog1.Font.Assign(Richedit1.DefAttributes);,2主要事件,(1)OnChange事件:RichEdit组件中的内容发生变化,触发该事件。,(2)OnSelectionChange事件:选定文本触发该事件。,3主要方法,(1)CopyToClipboard方法:复制到剪切板。,(2)CutToClipboard方法:剪切到剪切板。,(3)PasteFromClipboard方法:从剪切版粘贴,用剪切板上的内容覆盖选定的内容。,Lines对象的主要方法有:,(1)SaveToFile方法:将RichEdit组件中的内容保存。如下面语句可以将RichEdit1中的内容保存到保存对话框Savedialog1所指定的文件名。,Richedit1.Lines.SaveToFile(Savedialog1.FileName);,(2)LoadFromFile方法:在RichEdit中打开一个文件。如下面的语句可以将打开对话框Opendialog1所指定的文件在RichEdit1中打开。,Richedit1.Lines.LoadFromFile(Opendialog1.FileName);,4RichEdit组件的简单应用。,【例3-6】编制一个简单的编辑器,要求该编辑器具有“复制”、“剪切”、“删除”、“粘贴”、“取消”、“全选”等功能。,分析:本程序将要用到RichEdit组件,并且要用到RichEdit组件的一些方法和属性。,程序设计步骤:,(1)添加组件RichEdit组件1个、Button组件6个到窗体,并调整大小和位置,界面如图3-5所示。,(2)属性设置省略。,(3)编写代码如下:,procedure TForm1.Button1Click(Sender:TObject);,begin,richedit1.CopyToClipboard;/复制,end;,procedure TForm1.Button2Click(Sender:TObject);,begin,richedit1.CutToClipboard;/剪切,end;,procedure TForm1.Button3Click(Sender:TObject);,begin,richedit1.SelText:=;/删除,end;,procedure TForm1.Button4Click(Sender:TObject);,begin,richedit1.PasteFromClipboard;/粘贴,end;,procedure TForm1.Button5Click(Sender:TObject);,begin,richedit1.Undo;/取消,end;,procedure TForm1.Button6Click(Sender:TObject);,begin,richedit1.HideSelection:=false;/选定文本反底显示,richedit1.SelectAll;/选定所有文本,end;,procedure TForm1.RichEdit1SelectionChange(Sender:TObject);,begin,if RichEdit1.SelLength=0,then,begin,/如果未做选定,则复制、删除、剪切按钮无效,button1.Enabled:=false;,button2.Enabled:=false;,button3.Enabled:=false;,end,else,begin,/如果选定了文本,则复制、删除、剪切按钮有效,button1.Enabled:=true;,button2.Enabled:=true;,button3.Enabled:=true;,end,end;,procedure TForm1.FormCreate(Sender:TObject);,begin,if RichEdit1.SelLength=0,then,begin,/如果选定的文字为空,则复制、删除、剪切按钮无效,button1.Enabled:=false;,button2.Enabled:=false;,button3.Enabled:=false;,end,else,begin,/如果选定的文字不为空,则复制、删除、剪切按钮有效,button1.Enabled:=true;,button2.Enabled:=true;,button3.Enabled:=true;,end,end;,说明:虽然RichEdit没有提供删除方法,但是语句“richedit1.SelText:=;”的作用是将选定的文本置空,也就是删除选定的文本。这里的空字符千万不要写成空格字符。,3.2.5 Panel组件,Panel面板是一个以多种三维效果显示的矩形区域。它可以将窗体分成规则的几块,为窗体中的组件提供可视化的分组。Panel组件位于Standard选项卡中。,1Panel的主要属性如下:,(1)Caption属性:面板上显示的标题文字。,(2)Align属性:Panel的对齐方式,枚举类型,有如表3-9所示的一些取值。,例如,如图3-6所示的Panel1的Anchors属性值为akRight,akTop,akBottom,则窗体变大的时候,Panel1到窗体右边的距离不变,到窗体上边的距离不变,到窗体下边的距离不变,显然Panel变高了。,要说明的是,Anchors属性是受Align属性的影响的,,例如,将Panel1的Align属性设置为alLeft,,显然此时如果Anchor的值含有集合元素akTop和,akBotton就没有意义了。这点读者自己可以去体会。,2Panel组件的使用,【例3-7】Panel组件的使用。界面如图3-7所示。,步骤如下:,(1)在窗体上添加命令按钮Button1,Caption设置为“日期”,在窗体上添加Panel1,设置Panel1的Align属性为默认值alNone,设置Panel1的BevelOuter设置为bvRaised,调整Panel1的位置和大小。,(2)在Panel1中添加Panel2,设置Panel2的Align属性为alNone,设置Panel2的BevelOuter设置为bvLowered。调整Panel2的位置和大小。,(3)编写程序,如下:,procedure TForm1.FormCreate(Sender:TObject);,begin,Panel2.Font.Size:=12;,panel2.Font.Name:=宋体;,Panel2.Caption:=聪明的程序员使用Delphi。;,end;,procedure TForm1.Button1Click(Sender:TObject);,var,year,month,day:word;,begin,decodedate(date,year,month,day);,/将date的年、月、日分别保存到其后的3个变量中,panel2.Caption:=今天是+inttostr(year)+年+inttostr(month)+月+inttostr(day)+日。;,end;,说明:很多程序的界面使用Panel修饰后,都可以使得界面更加美观。,3.2.6 Splitter组件,如果想建立一个在运行时可以自由改变区域大小的程序,这时候可以使用Spitter组件。Splitter组件虽然不是分组组件,但是它经常和Panel组件一起配合使用,所以在本节中介绍该组件。Splitter组件还经常和Memo组件、RichEdit组件等配合使用。Splitter组件位于Additional组件面板中。,1Splitter组件的主要属性如下,(1)Align属性:属性值是枚举类型,值为alLeft或者alRight的时候,组件可以水平移动,控制左右两块区域改变大小,此时Splitter的Height属性无意义。值为alTop和alBottom时,组件可以垂直移动,控制垂直的两块区域改变大小,此时Splitter组件的Width属性无意义。Align属性值一般不设置为alNone和alClient。,(2)Beveled属性:Boolean型,值为True时Splitter组件呈凹形,默认值为False时,此时Splitter组件呈凸形。,(3)Height属性和Width属性:高度和宽度属性,当Align属性值为alLeft或者alRight的时候,Width属性有效,可以设置分割条的宽度,此时Height属性无效,分割条的高度和Parent的高度相同;当Align属性值为alTop和alBottom时,组件Height属性有效,组件可以设置高度,此时Width属性无效,组件的宽度和Parent的宽度相同。,2Splitter组件和Panel组件的使用,【例3-8】Splitter组件和Panel组件的使用。,步骤如下:,(1)新建VCL Forms ApplicationDlphi for Win32,在窗体中添加Memo1,设置它的Align属性为alLeft,这样Memo1位于窗体的左边。,(2)在窗体中添加Splitter1,设置其Align属性为alLeft,这样Splitter就紧贴左边Memo1组件,设置Splitter1的Width为2。,(3)在右边空白处添加Panel1,设置Panel1的Align属性为alClient,Panel1就占据了右边剩下的所有区域。,(4)在Panel1中添加Memo2,设置它的Align属性为alBottom,这样Memo2就占据窗体的右下角(Panel1的下面)。,(5)在Panel1种添加Splitter2,设置Splitter2的Align属性为alBottom,这样Splitter2就紧贴在Memo2的上面,并设置Splitter2的Height 属性为2。,(6)在Panel1中添加Memo3,设置Memo3的Align属性为alClient。这样Memo3就占据了Panel1剩余的空间。,(7)设置Memo1、Memo2和Memo3的Lines属性值,显示如图3-8所示文字。,程序运行,界面如图3-8所示,可以改变移动Splitter来改变3个Memo的区域的大小。,3.2.7 GroupBox组件,组框GroupBox是又一个用于分组的组件,它类似于面板Panel,但是其Caption显示在边框上,这点与面板Panel有些不同。GroupBox不仅可以用于美观,还可以用于协调不同组的组件之间协调操作,因此GroupBox在单选框和复选框中用得很多,我们将在后面章节中讲解这点。GroupBox组件位于Standard组件面板上。,3.2.8 Button组件,Button组件是最常见的组件之一,位于Standard组件面板中。,1Button的主要属性,(1)Caption属性:组件的标题文字,可以使用符号“&”来设置按钮的加速键,前面已经使用到。,(2)Default属性:Boolean型,决定按钮是否为默认按钮,如果值为True则按钮是默认按钮,值为False时不是默认按钮,如果是默认按钮,单击按钮和按会车键是等价的。【例3-5】中用到过这个属性。,(3)Cancel属性:Boolean型,决定按钮是否为取消按钮。如果Cancel属性值为True则该按钮是取消按钮,否则不是取消按钮。如果是取消按钮,则按Esc键和单击该按钮等价。,2Button的主要事件,主要事件有OnClick等事件,下列情形之一会触发OnClick事件:,(1)单击按钮。,(2)按钮获得焦点的时候按回车键或者空格键。,(3)执行语句Button对象.Click。,3.2.9 BitBtn组件,BitBtn组件也是最常见的组件之一,位于Additional组件面板中。该组件可以在按钮中显示一幅格式为bmp的图片,使得按钮更加美观和形象。,1BitBtn组件的主要属性,除了有Caption、Default、Cancel等属性之外,BitBtn还有如下一些主要属性。,(1)Glyph属性:为按钮指定一个图标文件(扩展名为bmp),该图标显示在按钮表面,Tbitmap型。,(2)Kind属性:枚举型,决定按钮的类型。取值有bkCustom、bkOK、bkCancel、bkHelp、bkYes、bkNo、bkClose、bkAbort、bkRetry、bkIgnore、bkAll。默认值为bkCustom,表示种类是自定义类型,位图由Glyph决定。其它值分别对应不同的位图,并将ModalResult自动设置为相应的值。如bkOK对应mrOK,bkYes对应mrYes等等。,2BitBtn按钮的使用,【例3-9】在窗体上添加标签Label1,位图按钮BitBtn1BitBtn11。分别设置它们的Kind属性,设置BitBtn6的Caption为“保存”,Kind为bkCustom,设置Glyph属性为一个图标。界面如图3-9所示。,图3-9 各种Kind类型的BitBtn按钮,编写程序:,procedure TForm1.BitBtn1Click(Sender:TObject);,begin,label1.Caption:=你按了Abort按钮;,
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服