PB应用程序就是由许多共同协作完成特定任务的窗口组成的集合。
窗口在应用程序的开发工作中占有很大的比重,是非常重要的一个 PB 对象
一、窗口类型

窗口类型描述Main①可以覆盖其他窗口,也可以被其他窗口覆盖
②可以最大、最小化,可以用鼠标改变其 大小
③可以有边框,可以有菜单
④常用于应用主操作窗口Child①可以被其他窗口覆盖,也可以覆盖其他窗口
②可以最大或最小化,也可以用鼠标改变 其大小,父窗口最小或最大化时, Child 类型的窗口也相应的被最大或最小化
③可以 有边框,但不能有菜单
④位置是相对于其父窗口而言,用鼠标拖放其位置不能超过其 父窗口的范围
⑤常被其他窗口打开Response①不能最大、最小化,没有边框,不能用鼠标改变其大小
②在继续执行程序之前,必须 对这种类型的窗口做出响应
③常用于显示非常重要的信息Popup①可以最大或最小化,在对这种类型的窗口响应之前,可以操作其他窗口
②不随父窗口 最大和最小化
③可以拥有菜单、边框
④常用于显示其他窗口的辅助信息二、窗口属性
-- General 属性页属性--Scroll 属性页属性 -- ToolBar 属性页属性--Other 属性页 2.1 General 属性页属性
属性简介Title窗口的标题Tag和窗口相关的一个文本属性,可以理解成窗口的注释MenuName和窗口相连的菜单Visibl窗口是否可见Enabled确定窗口的功能是否可用TitleBar确定窗口是否有标题栏ControlMenu, MaxBox, MinBox三个属性确定在窗口的标题栏是否显示最大、最小化以及关闭按钮ClientEdge是否显示用户工作区边框PaletteWindow该属性只用于 Popup 类型的窗口,确定是否显示标题栏图标和最大、最小化按钮ContextHelp只用在 Response 类型的窗口上。确定是否支持上下文帮助。如果支持就在窗口的右上角显示一个问号图标RightToLeft 确定由右到左显示Center窗口居中显示,不管屏幕分辨率如何设置。该属性在 PB 7.0 中没有,新增Resizable决定窗口在运行时是否可以改变其大小Border决定窗口是否有边框WindowType确定窗口的类型,可用取值的含义,从字面意思可以理解。该属性在窗口打开时起作用BackColor设置窗口的背景颜色MdiClientColor 用来确定 MDI 用户区的颜色Icon用来设置窗口标题栏的图标2.2 Scroll 属性页属性
属性简介HscrollBar, VscrollBar是否需要显示水平或垂直滚动条UnitsPerLine用户在垂直滚动条上每次单击移动的 PB单位数。默认为 0,表示每次 滚动窗口高度的 1/100UnitsPerColumn用户在水平滚动条上每次单击向左或者向右移动的 PB单位数。默认为 0,表示每次滚动窗口宽度的 1/100ColumnsPerPage表示每页显示的列数。默认为 0,表示显示 10 列LinesPerPage表示每页显示的行数。默认为 0,表示显示 10 行2.3 ToolBar 属性页属性
属性简介ToolBarVisible 工具条是否可见ToolBarAlignment确定工具条在窗口上的初始位置。 有 5 个可用的枚举型取值: AlignAtBootom!(底部)、AlignAtLeft!(左)、 AlignAtRight!(右)、 AlignAtTop!(顶部)、 Floating!(浮动)ToolBarX, ToolBarY, ToolBa rHeight 和 ToolBarWidth 用来设置当工具条浮动显示时工具条的起始位置及高宽。默认取值都是 02.4 Other 属性页中的属性
用来设置窗口的真实坐标、宽高和鼠标的默认指针。
当屏幕分辨率是 800 × 600 时,全屏显示的窗口 X, Y, Width 和 Height 分别是 0, 0, 3658, 2407。
三、11种常用控件
窗口可以看作是一个容器,所以在窗口上可以放各种控件,来完成用户与程序的交互

控件说明Button用来执行特定的命令,接受用户的键盘或鼠标操作。
该控件的 Text 属性一般用来 向用户说明该按钮的功能。
典型事件是 ClickedPicture button 和控件 Button 相同,只是在它的上面还可以显示图形,提供更漂亮友好的界面。
典型事件也是 ClickedStatic text显示指示性或解释性信息,文字只能单行显示。
一般很少在该控件上编程Singlelineedit单行编辑,一般用来接受用户比较少的文字输入。
典型事件是 Modified,通常在该 事件上判断用户的输入是否符合既定规则,如是否是数字等Multilineedit多行编辑,用来接收用户比较多的文字输入。
典型事件也是 Modified,通常在该事 件上判断用户的输入是否符合既定规则Check box复选框,用来界定用户的输入,一般输入信息作为其他命令执行时的选项。
当有多个复选框时,它们间的连接符习惯性认为是“ and”。
重要属性是 Checked,通常用来判断该控件是否选中Radio box单选按钮,用来界定用户的输入只能是给定值中的一个。
它的输入信息通 常用来选择其他命令互斥的执行方式。
重要属性 是 Checked,true 表示选中Dropdownlistbox以紧凑列表框的形式给用户显示信息,通常在该控件中进行单选。
经常和光标 ( cursor ) 配 合 使 用 , 显 示 从 数 据 库 中 提 取 的 数 据 。
典 型 事 件 是 SelectionChanged,通常在该事件上读取当前用户的选择信息Listbox列表框,是显示信息的,但其显示格式不如 Dropdownlistbox 紧凑,也通常和光 标(cursor)配合使用,显示从数据库中提取的数据。但是,该控件经常可以同时 选中多行。典型事件也是 SelectionChanged,通常在该事件上读取当前用户的选 择信息DataWindow是 PB中最重要的、也是 PB最具特色的一个控件。
可以 完成对数据库中的所有数据操作Group box将功能类似的或在功能模块上关系紧密的部件放置在一起,界面美观,可以 给用户一个操作上的暗示。很少在该控件上编程四、窗口事件
4.1 常用事件
事件事件说明open在窗口打开之后,显示之前发生。
调整窗口大小、设置窗口实例变量、初始化一些控件close窗口被关闭时发生。触发该事件后,没有办法阻止窗口的关闭closequery在开始关闭窗口时发生,该事件返回一个0或1的返回值
如果返回值为1,则窗口不关闭,close事件也不会产生
如果返回值为0,则窗口被关闭resize当窗口大小发生变化时变化,窗口被打开时也触发此事件key当用户在键盘上按下一个键且插入点不在编辑区域时发生activate在窗口成为活动窗口之前、 Open 事件触发完后触发 ,此事件发生后,Tab 值最小的对象得到焦点,如果没有 排序号,则窗口本身获得焦点deactivate窗口变为不活动时发生clicked户单击窗口的空白区域时发生,此区域不能有任何的空间或数据窗口doubleclicked用户双击窗口的空白区域时发生,此区域不能有任何的空间或数据窗口dragleave当可拖放对象或控件,离开空白区时发生dragleave当可拖放对象或控件,在窗口中被拖动时发生hotlinkalarm在动态数据交换(DDE)服务器应用发送了新的(修改后)的数据,且客 户DDE应用程序已经接收到数据时发生mousedown空白区,单击鼠标左击时发生。
此事件与click事件相同,flags的值总为1mousemove鼠标在窗口中移动时发生mouseup放开鼠标左键时发生rbuttondown空白区,按下鼠标右键时发生remoteexec当一个DDE客户应用程序发送了一条命令时发生remotehotlinkstart当一个DDE客户应用程序要开始一个热连接(hotlink)时发生remotehotlinkstop当一个DDE客户应用程序要结束一个热链接时发生remoterequest当一个DDE客户应用程序请求数据时发生remotesend当一个DDE客户应用程序已经发送了数据时产生systemkey当插入点不在编辑框中且用户按下【alt】或【alt+其他组合键时发生】timer调用timer函数,启动定时器、设定时间后发生toolbarmoved当MDI窗口中的工具栏被移动时发生4.2 举个栗子
① open事件- Cb_Save.Enabled=False //禁用“保存”按钮的功能
- SetPointer(HourGlass!) //将鼠标形状置为沙漏形
- Dw_1.SetTransObject(SQLCA) //为数据窗口设置事务对象
- Dw_1.Retrieve() //检索数据
复制代码 ② 避免用户因疏忽退出窗口而丢掉在数据窗口中的修改数据 ,通常在 CloseQuery 事件中判
断某些工作是否完成,并显示一个提示窗口询问用户,根据用户的确认,返回一个值来决定
是否触发窗口的 Close 事件。
返回值为 1,表示取消关闭动作;返回值为 0,表示继续执行Close 事件- Int li_flag
- //如果数据窗口中没有修改,则允许执行 Close,直接返回
- If dw_1.ModifiedCount() <= 0 And dw_1.DeletedCount() <= 0 Then Return 0
- //如果数据窗口有修改,询问用户是否保存
- li_flag = MessageBox("提示","数据已经修改,是否保存? ",Question!,YesNoCancel!,1)
- Choose Case flag_i //根据用户选择执行
- Case 1 //用户选择要保存数据
- If dw_1.Update() = 1 Then //如果修改数据成功
- Commit; //提交
- Return 0 //继续执行 Close 事件
- Else //修改数据不成功
- rollback; //回退事务
- li_flag = MessageBox("提示","数据错误,是否继续关闭!",Question!,YesNoCancel!,2) //显示错误
- If li_flag = 1 Then
- Return 0 //允许关闭
- Else
- Return 1 //不允许关闭
- End If
- End If
- Case 2 //用户选择不保存数据
- Rollback; //回退事务
- Return 0 //允许执行 Close 事件
- Case 3 //用户选择取消
- Return 1 //不允许关闭
- End Choose //用户所有的选择情况处理完毕
复制代码 8.8 自动调整窗口
实现窗口居中- //open事件中代码
- ii_width = This.width
- ii_height = This.height
复制代码 以上就是本期内容的全部,希望对你有所帮助。我们下期再见 (●'◡'●)
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作! |