1、第4章 窗口控件,窗口控件的种类,向窗口添加控件,窗口控件的布局调整,窗口控件的通用属性,常用的窗口控件,常用的窗口控件编程实例,4.1 窗口控件的种类,各种控件的名称、主要用途及对窗口控件对象起名的默认前缀见表4.1。 系统默认控件前缀的修改如图4.1所示。,4.2 向窗口添加控件,4.2.1 添加窗口控件的方法 打开窗口后,有两种方法向窗口添加控件,一种是通过选单中“Insert”选单栏下的“Control”项,打开窗口控件列表框,选择需要的控件,然后在窗口上放置该控件的地方单击鼠标左键,被选中的窗口控件就会在该处出现,如图4.2所示。,4.2.1 添加窗口控件的方法,另一种是通过图标按钮
2、方式,单击带向下小三角的窗口控件组合图标,弹出窗口控件图标对话框,单击需要选择的控件图标,然后在窗口上放置该控件的地方单击鼠标左键,被选中的窗口控件就会在该处出现,如图4.3所示。,4.2.2 选中窗口控件的方法,(1)使用鼠标在窗口中单击需要选择的控件。当需要同时选择多个控件时,可以在布局视图区的窗口中,按下鼠标左键然后拖曳鼠标,拉出一个矩形,松开左键后,在拖出矩形中的所有控件都被选中。 (2)在控件列表区中选择。如果控件列表区没有打开,可以使用选单项“View | Control List”将其打开。在控件列表区中列出了当前窗口中的全部控件,单击某个控件列表项时,窗口中相应的控件即被选中。
3、 (3)快速全部选中。首先使布局视图区中的窗口为当前活动窗口(使用鼠标在布局视图区窗口中任意位置单击即可),然后单击选单栏“Edit”下的“SelectAll”,则窗口中的所有控件全部选中。,4.2.3 删除窗口控件的方法,删除窗口控件的方法也有两种,一种是首先选中需要删除的控件,可以是一个或多个控件,然后单击选单“Edit”栏下的“Delete”选单项,所选窗口控件即可被删除,如图4.4所示。,4.2.4 复制窗口控件的方法,(1)外观复制。它只复制控件的外观和属性,而控件所带的事件脚本则不复制,其实现办法为首先选中需要复制的控件,可以是一个或多个控件,然后按下【Ctrl+T】组合键。 (2
4、)完全复制。它将控件的外观、属性及所有事件的脚本全部复制出来,其实现办法是首先选中需要复制的控件,可以是一个或多个控件,然后进行复制。 完全复制的方法有以下三种。 用【Ctrl+C】组合键复制到剪贴板中,再按【Ctrl+V】组合键粘贴出来。复制出来的新控件与被复制的控件重叠在同一位置,使用鼠标将其拖开,并根据需要对新控件进行修改。 使用系统选单项“Edit | Copy”将控件复制到剪贴板中,再通过选单项“Edit | Paste Controls”将剪贴板中的控件粘贴到窗口中。只有将控件复制到剪贴板后,“Edit”选单栏下的“Paste Controls”选单项才会出现。,4.2.4 复制窗
5、口控件的方法, 使用工具栏上的复制和粘贴图标,如图4.5所示。,4.3 窗口控件的布局调整,4.3.1 齐整性操作 比较常用的方法是利用系统工具栏上的齐整性操作组合图标(共有11种齐整性操作图标),具体作用如图4.6所示。,4.3.1 齐整性操作,具体操作步骤是,首先选中需要进行齐整性操作的控件,第一个选中的必须是作为基准的控件,然后单击工具栏上齐整性操作的小三角,弹出齐整性操作图标按钮选单,单击需要进行的齐整性操作图标按钮即可,如图4.7所示。,4.3.1 齐整性操作,也可以通过选单操作进行齐整性调整。在“Format”选单栏下,有三个带下级子选单的选单项,其中,“Align”弹出控位件置对
6、齐的选单;“Space”弹出调整控件间隔的选单;“Size”弹出调整控件大小的选单。选单中各项的意义及作用见表4.2。,4.3.1 齐整性操作,通过选单命令进行窗口控件齐整性操作的过程与通过图标按钮类似,以第2章的计算器的程序为例,图4.8显示了通过选单命令进行窗口控件位置对齐的操作。,4.3.2 窗口控件的“Tab”键顺序,操作过程如图4.9所示。,4.4 窗口控件的通用属性,1标题 系统默认时,控件的标题自动设置为“None”。开发人员只需首先选中控件,然后在标题栏中输入所需的标题。输入完毕,将焦点离开标题栏,即可在窗口视图区看见编辑控件的标题。除了可以修改标题的文字提示以外,还可以修改字
7、体、字型及可能的对齐方式等。以修改命令按钮控件文本标题为例,图4.10中示例了设置标题按钮为“清除”。,4.4 窗口控件的通用属性,图4.11中示例了选择标题字体为“宋体”,大小为12号字。需要指定对齐方式时通过单击指定所需的对齐方式。,4.4 窗口控件的通用属性,2“Visible”属性 在控件属性对话框的“General”标签页中,一般都有“Visible”复选框,它决定了该控件的可视性。默认时,“Visible”复选框都被选中,该控件显示在窗口中。如果希望某个控件初始时不显示,则不选中“Visible”复选框即可,在窗口视图区就看不见该控件。如果想恢复该控件的可视性或修改它的其他属性,则
8、应首先单击控件列表区中该控件的对象名称,这时当前属性表为该控件的属性,即可对其进行修改,选中“Visible”复选框后,该控件立刻在窗口视图区中显示出来。 窗口控件的可视性可以在代码中灵活控制,方法是设置控件对象的“Visible”属性为True(可见)或False(不可见)。例如,要显示被隐藏的命令按钮“cb_1”,程序代码如下: cb_1.Visible=TRUE,4.4 窗口控件的通用属性,3“Enabled”属性 在控件属性对话框的“General”标签页中,可以找到“Enabled”复选框,它决定了该控件的可用性。默认时,“Enabled”复选框都被选中。当“Enabled”复选框被
9、选中时,该控件处于活动状态,它能够响应用户的操作。若“Enabled”复选框不被选中,则该控件处于不活动状态,其事件都不会被触发,控件标题和轮廓变为灰色,控件只可见而不可用。 窗口控件的可用性在代码中的控制方法与可视性类似,只要设置控件对象的Enabled属性为True(可用)或False(不可用)即可。例如,要使命令按钮“cb_1”“变灰”不可用,程序代码如下: cb_1. Enabled = FALSE,4.4 窗口控件的通用属性,4快捷键 (1)选中该控件。 (2)在属性表“General”页的“Accelerator”编辑框中输入作为快捷键的字符,例如,要使【Alt+N】成为单行编辑框
10、的快捷键,则在“Accelerator”编辑框中输入字符“n”。 (3)选中对其说明的静态文本框,在文本前面加上“&”字符和快捷键字符,用于对快捷键进行提示。 5标签Tag属性 “Tag”属性是一段和控件相关的字符串,它本身并没有什么特定的用途,主要取决于用户如何使用它。例如,代码w_main.SetMicroHelp(This.Tag)的用途是将状态栏指定为当前控件的“Tag”值。 6边界Border和边界类型BorderStyle属性 “Border”属性是一个布尔类型的值,它决定了控件是否有边界。只有当“Border”属性被设为True时,“BorderStyle”属性才会有效。“Bor
11、derStyle”属性是对控件各种边框形式进行规定的属性,它是一个枚举类型。,4.5 常用的窗口控件,4.5.1 选项卡 通过选项卡“Tab”可以方便地使用多个选项页,Windows系统中的系统属性就是采用由四个选项页组成的选项卡方式表达的,它的外观如图4.12所示。,4.5.1 选项卡,1创建选项卡“Tab”的步骤 创建选项卡“Tab”的步骤如下。 (1)生成选项页,步骤如图4.13所示。,4.5.1 选项卡,(2)修改选项卡和选项页的属性,注意,当单击标签时出现的是选项卡属性,而单击选项页时出现的是选项页的属性。 选项卡的基本属性如图4.14所示,选项页列表中将所有选项页的名称和标签上的标
12、题顺序排列出来。,4.5.1 选项卡,在选项页内任意一点单击时出现选项页的基本属性,如图4.15所示。,4.5.1 选项卡,在“第一页”标签上单击鼠标右键,选择弹出选单中的“Insert TabPage”选单项,如图4.16所示,系统就自动在“第一页”标签的右边添加了一个标签为“none”的新选项页,采用与前面类似的方法可以将新添加的标签的名字改为“第二页”。,4.5.1 选项卡,2选项卡“Tab”常用属性 选项卡“Tab”常用属性有以下两种。 (1)SelectedTab:获得或指定所选择标签的索引。返回integer值。 例如,要获得当前选的是哪一个标签页(即可见的那个选项页),程序如下:
13、 Int select select=tab_1.SelectedTab (2)TabPosition:指定标签显示在“Tab”控件的什么地方 ,值如下: tabsontop! 顶部显示 tabsonbottom! 底部显示 tabsonleft! 左边显示 tabsonright! 右边显示 tabsontopandbottom! 先顶部后底部显示 tabsonbottomandtop! 先底部后顶部显示 tabsonleftandright! 先左边后右边显示 tabsonrightandleft! 先右边后左边显示,4.5.1 选项卡,例如,当窗口打开时,“Tab”控件的标签显示在左边,
14、同时选中第2个标签页,可以在窗口的Open事件中输入如下代码: tab_1.TabPosition=TabsOnLeft! Tab_1.SelectedTab=2,4.5.1 选项卡,3选项卡“Tab”常用函数 下面是选择指定的标签页函数。 格式: SelectTab(Int index) 例如,若要选择第2个标签页,则可以使用tab_1.SelectTab(2)实现,等价于tab_1.SelectedTab=2。 4选项卡“Tab”常用事件 SelectionChanged:选择了新的标签页后触发。,4.5.2 命令按钮与图像按钮,1命令按钮 命令按钮的属性表有三页。 (1)“General
15、”属性页如图4.17所示,它用于定义命令按钮的一般属性,包括名称、标题、是否显示、是否可用等。 (2)“Font”属性页用于定义命令按钮标题的显示字体。 (3)“Other”属性页用于定义命令按钮的放置位置、宽度和高度,当鼠标指针位于该命令按钮时鼠标指针的形状,以及当拖曳该命令按钮时鼠标指针的形状。,4.5.2 命令按钮与图像按钮,2命令按钮常用属性 Text:获得或指定显示在该控件上的文本(即命令按钮标题)。 3命令按钮常用事件 命令按钮有十几个事件,其中最常用、最重要的事件是“Clicked”事件,它是在按钮被单击时触发的。在“Clicked”事件的事件处理程序中编写按钮被按下时要执行的代
16、码。 例如,有两个窗口“w_1”和“w_2”,在“w_1”上有一个命令按钮“cb_1”,开始“cb_1”的标题为“Open”。单击“cb_1”将打开“w_2”,这时“cb_1”的标题将变为“Close”。再次单击“cb_1”将关闭“w_2”,同时,“cb_1”的标题又变为“Open”,如此循环。若直接关闭,则“w_2”,“cb_1”的标题也将变为“Open”。,4.5.2 命令按钮与图像按钮,在“cb_1”的“Clieked”事件中,编写如下代码: IF This.Text=“Open“ THEN / 若标题为Open则打开w_2,同时将标题改为Close Open (w_2) THIS.Te
17、xt=“Close“ ELSE / 若标题为Close则关闭w_2,同时将标题改为Open Close (w_2) THIS.Text=“Open“ END IF 在w_2的Close事件中,编写如下代码: w_1.cb_1.Text=“Open“ / 将cb_1的标题改为Open,4.5.2 命令按钮与图像按钮,4图像按钮 图像按钮(PictureButton)的功能与命令按钮类似,区别在于可以在该按钮上显示BMP、GIF、JPG、JPEG、RLE或WMF格式的图像,而且能够以不同图像表示按钮处于允许和不允许两种状态。当希望使用一幅贴切的画面而不仅是文字表示一个按钮时,应该选用图像按钮。 5
18、为图像按钮指定图片 为图像按钮指定图片的步骤如下。 (1)将图像按钮放置到窗口上并选中。 (2)选择属性表中的“General”选项页。 (3)在“PictureName”编辑框中输入该按钮被允许时所显示图像的文件名。 (4)需要对图片大小进行调整时,可以使用鼠标放在图片按钮边沿,鼠标形状变为双向箭头时,可以拖曳鼠标,改变图片控件大小。,4.5.2 命令按钮与图像按钮,6图像按钮常用属性 Text:获得或指定显示在该控件上的文本(即图像按钮标题)。 PictureName:获得或指定图像按钮上显示的图片文件名。 例如,pb_1.PictureName=“c:yhxperson.gif“。 7图
19、像按钮常用事件 图像按钮最常用、最重要的事件是“Clicked”事件,它是在按钮被单击时触发的。在“Clicked”事件的事件处理程序中编写按钮被单击时要执行的代码。,4.5.3 单选按钮、复选框与分组框,单选按钮(RadioButton)、复选框(CheckBox)是为了方便用户做出选择而设计的。分组框(GroupBox)有两个用途,一是装饰界面,二是对单选按钮分组。它们的外观如图4.18所示。,4.5.3 单选按钮、复选框与分组框,单选按钮用于表示一组互斥的选项,在同一组单选按钮中,用户只能从中选择一个。 单选按钮的基本属性页如图4.19所示。,4.5.3 单选按钮、复选框与分组框,复选框
20、的基本属性页如图4.20所示,它与单选按钮相似,增加了三态属性的两个复选框ThreeState和ThirdState。选中前者表示需要使用三种状态,选中后者将当前状态指定为第3种状态。,4.5.3 单选按钮、复选框与分组框,1单选按钮、复选框的常用属性 “Checked”属性是单选按钮、复选框最常用的属性,通过它来判断其是否被选择,值为True/False。例如: IF rb_1.checked THEN /如果rb_1被选择,那么 ELSE END IF 2单选按钮、复选框的常用事件 单选按钮、复选框最常用、最重要的事件是“Clicked”事件,它是在被单击时触发的。,4.5.4 静态文本与
21、图片,1静态文本控件 静态文本控件命名时的默认前缀为“st_”。 静态文本的属性如图4.21所示。,4.5.4 静态文本与图片,2静态文本控件的常用属性 静态文本控件最常用的属性是“Text”,用它可以获得或改变静态文本控件中的文本。 3静态文本控件的常用事件 静态文本控件的常用事件是“Clicked”事件,但一般来说,静态文本控件的事件里不需要编写脚本。不过由于命令按钮的外观、文字颜色、背景色等都不能改变,难以满足多方面的要求。而静态文本控件的外观、文字颜色、背景色等都能改变。所以,可以经常使用静态文本控件代替命令按钮,这时,就需要为Clicked事件编写代码了。,4.5.4 静态文本与图片
22、,4图片控件 图片控件命名时的默认前缀为“p_”。 图片控件的属性如图4.22所示。图片文件名称可以直接在“PictureName”编辑栏中输入,也可以单击其右侧的“”按钮在文件窗口中选择。,4.5.4 静态文本与图片,5图片控件的常用属性 PictureName:获得或指定图片控件上显示的图片文件名。 例如,p_1.PictureName=“c:yhxperson.gif“ 6图片控件的常用事件 图片控件的常用事件是“Clicked”事件,但一般来说,图片控件的事件里不需要编写代码。有时可以用图片控件代替命令按钮和图像按钮,这时,就需要为“Clicked”事件编写代码了。,4.5.5 单行编
23、辑框与多行编辑框,1单行编辑框控件 单行编辑框控件(SingleLineEdit)用于输入、编辑和显示一行文本,通常用于处理较少的数据,比如让用户输入密码等。 单行编辑框控件命名时的默认前缀为“sle_”。 2单行编辑控件的常用属性 (1)Text:获得或指定该控件中的文本。 (2)Password:指定该单行编辑框是否用于保密字输入。有效取值为:True 用于保密字输入,此时,用户输入的所有字符均被“*”屏蔽,星号个数就是用户输入的字符个数,一般用于输入口令或密码;False 不用于保密字输入,此时,按用户的输入显示文字。 (3)Limit:设定该控件中能够输入的最多字符个数,其值在032
24、767之间,其中,“0”表示没有个数限制。 (4)Displayonly:指定该控件是否处于只读方式,处于只读方式时,用户不能修改该控件中的文本。有效取值为:True只读方式;False用户可以修改数据。,4.5.5 单行编辑框与多行编辑框,3单行编辑控件的常用事件 (1)Modified:在用户修改了单行文本框中的内容,并且移走焦点时触发。常用此事件进行用户输入内容的有效性检查。例如,在一个输入日期的单行文本框“sle_date”的“Modified”事件中,加入有效性检查脚本: IF NOT IsDate ( sle_date.text) THEN MessageBox(“错误“,“非法日
25、期,请重新输入“) END IF (2)GetFocus:在单行编辑框得到焦点时触发。,4.5.5 单行编辑框与多行编辑框,4单行编辑控件的常用函数 选择文本: SelectText 格式: SelectText(Int start,Int length) 例如,若要使单行编辑框在获得焦点时自动选中全部文本,则可以在其“GetFocus”事件中,输入代码: THIS.SelectText(1,len(THIS.Text),4.5.5 单行编辑框与多行编辑框,5多行编辑控件 多行编辑框可以用于输入较长的文本,如简介和备注等。其属性与单行文本框的属性类似,但多了几个特有的属性,一个是关于滚动条的属
26、性,用于在多行文本框中放置水平和垂直滚动条;另一个是“IgnoreDefaultButton”属性,主要是用来解决在多行文本框中使用【Enter】键与【Enter】键关联某个按钮响应事件的冲突。 6多行编辑控件的常用属性 (1)Text:获得或指定该控件中的文本。 (2)Limit:设定该控件中能够输入的最多字符个数,其值在032 767之间,其中,“0”表示没有个数限制。 (3)Displayonly:指定该控件是否处于只读方式,处于只读方式时,用户不能修改该控件中的文本。有效取值为:True只读方式;False用户可以修改数据。,4.5.5 单行编辑框与多行编辑框,7多行编辑控件的常用事件
27、 (1)Modified:在用户修改了多行编辑框中的内容,并且移走焦点时触发。 (2)GetFocus:在多行编辑框得到焦点时触发。 (3)Rbuttondown:当用户用鼠标右击该控件时触发,返回值为“0”时,继续处理;返回值为“1”时,不再继续。 对于多行编辑框而言,右击鼠标时,系统会自动弹出一个选单,包括撤销、剪切、复制、粘贴、删除和全选等功能。但在某些时候,用户希望提供专用的功能选单,而且屏蔽掉系统提供的撤销、剪切、复制、粘贴、删除、全选等这些功能,如某些电子阅读软件,这时就应该在“Rbuttondown”事件中编写代码: menu_edit me / 定义选单变量me me=CREA
28、TE menu_edit me.m_3.PopMenu (xpos,ypos) / 显示选单 RETURN 1 / 不再显示系统提供的弹出选单,4.5.5 单行编辑框与多行编辑框,8多行编辑控件的常用函数 (1)返回多行编辑框中的数据行数。 格式: LineCount() 返回值:integer (2)返回插入点的位置。 格式: Position() 返回值:long (3)使用指定串替换当前选定的文本。 格式: ReplaceText(str),4.5.5 单行编辑框与多行编辑框,(4)选择文本。 格式: SelectText(int start, int length) 将多行编辑框中从s
29、tart位置起共length个字符选中,即高亮度显示。 (5)获得当前选定的文本。 格式: SelectedText() 返回值为当前选定的文本,即高亮度显示的文本。 (6)获得插入点所在行的文本。 格式: TextLine() 返回值为插入点所在行的文本。,4.5.6 编辑掩码控件,编辑掩码控件命名时的默认前缀为“em_”。 编辑掩码控件有一个“Mask”属性页,如图4.23所示。,4.5.6 编辑掩码控件,用户也可以直接在掩码输入栏中输入掩码,表4.3列出了掩码格式中使用的一些代码。,4.6 常用的窗口控件编程实例,创建好的基本窗口“w_widget”如图4.24所示,窗口中包含一个命令按
30、钮控件“关闭”。,4.6 常用的窗口控件编程实例,创建好的窗口“w1”如图4.25所示,窗口中包含一个新建的命令按钮控件“Login”,一个从基本窗口继承过来的命令按钮控件“关闭”,两个静态文本控件和两个单行编辑框控件。通过在该窗口输入用户名和用户密码,单击“Login”按钮登录系统。登录成功,显示如图4.26所示。,4.6 常用的窗口控件编程实例,创建好的窗口“w2”如图4.27所示。,4.6.1 创建窗口应用程序和基本窗口,1创建应用程序 (1)创建新的工作空间。单击“New”图标按钮,打开“New”对话框;选择“Workspace”页,单击“OK”按钮,弹出“New Workspace”
31、对话框,选择存储目录为F:workspace,输入文件名为“chptfour”。 (2)创建新的应用。单击“New”图标按钮,打开“New”对话框;选择“Target”页中的“Application”,单击“OK”按钮,弹出“Specify New Application and Library”对话框,输入应用名为“win_widget”,系统自动用上面输入的应用名称加上扩展名“pbl”和“pbt”,组成库名“win_widget.pbl”及目标文件名“win_widget.pbt”,单击“Finish”按钮。,4.6.1 创建窗口应用程序和基本窗口,2创建应用程序窗口(w_widget)
32、(1)单击“New”图标按钮,打开“New”对话框;选择“PB Object”页,双击“Window”图标,创建一个新窗口对象并进入窗口画板。 (2)在窗口的属性(Properties)卡的“General”页中,在“Title”栏中输入窗口标题“常用的窗口控件编程实例”,取消“Maxbox”属性,其他窗口属性使用系统默认值。最后,保存窗口对象,取名为“w_widget”。 完成以上步骤后,可在工作空间目录看到如图4.28所示的树形结构。,4.6.1 创建窗口应用程序和基本窗口,(3)调整当前窗口w_widget的大小,方法是在“Other”属性页中的“Position”子栏目,设置Width
33、=1390,Height=608。设置完成后单击“Save”图标按钮 ,保存当前环境到工作空间资源文件。,4.6.1 创建窗口应用程序和基本窗口,3在窗口中创建命令按钮 (1)通过选单中“Insert”选单栏下的“Control”项,打开窗口控件列表框,选择“CommandButton”控件(具体步骤可参考图4.2),然后在窗口上放置该控件的地方单击鼠标左键,被选中的窗口控件就会在该处出现。此命令按钮系统默认的名称为cb_1。 (2)设置“CommandButton”属性。 “General”属性页按照图4.29所示设置。,4.6.1 创建窗口应用程序和基本窗口,“Font”属性页按照图4.3
34、0所示设置。 “Other”属性页按照图4.31所示设置。,4.6.1 创建窗口应用程序和基本窗口,(3)编辑“CommandButton”的“Clicked”事件。 在Clicked事件的事件处理程序中编写cb_1按钮被按下时所要执行的脚本代码: Close ( PARENT) / PARENT指当前控件所在的窗口 完成后,单击“Save”图标按钮 ,保存当前环境到工作空间资源文件。 (4)运行/预览窗口对象(单击系统工具栏上的“Run/ Preview Object”图标,如图4.32所示)。 (5)单击“关闭”按钮,退出当前窗口。,4.6.2 通过窗口继承创建新窗口w1,1在w_widg
35、et窗口的基础上创建新窗口w1 (1)窗口继承的方法请参考第3章3.1.2节中窗口的继承的有关内容。新建继承窗口。 (2)设置“继承窗口”的属性。 窗口w1的“General”属性页属性设置如图4.33所示。 窗口w1的“Other”属性页属性设置如图4.34所示。,4.6.2 通过窗口继承创建新窗口w1,4.6.2 通过窗口继承创建新窗口w1,保存继承窗口为“w1”(如图4.35所示)。,4.6.2 通过窗口继承创建新窗口w1,2在窗口“w1”中创建并设置静态文本控件(Static Text)st_1 (1)通过选单中“Insert”选单栏下的“Control”项,打开窗口控件列表框,选择“
36、Static Text”控件(具体步骤可参考图4.2),在窗口上放置该控件的地方单击鼠标左键,被选中的窗口控件就会在该处出现。此“Static Text”控件系统默认的名称为“st_1”。 (2)按住鼠标左键拖曳,以调整“Static Text”控件的大小,如图4.36所示。,4.6.2 通过窗口继承创建新窗口w1,(3)设置“Static Text”控件“st_1”属性。 “General”属性页按照图4.37所示设置。 “Font”属性页按照图4.38所示设置。,4.6.2 通过窗口继承创建新窗口w1,(4)复制“Static Text”控件“st_1”。 首先,选中需要复制的控件“st_
37、1”,按【Ctrl+C】组合键复制到剪贴板中,再按【Ctrl+V】组合键粘贴到窗口上。复制出来的新控件与被复制的控件重叠在同一位置,新的控件名字为“st_2”。用鼠标将其拖开,并根据需要对新控件进行修改。 (5)设置“Static Text”控件“st_2”属性。 “General”属性页中的“Text”属性值改为“用户密码:”。 “Font”属性页采用与“Static Text”控件“st_1”相同的设置。 “Other”属性页按照图4.39所示设置。,4.6.2 通过窗口继承创建新窗口w1,4.6.2 通过窗口继承创建新窗口w1,3在窗口w1中创建并设置单行编辑框控件(SingleLine
38、Edit)sle_1 (1)通过选单中“Insert”选单栏下的“Control”项,打开窗口控件列表框,选择单行编辑框控件(SingleLineEdit)(具体步骤可参考图4.2),在窗口上放置该控件的地方单击鼠标左键,被选中的窗口控件就会在该处出现。此单行编辑框控件(SingleLineEdit)系统默认的名称为“sle_1”。 (2)按住鼠标左键拖曳,以调整“SingleLineEdit”控件的大小,如图4.40所示。,4.6.2 通过窗口继承创建新窗口w1,(3)设置“SingleLineEdit”控件“sle_1”属性。 “General”属性页中的“Text”属性值改为“请输入!”
39、,其他采用默认属性。 “Font”属性页中的“TextSize=9”,其他采用默认属性。 “Other”属性页中的X=334,Y=308,Width=480,Height=92,其他采用默认属性。 (4)复制“SingleLineEdit”控件“sle_1”。 首先,选中需要复制的控件“sle_1”,按【Ctrl+C】组合键复制到剪贴板中,再按【Ctrl+V】组合键粘贴到窗口上。复制出来的新控件与被复制的控件重叠在同一位置,新的控件名字为sle_2。用鼠标将其拖开,并根据需要对新控件进行修改。,4.6.2 通过窗口继承创建新窗口w1,(5)设置“SingleLineEdit”控件“sle_2”
40、属性。 “General”属性页按照图4.41所示设置。 “Other”属性页按照图4.42所示设置。 “Font”属性页采用与“SingleLineEdit”控件“sle_1”相同的设置。,4.6.2 通过窗口继承创建新窗口w1,4在窗口w1中创建并设置命令按钮控件cb_2 (1)通过选单中“Insert”选单栏下的“Control”项,打开窗口控件列表框,选择“CommandButton”控件(具体步骤可参考图4.2),在窗口上放置该控件的地方单击鼠标左键,被选中的窗口控件就会在该处出现。此命令按钮系统默认的名称为“cb_2”。 (2)设置“CommandButton”属性。 “Gener
41、al”属性页中的“Text”属性值改为“Login”,其他采用默认属性。 “Font”属性页中的“TextSize=9”,其他采用默认属性。 “Other”属性页中的X=859,Y=304,Width=343,Height=104,其他采用默认属性。,4.6.2 通过窗口继承创建新窗口w1,(3)编辑“CommandButton”的“Clicked”事件。 在“Clicked”事件的事件处理程序中编写“cb_2”按钮被按下时所要执行的脚本代码: /* 登录界面判定程序 */ / 定义局部变量,userid是用户输入的用户名,userpsw是用户输入的密码 String userid Strin
42、g userpsw / 定义局部变量,uid是系统用户名,upsw是系统密码 String uid String upsd uid = “管理员“ upsd = String(123) / 获取 userid = Trim(sle_1.text) userpsw = Trim(sle_2.text) IF userid= uid AND userpsw = upsd THEN MessageBox(“恭喜!“,“密码正确,已批准登录系统!“) ELSE MessageBox(“Error! “,“用户名或密码错误!登录界面将立即关闭。“,Stopsign!) Close(PARENT) END
43、 IF,4.6.2 通过窗口继承创建新窗口w1,(4)运行/预览窗口对象(单击系统工具栏上的“Run/Preview Object”图标,如图4.32所示)。 (5)运行效果如图4.43所示,输入用户名“管理员”和用户密码“123”。单击“Login”按钮,出现如图4.44所示登录界面。 (6)单击“关闭”按钮,退出当前窗口。,4.6.2 通过窗口继承创建新窗口w1,5在窗口“w 1”中创建并设置图片(Picture)控件p_1 (1)通过选单中“Insert”选单栏下的“Control”项,打开窗口控件列表框,选择“Picture”控件(具体步骤可参考图4.2),在窗口上放置该控件的地方单击
44、鼠标左键,被选中的窗口控件就会在该处出现。此命令按钮系统默认的名称为“p_1”。 (2)设置“Picture”的属性。 “General”属性页按照图4.45所示设置。 “Other”属性页按照图4.46所示设置。,4.6.2 通过窗口继承创建新窗口w1,4.6.2 通过窗口继承创建新窗口w1,(3)运行/预览窗口对象(单击系统工具栏上的“Run/Preview Object”图标,如图4.32所示)。 (4)运行效果如图4.47所示。 (5)单击“关闭”按钮,退出当前窗口。,4.6.3 通过窗口继承创建新窗口“w2”,1在“w_ widget”窗口的基础之上创建一个新窗口“w2” (1)窗口
45、继承的方法请参考第3章3.1.2节中窗口的继承的有关内容。新建继承窗口。 (2)设置“继承窗口”的属性。 窗口w2的“General”属性页属性设置如图4.48所示。 窗口w2的“Other”属性页属性设置如图4.49所示。,4.6.3 通过窗口继承创建新窗口“w2”,4.6.3 通过窗口继承创建新窗口“w2”,保存继承窗口为“w2”(如图4.50所示)。,4.6.3 通过窗口继承创建新窗口“w2”,2在窗口w2中创建并设置选项卡Tab控件tab_1 (1)通过选单中“Insert”选单栏下的“Control”项,打开窗口控件列表框,选择“Tab”控件(具体步骤可参考图4.2),在窗口上放置该
46、控件的地方单击鼠标左键,被选中的窗口控件就会在该处出现。此命令按钮系统默认的名称为“tab_1”。 (2)设置“tab_1”的属性。 “General”属性页按照图4.51所示设置。 “Font”属性页按照图4.52所示设置。,4.6.3 通过窗口继承创建新窗口“w2”,4.6.3 通过窗口继承创建新窗口“w2”,(3)设置“tabpage_1”属性。 修改“Tabpage”属性页中的“TabText”属性值如图4.53所示,其他属性页保持不变。 (4)完成后,单击“Save”图标按钮 ,保存当前环境到工作空间资源文件。,4.6.3 通过窗口继承创建新窗口“w2”,3在窗口“w2”中“tab_
47、1”的基础上插入并设置选项卡控件“tabpage_2” (1)在“tab_1”的标题处单击鼠标右键,出现一个快捷选单。从这个快捷选单中选择“Insert TabPage”命令,如图4.54所示。 (2)设置“tabpage_2”属性。 修改“Tabpage”属性页中的“TabText”属性值如图4.55所示,其他属性页保持原有配置不变。 (3)完成后,单击“Save”图标按钮 ,保存当前环境到工作空间资源文件。,4.6.3 通过窗口继承创建新窗口“w2”,4.6.3 通过窗口继承创建新窗口“w2”,4在窗口w2的tab_1中创建并设置多行编辑(MultiLineEdit)控件“mle_1” (
48、1)通过选单中“Insert”选单栏下的“Control”项,打开窗口控件列表框,选择多行编辑控件(具体步骤可参考图4.2),在窗口上放置该控件的地方单击鼠标左键,被选中的窗口控件就会在该处出现。此命令按钮系统默认的名称为“mle_1”。 (2)设置“mle_1”的属性。 “General”属性页按照图4.56所示设置。 “Font”属性页按照图4.57所示设置。 “Other”属性页按照图4.58所示设置。,4.6.3 通过窗口继承创建新窗口“w2”,4.6.3 通过窗口继承创建新窗口“w2”,(3)完成后,单击“Save”图标按钮 ,保存当前环境到工作空间资源文件。 (4)运行/预览窗口对
49、象(单击系统工具栏上的“Run/Preview Object”图标,如图4.32所示)。在多行文本编辑框中输入如下文本。 (5)运行效果如图4.59所示。 (6)单击“关闭”按钮,退出当前窗口。,4.6.3 通过窗口继承创建新窗口“w2”,5为多行编辑框“mle_1”添加查找、替换的功能(类似于写字板) 界面如图4.60所示。,4.6.3 通过窗口继承创建新窗口“w2”,下面定义各个控件完成各自功能所需要的脚本。 (1)在窗口“w2”的“tab_1”中定义“Instance”变量: Long p / p表示查找到的结果的位置 Int l / l表示要查找的文本的长度 String str /
50、str表示要查找的文本,4.6.3 通过窗口继承创建新窗口“w2”,(2)在“查找”按钮“cb_search”的“Clicked”事件中,输入如下代码: str=sle_1.text l=Len (str) p=Pos (mle_1.text,str) IF p0 THEN mle_1.selecttext (p,l) mle_1.setfocus ( ) cb_search_next.enabled= TRUE cb_replace.enabled= TRUE ELSE cb_search_next.enabled=FALSE cb_replace.enabled=FALSE MessageBox (“提示信息“,“没找到!“) END IF,