ImageVerifierCode 换一换
格式:DOCX , 页数:11 ,大小:22.70KB ,
资源ID:3541029      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3541029.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(PB菜单和MDI.docx)为本站会员(b****4)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

PB菜单和MDI.docx

1、PB菜单和MDIPB-菜单和MDI菜单条-MenuBar、菜单项-MenuItem、级联菜单(子菜单)-SubMenu菜单项(MenuItem)是菜单中最基本的元素,只要有文字内容的就是菜单项。菜单条(MenuBar)是菜单中级别最高的菜单项的总称,也叫做菜单标题。菜单条的内容总是显示出来,对菜单的操作也是首先从这里开始的。在菜单条上移动鼠标或者点击其中的项目可以显示对应的内容,称为下拉菜单,包括很多的菜单项,它们大多数都执行相应的功能,少数还可以包含更细致的内容,称为级联菜单(SubMenu),也叫做子菜单。这样的菜单项右面都有小箭头指示在设置菜单时,在设计窗口中的每一步修改都能反映到预览窗

2、口中,随时可以检查级别关系是否正确。如果发生顺序或者级别错误,可以用鼠标选中错误菜单项(不要使菜单项处于编辑状态),然后直接拖动到正确的位置即可。在菜单项中输入内容时,有两个字符具有特殊的含义,“-”可以创建菜单项之间的分隔线,“.”表示该菜单项可以弹出一个属性对话窗口。另外,弹出式菜单弹出的是某个下拉菜单或者某个级联菜单,也可以单独设计弹出式菜单,和下拉式菜单的设计没有什么区别。【属性】Name在该属性框中为菜单项命名。缺省菜单的名称都是m_加上菜单项的内容。在脚本中引用菜单项时要从最开始一级加圆点符号逐级引用,比如要引用“文件”下的菜单项“打开”,可以使用“m_文件. m_打开”来引用。T

3、ext该属性就是在创建菜单时每个菜单项中输入的内容。运行时的整个菜单内容就是该属性的内容。MicroHelp如果菜单挂接在MDIHelp!类型的窗口中,运行状态下,当鼠标指针指向菜单项或者工具条中的小图标时,该文字可以显示在MDI窗口底部的状态条中ToolbarItemText可以定义显示在工具条小图标中的文字,以对小图标的功能有简短的描述。当鼠标指针指向工具条中的小图标时,显示此文字ToolbarItemName该属性用来定义工具条小图标上显示的图形。可以使用PowerBuilder提供的很多小图标,也可以自定义。ToolbarItemDownName菜单选中时,即checked时,按下的图

4、标,一般与ToolBarItemName相同ToolbarItemVisible显示或隐藏工具条图标ToolbarItemDown菜单选中,即checked,图标按下ToolbarItemSpace指定该图标和前面图标之间的间距。一般都是0,只有不同组的图标之间才有必要设置间距。ToolbarItemBarIndex指定图标显示在哪一行的工具条上。该属性相同的图标显示在同一行,只要相同就可以,并不要求该属性取值为连续的数字。ToolbarItemOrder指定图标显示顺序,此值越大越靠后,默认0时按照菜单中的顺序显示。如在菜单file下后exit,需要把exit图标放在最后,则其他都为0,ex

5、it设为1就可以了ShortCutKey该属性和ShortCut Alt,ShortCut Control和ShortCut ShIft三个选项配合使用来定义菜单项的快捷键。其他的属性使用得比较少。菜单编程为“退出”菜单项编写脚本在菜单中指代词parentwindow是指菜单挂接的窗口,比直接使用窗口的名称有更好的通用性。所以在“退出”菜单项的Clicked事件中可以这样编写脚本:close(parentwindow)选中某个菜单项可以使用Checked标记来表示某个菜单项选中,可以在菜单项的Clicked事件中编写如下脚本来选中菜单项:if this.checked thenthis.che

6、cked = falseelsethis.checked = trueend if也可以使用函数Check和UnCheck来代替属性修改。上面的脚本可以改成:if this.checked thenthis.uncheck()elsethis.check()end if当菜单项选中时,菜单项的左侧有一个“”符号,并且对应的小图标为按下状态。隐藏某个菜单项要隐含某个菜单项,可以将该菜单项的Visible属性修改为False,如果该菜单项位于菜单条的最高级别上,则可以将整个下拉菜单隐含。例如,某窗口上挂接了菜单m_main,在窗口的打开事件中将菜单中的“文件”整个下拉菜单隐含,可以在该窗口的0pe

7、n事件中编写如下脚本:m_main.m_文件.Visible = False但是,将菜单项隐含并不能将其对应的在工具条中的小图标隐含,并且小图标的功能照样能够正常执行。要将小图标隐含,应该设置ToolBarItemVisible属性为False。例如,隐含菜单项“打开”对应的小图标,在窗口的打开事件中可以使用下面的语句:m_main.m_文件.m_打开.ToolBarItemVisible = False使某个菜单项失效将菜单项的Enabled属性置为False,即可使菜单项显示变灰而不能使用,同时对应的小图标也变灰。如果足下拉菜单则整个下拉菜单不能使用,但其下拉项目对应的小图标可以正常使用。

8、如果是级联菜单则级联菜单不能被打开,但是级联菜单下的各个菜单项对应的小图标可以正常使用。下面是在窗口打开事件中将菜单m_main的“文件”下的m_open修改为无效的脚本: m_main.m_文件.m_open.Enabled = False调整工具条的位置如果工具条的ToolBarUserControl属性(在application中)设置为True,则用户可以在工具条上按鼠标右键弹出菜单。使用该弹出菜单可以调整工具条的显示位置。用直接拖拉的方式也可以改变工具条的显示位置。当工具条的位置发生变化时将触发窗口的ToolBarMoved事件,在该事件中可以编写脚本来判断工具条的移动情况。当该事件

9、触发时,PB自动修改Message中的参数WordParm和LongParm使用这两个属性可以判断工具条的移动情况,属性含义如下:Message.LongParm属性的含义:0:移动到左侧;1:移动到顶部;2:移动到右侧:3:移动到底测;4:变为浮动显示。Message.WordParm属性的含义:O:FrameBar在移动;1:SheetBar在移动。关于工具条位置的编程一般是在窗口打开和关闭时应用。关闭对应该保存用户关于工具条的设置,以便在窗口打开时将工具条恢复到上次关闭时的状态。这些信息可以保存在应用的ini文件中,具体含义只要开发人员清楚即可,打开时按同样的含义来设置工具条的位置。如在

10、Frame的close()事件中编程(ToolbarAlignment为窗口的属性):choose case this.ToolbarAlignmentcase AlignAtTop!SetProfileString(C:toolbar.ini,setup,align,1)case AlignAtLeft!SetProfileString(C:toolbar.ini,setup,align,0)case AlignAtRight!SetProfileString(C:toolbar.ini,setup,align,2)case AlignAtBottom!SetProfileString(C:

11、toolbar.ini,setup,align,3)case Floating!SetProfileString(C:toolbar.ini,setup,align,4)end choose同样,在Frame的打开事件中可以根据ini文件的设置来决定工具条的显示。例如,下面的脚本在打开事件中读取ini文件中的配置来决定工具条的显示位置:string ls_alignls_align = ProfileString(c:toolbar.ini,setup,align,1)choose case ls_aligncase 0this.ToolbarAlignment = AlignAtLeft!c

12、ase 1this.ToolbarAlignment = AlignAtTop!case 2this.ToolbarAlignment = AlignAtRight!case 3this.ToolbarAlignment = AlignAtBottom!case 4this.ToolbarAlignment = Floating!end choose当然,也可以用同样的方法保存更多的设置,例如是否隐含工具条,是否显示文字SheetBar的显示情况等等。修改工具条上右键弹出菜单中的内容应用对象的属性ToolBarUserControl控制着用户是否可以在工具条上使用右键弹出菜单,该属性缺省是Tr

13、ue,默认为英文格式,可以修改ToolBarFrameTitle、ToolabarSheetTitle、ToolbarPopMenuText等属性换成中文字。ToolBarFrameTitle:框架(也可理解为主菜单工具条)Frambar中文ToolabarSheetTitle:打开sheet后的Sheetbar中文也可以在Frame的打开事件中编写脚本实现:GetApplication().ToolbarPopMenuText = 左侧、顶部、右侧、底部、浮动、文字、提示信息文字以逗号分隔,如果多了则被自动忽略。只能修改该弹出菜单中的文字,但不能修改对应各项的功能。其中函数GetApplic

14、ation可以获取当前应用的句柄(handle)。也可以在Frame的打开事件中使用下面的语句来限制用户不准使用工具条上的弹出菜单:GetApplication().ToolbarUserControl = false动态设置MicroHelp使用函数SetMicroHelp可以动态改变菜单项的MicroHelp内容。该函数的语法是:windowname.SetMicroHelp(string)其中windowname是菜单所挂接的窗口名称,string是要设置的MicroHelp内容。函数正确执行返回1,否则返回-1,如果有参数为null则返回null。一般在菜单项的Selected事件中使

15、用该函数。如果在定制Frame窗口的控件中修改MicroHelp,还得在相关事件中取消MicroHelp。一般在控件的GetFocus事件中显示MicroHelp提供关于该控件的解释信息,在LoseFocus事件中将MicroHelp修改为“Ready”。一个保存MicroHelp的好方法是使用控件的Tag属性,在窗口画板中给每个要显示MicroHelp的控件的Tag属性都指定适当的内容,然后在需要改变MicroHelp的脚本中将Tag属性作为函数SetMicroHelp的参数即可。使用右键弹出菜单在RButtonDown事件下使用函数PopMenu来显示弹出试菜单。该函数的语法是:menun

16、ame.PopMenu(xlocation,ylocation)其中menuname是要弹出的菜单的名称,可以是某个下拉菜单中的某个下拉项目或者某个级联菜单。xlocation和ylocation是菜单显示的位置,该坐标的取值是相对于窗口而言的。通常使用函数PointerX和PointerY来获取该坐标,以便在鼠标点击的位置弹出菜单。这两个函数的语法格式相同,PointerX的格式是:objectname.PointerX()其中objectname是控件名称,X是鼠标点击位置和objectname左边框的距离,缺省为脚本所在的控件。在和函数PopMenu搭配使用时应该获取相对于窗口而言的坐标

17、位置。虽然每个控件的RbuttonDown事件中都有xpos和ypos参数可用,但这都是相对于控件而言的。也就是说除了要弹出的菜单在窗口上,一般很少用xpos和ypos。一般为menuname.PopMenu(parent.pointerX(),parent.pointerY()。*Menu4 NewMenuNewMenu = CREATE Menu4NewMenu.m_language.PopMenu(PointerX(), PointerY()NewMenu.m_language.PopMenu(w_frame.PointerX(), w_frame.PointerY()改变窗口中的菜单函

18、数ChangeMenu可以动态改变窗口的菜单。它的语法格式是:windowname.ChangeMenu(menuname,position)其中,windowname是要改变菜单的窗口的名称;menuname是要挂接到窗口上的菜单的名称;position是可选参数,仅用于MDI Frame窗口中,用来指示给当前的窗口列表中追加的菜单标题的位置。缺省值为1,这时所有打开的Sheet出现在第一个菜单标题的下拉式菜单的底部。隐藏和显示工具栏windowname.ToolbarVisible = True/False隐藏和显示文字GetApplication().ToolbarText = True

19、/False隐藏和显示提示信息GetApplication().ToolbarTips = True/FalseMDI-Multiple Document Interface*菜单是MDI应用中必不可少的,不仅Frame必须有一个菜单,就连在客户区打开的各个Sheet也应该有菜单,如果没有就会自动继承前面Sheet的菜单。有两种通常的方式来为MDI的Sheet表提供菜单:在框架和每个Sheet之间共享一个菜单,或者分别为每个Sheet提供一个单独的菜单,当然也可以这两种方式混合使用。当打开多个有菜单的Sheet时,只有当前Sheet的菜单显示在Frame顶部,其他Sheet的工具条可以显示,而

20、它们的菜单不显示。菜单提供各个Sheet间切换的功能,以及在Sheet中能够完成的绝大部分功能。每个菜单可以有自己对应的工具条,也可以没有,还可以对应多行工具条,这些都是在菜单画板中设计的。*客户区是MDI窗口中用户的工作区间,Sheet都是在该区域显示的,它们的显示范围不会超过该区域。如果在MDI框架中放置了控件,这样的MDI窗口称为定制Frame,否则就称为标准Frame。客户区实际上是一个非常特殊的控体该控件叫做mdi_1,只有当运行时才可用。当使用定制Frame时mdi_1控件不能正确显示在可视区域,这时打开Sheet也不会正常显示,应该在Frame的Resize事件中编写脚本,对md

21、i_1重新进行定位。假设在Frame的上部放置了命令按键cb_1,在命令按键的下面和状态条之间显示mdi_1。脚本如下:uint li_x,li_y,li_width,li_heightli_x = WorkSpaceX()li_y = cb_1.y + cb_1.Heightli_width = WorkSpaceWidth()li_height = WorkSpaceHeight() - li_y - mdi_1.MicroHelpHeightmdi_1.Move(li_x,li_y)mdi_1.Resize(li_width,li_height)上述脚本中的函数WorkSpaceX、Wo

22、rkSpaceWidth、WorkSpaceHeight和另外的函数WorkSpaceY用来获取关于工作区域的参数,使用方法都比较简单,只要注意这些函数都不包括工具条所占用的区域。通过上述脚本,mdi_1控件就可以正确显示在Frame的可视范围内,再打开Sheet也不会出现什么异常了。当使用标准Frame时,系统会自动维护客户区的位置和大小。*在MDI应用系统中,Frame窗口必须包含一个菜单,该菜单可以有工具条也可以没有。在Frame菜单中可以编写打开Sheet的脚本。Sheet并非特殊类型的窗口,只是在Frame中打开就称为了Sheet,实际上就是非MDI类型的窗口。虽然Sheet就是普通

23、的窗口,但不能使用Open函数打开,要使用OpenSheet或者OpenSheetWithParm函数来打开。Sheet可以有菜单也可以没有菜单。当打开带有菜单的Sheet时,Sheet的菜单自动取代Frame的菜单;当打开没有菜单的Sheet时,该Sheet自动使用Frame的菜单(当然,可能是Frame本身自带的菜单,也有可能是其他Sheet的菜单)。这时就出现了问题,当打开带菜单的Sheet时,Sheet的菜单覆盖了Frame的菜单,Frame菜单中的功能如何执行?好的解决方法就是使用工具条。Sheet的菜单替换了Frame的菜单后,Frame的工具条始终可以显示,使用工具条照样可以正常

24、执行Frame菜单的功能。所以,在创建Frame的菜单时,好的习惯就是要同时创建菜单的工具条。但是,使用这种解决方法时,工具条中小图标功能的易记易用性就非常重要了,开发人员应该尽可能提供更多关于小图标的信息,如MicroHelp,Tips和 ToolBarItemText等。另外一种解决方法可能有一定的适用情况,就是让所有的Sheet都共享Frame的菜单,当所有的Sheet都进行同一类型或相似类型的操作时,比如像微软的Word似的,Sheet都进行文件编辑的情况下,这种方法就比较实用,菜单的维护就比较简单。【函数】opensheet和opensheetwithparm在Frame菜单中可以编

25、写打开sheet的脚本。sheet并非特殊类型的窗口,只是在Frame中打开就称为了sheet,实际上就是非MDI类型的窗口,虽然Sheet就是普通的窗口,但不能使用open函数打开,要使用OpenSheet或者OpenSheetWithParm函数来打开。其中OpenSheet函数不给Sheet传递参数,而函数OpenSheetWithParm可以在打开Sheet的同时传递参数。OpenSheet的语法格式是;OpenSheet(Sheetrefvar,windowtype,mdiframe,position,arrangeopen)其中,Sheetrefvar是要打开的Sheet的名称(注

26、意,不能是MDl类型的窗口);mdiframe是Frame的名称,表示要在这个Frame的客户区打开名称为sheetrefvar的Sheet;这两个参数指明了在哪个Frame中打开哪个Sheet,都是必须的。变量windowtype为string类型,用来表示要打开的窗口的名称,如果指明该参数,则sheetrefvar的类型必须是能够接受window类型的赋值,这时的函数表示要打开windowtype名称的窗口,并将其实例保存在变量sheetrefvar中,可以使用该变量引用这个sheet。position是一个integer类型的参数,表示在菜单条中的位置,新打开的sheet名称作为一个菜单

27、项添加在该位置的下拉菜单中。菜单条最左面的项目位置为1,依次增加,当该参数大于菜单条中的项目数时则将sheet名称添加到右侧倒数第二个菜单的下面。如果打开的sheet数据超过9个,多余的则以级联菜单的形式显示在该菜单的more windows下。参数arrangeopen是指打开sheet后在客户区中的布局方式,是arrangeopen枚举类型的值,有3个可以使用的取值。Cascaded!:将打开的sheet层叠起来,使所有的标题栏都可见。这是缺省方式。Layered!:将打开的sheet完全地覆盖在客户区,后打开的覆盖前面的sheet。Original!:用窗口的原始尺寸打开,打开后并以Ca

28、scaded!方式安排布局。eg:在名称为MDI_my的Frame中打开窗口名称为w_edit的窗口opensheet(w_edit,MDI_my)opensheet(w_edit,MDI_my,3,Cascaded!)window lw_wopensheet(lw_w,w_edit,MDI_my,3,Cascaded!)和opensheet函数类似,opensheetwithparm函数中的很多参数含义完全相同。其语法格式如下:OpenSheetWithParm(Sheetrefvar,parameter,windowtype,mdiframe,position,arrangeopen)其中

29、parameter是要传递的参数,可以是String,Number或者PowerObject类型,该函数用法及参数含义和opensheet完全相同。GetActiveSheet使用函数GetActiveSheet可以获取当前的Sheet,该函数的语法如下:mdiframewindow.GetActiveSheet()其中mdiframewindow是当前Frame的名称。该函数返回window类型数值,是当前活动的sheet。执行过程中发生错误则返回无效数据,如果mdiframewindow为null则返回null。该函数经常和IsVaild配合使用,来检查函数返回的窗口是否有效。IsVali

30、d,判断指定对象是否有效,该函数语法为:IsValid(objectname)其中objectname是要进行是否有效判断的对象。该函数返回为boolean类型的值。GetFirstSheet()GetNextSheet()ArrangeSheets使用函数ArrangeSheets可以安排当前打开的和最小化的Sheet的布局,该函数的语法是:mdiframe.ArrangeSheets(arrangetype)其中,mdiframe为Frame的名称,arrangetype是arrangetypes枚举类型的数值,可以取为:Cascade!:将打开的Sheet层叠起来,使所有的标题栏都可见。

31、Layer!:将打开的Sheet完全的覆盖在客户区。Tile!:将打开的Sheet以平铺的方式从左到右排列。TileHorizontal!:将打开的Sheet并排放置。Icons!:仅将最小化的Sheet沿Frame的底部放置。该函数正确执行则返回1,否则返回-1,如果有参数为null则返回null。GetToolbar、GetToolbarPos和SetToolbar、SetToolbarPos获取工具条的信息可以使用属性和函数来获取关于工具条的信息。下面是应用对象关于工具条的属性,这些属性经常和函数GetApplication一起使用。这些属性既可以控制工具条的显示情况,也可以获取关于工具条的信息。ToolbarFrameTitle string 浮动显示的工具条上的标题ToolbarSheetTitle string 浮动显示的sheet工具条上的标题ToolbarPopMenuText string 工具条弹出菜单中的文字ToolbarUserControl boolean 工具条是否可以使用弹出菜单来控制ToolbarText boolean 工具条中的小图标是

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1