PowerBuilder的语言基础-程序员宅基地

技术标签: 语言  java  function  powerbuilder  文本编辑  PB学习  数据库  

     每一种语言都有一组基本的语法约定,POWERBUILDER也不例外。
     (1)断行、续行与多条语句
     通常情况下,powerbuilder的一条语句是写到一行上的,该条语句在书写完毕之后,按<Enter>键转到下一行,开始写下一句的内容。也就是说,在PowerBuilder中,使用<Enter>键作为一行的结束。在PowerBuilder语句比较长的情况下,为了方便阅读,可以使用续行符号把一条语句写到几行上。PowerBuilder的续行符号为‘&’,它放在一句的末尾,表示下一行是前一行的继续。例如下面的一个语句:
      Net=MessageBox("提示","真的想退出么?",&
      Exclamaton!,OKCancel!,2)
     注意,不能在标示符或者保留字的中间加入续行符。
     在嵌入式SQL语言中不需要使用续行符,因为这类语句都是以分号(;)作为语句的结束,尽可以把一条SQL语句写成多行。
     如果想在一行中写上多条语句,那么在多条语句之间应该以分号进行分隔,例如:
  a=b+c;g=h+j;cnt=a+g+cnt
     但是为了使程序写出来之后清晰直观,建议不要在一行中写入多条语句。

 

     (2)PowerBuilder的PowerScript语言的标识符
      标识符用来命名程序中的变量,符号,函数,窗口,控件,对象等的名称。在PowerBuilder中,标识符的命名应当遵守下面的几个规则,这个规则与Java语言的命名规则有少许区别:
     1)必须以字母或者下划线(_)开头。
     2)其余的字符可以是字母、数字、以及下列特殊的符号:短横线(-)、美元符号($)、号码符号(#)、百分号(%)。
     3)标识符的中间不能添加空格。
     4)通常,PowerBuilder中的标识符是不区分大小写的。
     5)标识符不能使用保留字。
     6)PowerBuilder的标识符的最长为40个字符。
     短横线与减号是同一个字符,因此在表达式中使用减法运算符的时候,必须在减号的两边加上两个空格,否则会有可能产生运算错误。通常情况下,尽量不要在标识符当中使用短横线,以免与减法运算符混淆,可以用下划线来代替短横线来分隔单词。如果想禁止在标识符中使用短横线,可以使用文本编辑器打开PB.ini文件,然后在[pb]节点中将DashesInIdentifiers=1修改为:DashesInIdentifiers=0。但是这样会带来一个问题,就是在禁止在标识符中使用短横线之后,建立菜单之后分隔条的名称也就不能使用短横线了。因此还是建议不要对其进行修改。


     (3)PowerBuilder中的空值
     空值(NULL)是PowerBuilder与数据库交换数据时使用的一种特殊值,代表数据未定义、不明确,它与字符串数值零以及日期00-00-00的意义是完全不相同的。PowerBuilder的所有数值类型都支持空值,但是与Java等语言不相同,PowerBuilder并不把空值作为默认值。例如,说明变量的时候,PowerBuilder把0赋值给数值型数据,把False赋值给布尔型变量,把“”赋值给字符串变量,这个和Java有很大区别。变量被赋值空值的途径有两条:
     1)从数据库中读到空值。
     2)使用SetNull()函数赋值,例如:
        String person
        SetNull(person)
     在测试一个变量或者是一个表达式是否是控制的时候,要使用函数IsNull(),而不是直接使用关系表达式。例如a是一个变量,要测试a的值是不是为空值,我们可以这样写:
  IF IsNull(a) THEN......
  写成 IF a=NULL THEN.....是错误的。原因是:空值不等于任何另外一个值,也不等于另外一个空值。


     (4)PowerBuilder中对象属性、函数和事件的应用方法
     PowerBuilder应用程序的开发过程实际上就是各种对象定义和使用的过程。所有的对象都有自己的名称,并且通过彼此的名称进行相互区分。在PowerBuilder中,如果想访问对象的属性,函数,事件的方法是非常简单的,同Java一样,都是使用.作为标示符。具体来说,访问对象的格式是:
  对象名.对象的属性
     例如,把单行标记狂sle_name中用户输入的内容送到字符串变量ls_name的语句可以写成:
  ls_name=sle_name.Text
     其中,sle_name是一个单行文本框对象的名称,Text是单行文本框的Text属性。
     程序中访问对象中函数和实践的格式为:
      [objectname.][type][calltype][when]functionname([argumentlist])
     对于上面的格式的说明:
     objectname:是对象名
     type:可以取值为FUNCTION或者EVENT,用于指明是访问函数还是事件,默认值为FUNCTION。
     calltype:用于指明PowerBuilder查找函数的时机,有效的取值为STATIC(默认值)---编译的时候查找函数,如果不存在,就产生编译错误;DYNAMIC---程序运行的时候查找函数,如果不存在,就产生运行错误。
     when:用于指明函数或者事件是立即执行还是当前程序段执行完毕后执行,取值为:TRIGGER(默认值)立即执行;POST--当前程序段执行完毕后执行。
     functionname:指明调用的函数或者事件名称。
     argumentlist:给出函数或者事件的参数。
     例如:要把输入焦点移动到单行文本sle_name上,可以在程序中写上下面的语句:
  sle_name.SetFocus()
     想要立即执行按钮cb_name的单击事件处理程序,那么写上下面的语句:
  cb_name.EVENT TRIGGER Clicked()


     (5)PowerBuilder中的代词
     PowerBuilder提供了四个代词指定特定的对象.程序中使用代词的好处是避免硬代码,做到代码的通用化,这四个代词分别为This、parent、ParentWindow和Supper,四个代词的意义分别列举如下:
     This:代表窗口、用户对象、菜单、应用对象或者控件本身,也就是代表正在为止编写事件处理程序的对象。
     Parent:指当前控件所在的窗口,例如我们可以关闭按钮的父对象,就可以使用parent代词。
     ParentWindow代表运行时菜单所在的窗口,该代词只能在菜单的事件处理程序中使用,如果在“退出”菜单项的“Clicked”事件处理程序中写上代码:Close(ParentWindow)则单击该菜单项的时候就会关闭与之关联的窗口,而不管窗口的具体名称叫什么。
     Super:在编写控件与对象的子对象的时间处理程序的时候,子对象可以调用父对象的事件处理程序,程序中既可以直接利用父对象的名称调用它们,也可以使用Super代词来引用。

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/ziwen00/article/details/5379946

智能推荐

Activity内嵌Fragment,当Activity recreate时Fragment出现重叠_activity recreate viewpager导致fragment重复创建-程序员宅基地

文章浏览阅读519次。recreate()Activity recreate()之后会出现fragment重叠的问题,需要给fragment增加tag@Overrideprotected void onCreate(Bundle savedInstanceState) { // 判断当前是recreate还是新启动 i..._activity recreate viewpager导致fragment重复创建

DL | 快速使用Tensorboard可视化模型参数和模型结构_tensorboard怎么看参数-程序员宅基地

文章浏览阅读2.9k次。题外话:最近因为毕设的关系时间比较紧张,所以没有及时总结。不过这个问题遇到让人很棘手,但紧急解决办法又出乎意料,所以一记。之后如果有补上较为规范的解法,再补充内容。问题陈述:使用现有算法的Tensorflow代码,希望看到网络的可视化结构,怎么办?官方答案:Tensorboard可视化官方文档快速方法:网上找了很多资料都会索引回Tensorflo_tensorboard怎么看参数

FDN308P-NL-VB一款SOT23封装P—Channel场效应MOS管-程序员宅基地

文章浏览阅读160次。适用于各种电源管理和开关电源应用,特别是在需要 P—Channel 沟道的场合。具有低导通电阻和高效率的特性,适用于对性能要求较高的应用。该器件在需要负载开关和电源管理的场景中表现出色,特别适用于对功耗、效率和空间有严格要求的应用。- **模块:** 电源逆变器、功率放大器、电池管理系统。- **领域:** 电源管理领域。- **丝印:** VB2290。- **品牌:** VBsemi。- 最大工作电压:-20V。- 封装:SOT23。- 最大电流:-4A。- **应用简介:**- **举例说明:**

mmdetection的configs中的各项参数具体解释_mmdetection checkpoint_config-程序员宅基地

文章浏览阅读5.1w次,点赞92次,收藏483次。简介在使用mmdetection对模型进行调优的过程中总会遇到很多参数的问题,不知道参数在代码中是什么作用,会对训练产生怎样的影响,这里我以faster_rcnn_r50_fpn_1x.py和cascade_rcnn_r50_fpn_1x.py为例,简单介绍一下mmdetection中的各项参数含义faster_rcnn_r50_fpn_1x.py首先介绍一下这个配置文件所描述的框架,它是基..._mmdetection checkpoint_config

iOS之旅--NIM SDK 使用指南_nimsdk-程序员宅基地

文章浏览阅读1.2w次。便于记录查看地址,方便查找http://dev.netease.im/docs/product/IM%E5%8D%B3%E6%97%B6%E9%80%9A%E8%AE%AF/SDK%E5%BC%80%E5%8F%91%E9%9B%86%E6%88%90/iOS%E5%BC%80%E5%8F%91%E9%9B%86%E6%88%90NIM SDK 使用指南_nimsdk

.netCore Nlog 配置模板_.net core nlog 自定义变量-程序员宅基地

文章浏览阅读931次,点赞2次,收藏4次。.netCore Nlog 配置模板 之前一直在从. netFrameWork 往.netCore 方向发展,最早使用的日志比较多的是Log4net,但是发现但是Log4net也有一个让我比较头痛的 地方就是感觉配置过于复杂,根本记不住,每次都必须去查阅资料,在.netCore官网上发现 Nlog的相关配置,Nlog没有Log4net老牌,使用 从Nuget下载量来看也没有Log4net用..._.net core nlog 自定义变量

随便推点

python中类方法与实例方法的区别-Python中的对象,方法,类,实例,函数用法分析...-程序员宅基地

文章浏览阅读53次。本文实例分析了Python中的对象,方法,类,实例,函数用法。分享给大家供大家参考。具体分析如下:Python是一个完全面向对象的语言。不仅实例是对象,类,函数,方法也都是对象。class Foo(object):static_attr = Truedef method(self):passfoo = Foo()这段代码实际上创造了两个对象,Foo和foo。而Foo同时又是一个类,foo是这个类的..._python中用类名引用方法和用对象实例引用方法的区别

anaconda安装库命令_anaconada安装库-程序员宅基地

文章浏览阅读1.2w次,点赞11次,收藏131次。![在这里插入图片描述](https://img-blog.csdnimg.cn/20200212090314816.png)在这里输入命令:![在这里插入图片描述](https://img-blog.csdnimg.cn/20200212090424550.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10..._anaconada安装库

生成对抗网络GAN系列(五)--- pix2pix---Image-to-Image Translation with Conditional Adversarial Networks---附代码_pix2pix训练自己的数据集-程序员宅基地

文章浏览阅读8.3k次,点赞15次,收藏60次。Image-to-Image Translation with Conditional Adversarial Networks-(pix2pix)Phillip Isola Jun-Yan Zhu Tinghui Zhou Alexei A. EfrosBerkeley AI Research (BAIR) Laboratory,..._pix2pix训练自己的数据集

TP-LINK TL-WDN6200 USB无线网卡驱动程序安装方法_ubuntu18tplink wdn6200h 无线网卡驱动安装-程序员宅基地

文章浏览阅读1.2w次。前一阵在某东入手一个TP-LINK的USB无线网卡(完整型号:TP-LINK TL-WDN6200 1200M千兆高速双频无线网卡USB 台式机笔记本随身wifi接收器),由于装了win10+ubuntu双系统,需要在ubuntu下手动安装驱动。上网查找了一些方法,基本思路都是下载驱动源码、编译安装,但都是针对tp-link老款百兆的usb无线网卡。通过usb id(执行lsusb,可看到为235_ubuntu18tplink wdn6200h 无线网卡驱动安装

shell编程_shell $1-程序员宅基地

文章浏览阅读888次。shell编程_shell $1

Flask-paginate基本分页_pagination.links-程序员宅基地

文章浏览阅读2k次。Flask-paginate—实现分页安装包pip install flask-paginate后端代码from flask_paginate import Pagination, get_page_parameterfrom ..models import BannerModel, BoardModel, [email protected]("/")def inde..._pagination.links

推荐文章

热门文章

相关标签