前往Shuct.Net首页

Shudepb PB反编译专家长时间以来,为业内同类软件事实上的唯一选择.细节,彰显专业.态度,决定品质.

关于PowerBuilder的搜索

PowerBuilder - 正腐安矣的日志 - 网易博客 网易 新闻 微博 邮箱 相册 阅读 有道 摄影 爱拍 优惠券 云笔记 闪电邮 手机邮 印像派 网易识字 更多 博客 手机博客 博客搬家 博客VIP服务 LiveWriter写博 word写博 邮件写博 短信写博 群博客 博客油菜地 博客话题 博客热点 博客圈子 找朋友 发现 小组 风格 网易真人搭配社区iStyle 把最美的记录工具,装进你的口袋 >> 把最美的记录工具,装进你的口袋 >> 把最美的记录工具,装进你的口袋 >> 创建博客 登录 加关注 显示下一条 | 关闭 温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》 | 关闭 悠然见南山 质的生活安的心静..... 导航 首页 日志 相册 音乐 收藏 博友 关于我 日志 PowerBuilder 2009-08-15 08:23:43| 分类: 电脑维护 | 标签: |举报 |字号大中小 订阅 安装和启动PowerBuilder 10.0 1.2.1 安装PowerBuilder 10.0 安装PowerBuilder 10.0系统软件,可以选择最小安装、典型安装和用户自定义安装三种方式,不同安装需要的硬盘空间不同。下面介绍的是典型安装。 PowerBuilder 10.0系统软件的安装过程与大多数Windows应用软件一样。不同的是需要安装PowerBuilder 10.0许多相关组件。下面先介绍PowerBuilder 10.0的这些组件,PowerBuilder 10.0中有以下组件: l PowerBuilder 10.0。 l InfoMaker:是快速原型开发工具。 l PowerDynamo:是动态页面服务器。 l Jaguar CTS:是事务处理服务器。 l Sybase Online Books。 l Adaptive Server Anywhere:是随PowerBuilder提供的一个完整的客户/服务器数据库管理系统。 本小节介绍在中文Windows环境下PowerBuilder 10.0的安装过程。具体步骤如下: (1) 将PowerBuilder 10.0的安装光盘放入光盘驱动器,打开光盘,双击Setup图标,弹出Welcome对话框,如图1-1所示。 (2) 单击图1-1中的Next按钮,弹出如图1-2所示的安装协议,用户应该认真阅读该协议。 图1-1 Welcome对话框 图1-2 安装协议窗口 (3) 单击图1-2中的Yes按钮,弹出如图1-3所示的用户名称和公司名称输入界面。 (4) 单击Next按钮,进入如图1-4所示的安装目录窗口,如果要改变安装目录,则单击Browse按钮选择自己想要的安装目录。 图1-3 用户公司名称输入界面 图1-4 选择安装目录 (5) 单击Next按钮,进入如图1-5所示的共享文件安装目录窗口,如果要改变安装目录,则单击Browse按钮选择自己想要的安装目录。 (6) 在组件选择窗口中,用户可以根据需要选择组件,这里只选择了PowerBuilder 10.0系统软件,如图1-6所示。 图1-5 选择共享文件安装目录 图1-6 PowerBuilder 10.0部件选择窗口 (7) 在类型选择窗口,选取Typical选项将按典型方式安装,如图1-7所示。 (8) 下面几步选择默认设置,然后进入PowerBuilder软件的安装程序窗口,如图1-8所示。 (9) 安装完成后,出现InstallShield Wizard Complete对话框,如图1-9所示。 (10) 安装结束后,重新启动计算机,完成PowerBuilder 10.0的安装。 提示: 如果在如图1-6所示的组件选择窗口中选择其他组件,则安装向导将会继续安装其他组件。其过程和安装PowerBuilder 10.0类似,这里不再一一赘述。 图1-7 选择安装类型 图1-8 安装程序窗口 图1-9 InstallShield Wizard Complete对话框 1.2.2 启动PowerBuilder 10.0 安装完毕后,就可以启动PowerBuilder 10.0了,启动的步骤如下: (1) 单击任务栏的“开始”菜单命令。 (2) 选择“程序”中的PowerBuilder 10.0程序组,然后选择PowerBuilder 10.0菜单命令,启动PowerBuilder 10.0应用程序。也可以在资源管理器的PowerBuilder 10.0安装目录下运行pb10.exe或建立PowerBuilder 10.0的快捷方式,然后双击快捷方式启动 PowerBuilder 10.0应用程序。 (3) 第一次启动PowerBuilder时,会出现“Welcome to PowerBuilder”对话框,如图1-10所示,共有5个选项,两个复选框,用户可以根据需要选择不同的选项。如果启动PowerBuilder时不想显示“Welcome to PowerBuilder”对话框,选中“don’t show this dialog again”复选框,那么下次启动PowerBuilder时,就不会出现这个对话框。 图1-10 Welcome to PowerBuilder对话框 1.3 PowerBuilder 10.0开发环境 PowerBuilder 10.0的开发环境主要分为菜单系统、PowerBar工具栏、工作区以及状态栏4个部分,如图1-11所示。 (1) 菜单系统 菜单系统位于PowerBuilder 10.0开发环境的顶部,包含5个菜单:File菜单、Run菜单、Tools菜单、Window菜单和Help菜单。其中File菜单用于处理与文件相关的操作;在Run菜单中,可以对应用程序进行编译和调试;在Tools菜单中,可以设置PowerBuilder 10.0的各种选项以及使用多种工具;在Window菜单中,可以控制窗口在屏幕上的位置;Help菜单提供了全面的帮助信息。 图1-11 PowerBuilder 10.0的开发环境 (2) PowerBar工具栏 PowerBar工具栏位于PowerBuilder 10.0菜单系统的下面,其中每一个工具按钮都对应一个特定的功能。 (3) 工作区 PowerBuilder 10.0开发环境窗口的中间部分是空白的,这是PowerBuilder 10.0的工作区,PowerBuilder 10.0的各种画板执行的操作都在其中完成。 (4) 状态栏 状态栏位于PowerBuilder 10.0开发环境窗口的底部,为用户提供重要的提示。例如将鼠标停留在某个菜单选项上时,状态栏将显示关于该按钮或菜单选项的详细的文本说明。 1.3.1 菜单系统 菜单是应用程序的主要工具,用户通过菜单执行操作命令,以便完成指定任务(如打开文件和保存文件等)。 除了菜单系统包含的五个子菜单,如果打开不同的画板,则出现不同的菜单。单击某个菜单标签,将显示下拉菜单中的各个命令。单击某个命令,即完成相应操作。另外,还可以使用快捷键执行某个命令。下面将介绍一些菜单命令。 1. Fil菜单 File菜单如图1-12所示,其中包含操作文件的命令。 (1) New命令。用于创建一个新的PowerBuilder 10.0对象,包括应用程序、用户对象、构件对象以及窗口、数据窗口等,如图1-13所示。 图1-12 File菜单 图1-13 New对话框 (2) Inherit命令。用于通过继承一个已存在的对象来创建一个新的PowerBuilder 10.0对象,该对象将拥有原对象的属性。通过该菜单命令,可以选择所需继承对象的类型:窗口对象、用户对象、菜单对象。 (3) Open命令。用于打开一个应用对象。 (4) Open Workspace命令。用于打开一个工作空间。 (5) Recent Workspace子菜单。从Recent Workspace子菜单可以知道当前有哪些工作空间,并且可以单击其中的命令来打开哪个工作空间。 (6) Recent Connections子菜单。从Recent Connections子菜单可以知道当前有哪些数据库连接,并且可以单击其中的命令来建立一个数据库连接。 2. Run菜单 Run菜单如图1-14所示,可以对应用程序进行调试和编译。 (1) Incremental Build Workspace命令。对工作空间中修改的对象进行编译。 (2) Full Build Workspace命令。对工作空间全部对象进行编译。 (3) Debug命令。单击此按钮将进入应用程序调试窗口。 (4) Run命令。单击此按钮将开始运行应用程序。 3. Tools菜单 在Tools菜单中,用户可以设置系统选项。此外,Tools菜单还提供了多个工具,如图1-15所示。 图1-14 Run菜单 图1-15 Tools菜单 图1-16 Toolbars对话框(1) Toolbars命令。用于设置工具栏。选择该命令后,将会打开Toolbars对话框,如图1-16所示。在此对话框中可以设置工具栏的位置和字体等,还可以自定义工具栏。 (2) Keyboard Shortcuts命令。用于编辑键盘快捷键。选择该命令后,将打开Keyboard Shortcuts对话框,如图1-17所示。在此对话框中,可以设置和编辑PowerBuilder 10.0菜单系统中每个菜单命令的快捷键。 (3) System Options命令。用于设置或编辑系统选项。选择该命令后,可打开System Options对话框,如图1-18所示。在此对话框中,可以设置PowerBuilder 10.0的一些系统选项,这些选项将在下一次打开PowerBuilder 10.0时生效,如初始化路径、字体属性、日志文件等。 4. Window菜单 Window菜单如图1-19所示,提供了窗口在屏幕上位置的控制。 (1) System Tree命令、Output命令和Clip命令。用来打开或关闭各自的窗口。 (2) Close命令。关闭画板上的所有窗口。 (3) 其他命令。用来控制窗口的显示方式。 图1-17 Keyboard Shortcuts对话框 图1-18 System Options对话框 图1-19 Window菜单 5. Help菜单 图1-20 Help菜单Help菜单如图1-20所示,提供了帮助信息。 (1) Contents命令。用来打开帮助目录窗口。 (2) Welcome to PowerBuilder 10.0命令。用来打开帮助信息窗口。 (3) About PowerBuilder命令。用于说明Sybase公司PowerBuilder软件发布日期和版权等内容。 1.3.2 工作区 用来设计数据库、用户窗口、数据窗口以及各种组件等的区域,如图1-11灰色部分所示。 1.3.3 工具栏 PowerBuilder 10.0工具栏中的按钮对应常用的操作命令,如图1-21所示。用户可以根据需要增加自己的工具栏。 图1-21 PowerBuilder 10.0工具栏 各主要按钮作用如下: l New:启动Wizards(向导)工具创建新的应用对象、工程文件。 l Inherit:用继承的方式创建一个新的对象。 l Open:打开一个已经存在的对象。 l Run/Preview Object:运行或预览一个对象。 l System Tree:给出Workspace(工作空间)的信息。 l Output:弹出Output(输出)窗口,在窗口给出不同操作的信息。 l Next Error/Message:调试程序时显示下一条错误信息。 l Previous Error/Message:调试程序时显示上一条错误信息。。 l To-Do List:显示To-Do List列表,跟踪开发任务,PowerBuilder 10.0能自动增加列表和项目,快速进入想要找的画板和对象。 l Browser:打开浏览对话框。 l Clip Window:在此窗口中可以把经常使用的代码保存到适当的文件夹中。 l Library:单击此按钮将打开应用程序的库,在此界面中可以管理应用程序的各种对象。 l DB Profile:新建或打开一个数据库描述。 l EAServer Profile:打开一个对话框,可以定义一个特定数据库的连接参数。 l Database:单击此按钮将新建或打开一个数据库。 l Edit:单击此按钮将创建和打开一个文件并编辑文件。 l Incremental Build Workspace:参看“Run菜单”。 l Full Build Workspace:参看“Run菜单”。 l Deploy Workspace:部署Workspace(工作空间)。 l Skip Build/Deploy/Search:用于跳过应用的编译、配置和搜索。 l Stop Build/Deploy/Search:用于中止应用的编译、配置和搜索。 l Run:运行对象。 l Debug:调试对象。 l Select and Debug:选择对象进行调试。 l Select and Run:选择对象进行运行。 l Exit:单击此按钮将退出PowerBuilder 10.0系统。 1.3.4 画板 画板是根据英文Painter翻译过来的,它的实际含义是工具或工具箱,或者可以把它看作是PowerBuilder 10.0大环境下的一个小环境。PowerBuilder 10.0使用画板来建立应用程序的各个组件,PowerBuilder 10.0为每一类对象提供了一个画板。例如用户可在Window画板中建立窗口,为窗口定义属性和添加控件等,如图1-22所示。 图1-22 Window画板窗口 1.3.5 帮助系统 在实际开发PowerBuilder 10.0应用程序的过程中,可以通过PowerBuilder 10.0的联机文档系统得到帮助。 在PowerBuilder 10.0集成环境中选择Help菜单下的Contents命令,即可进入PowerBuilder Help窗口,如图1-23所示,窗口包括了两个页面,“目录”页面和“索引”页面。 定位PowerBuilder 10.0帮助主题有以下几种方式: 通过目录定位:选择“目录”页面,双击某个节点,就可以展开该节点,然后单击要查看的内容,如图1-23所示。 通过“索引”查找信息:在“索引”页面中输入或选择一个与所需查找的信息有关的关键字,然后单击“显示”按钮,会弹出一个查获的主题列表窗口,从中选择所需的主题,然后单击“显示”按钮,可以得到相关内容的文档,如图1-24所示。 图1-23 PowerBuilder 10.0帮助目录窗口 图1-24 PowerBuilder 10.0帮助索引窗口 1.4 窗口和菜单简介 窗口和菜单是用户和PowerBuilder 10.0应用程序联系的主要接口。可以通过菜单接收用户要求,通过窗口向用户显示信息和从用户那里得到信息。PowerBuilder 10.0给出了强大的菜单和窗口功能,可以通过简单的操作得到美观、实用的用户界面。下面将介绍窗口和菜单的设计方法。 1.4.1 窗口简介 1. 创建窗口 创建窗口的方法有两个,一个是直接打开New对话框,双击标签页中的Window图标,即可创建一个新的窗口;二是从菜单中选择Inherit菜单通过继承已有窗口的格式、事件、函数、结构、变量和程序代码,生成新的窗口。 在PowerBuilder 10.0中提供了6种类型的窗口,分别是主窗口(Main)、弹出窗口(Popup)、子窗口(Child)、应答窗口(Response)、多文档界面的窗口(MDI Frame)、带MicroHelp的多文档界面的窗口。 (1) 主窗口(Main)。主窗口是不依赖于其他窗口的独立窗口,它既可以覆盖别的窗口,也可以被别的窗口覆盖。通常使用主窗口作为应用程序的基本界面。 (2) 弹出窗口(Popup)。弹出窗口通常是在其他窗口中被打开,这个其他窗口从而成为弹出窗口的父窗口。如在响应应用程序的Open事件时打开弹出窗口、则该窗口没有父窗口。它的工作方式同主窗口相同。 (3) 子窗口(Child)。子窗口通常在主窗口和弹出窗口中被打开。子窗口只有在它的父窗口里才能存在。可以在父窗口中移动子窗口,但是不能将它移出父窗口。 (4) 应答窗口(Response)。应答窗口用于从用户那里获得信息,它们通常在别的窗口中被打开。一般来说,应答窗口在它的父窗口里发生某些事件时被打开。当应答窗口被打开时,只有当前活动窗口可以被访问,查到用户对该应答窗口做出响应。 (5) 多文档界面的窗口(MDI Frame)。多文档窗口是一种框架窗口,可以同时打开多个文档窗口。 (6) 带MicroHelp的多文档界面的窗口。相比多文档窗口,该窗口有帮助系统。 创建窗口很简单。首先,打开New对话框,双击标签页中的Window图标,创建一个新的窗口,如图1-25所示。 图1-25 窗口画板 2. 窗口的设计 窗口的定义主要包括属性、事件和函数。窗口的属性决定了窗口的显示风格,定义子窗口的表现形式。事件指当某个事件触发时,与之相关的程序脚本被执行,窗口做出响应的动作。函数能触发窗口事件、处理事务、改变窗口或者提供有关此窗口的信息。下面,分别介绍窗口的主要属性和事件。 (1) 窗口的属性 创建窗口后,定义窗口的属性。选中窗口对象的同时即打开窗口属性对话框,在各个选项卡中赋值即可,如图1-26所示。 图1-26 窗口的属性对话框(General选项卡) 表1-1列出了窗口对象的常用属性。 表1-1 窗口对象的常用属性 属 性 功 能 Title 设置窗口的标题 Tag 设置窗口的标签 MenuName 连接到该窗口的菜单 Title Bar 设定窗口是否含有标题栏,只有在Border属性设置为True时,才可以对该属性进行设置 Control Menu 当窗口含有标题栏时,是否显示标题栏的控制菜单 Context Help 设置窗口上下文帮助文本 RightToLeft 设置字符按照从右到左的顺序显示 Resizeable 设置窗口大小是否任意放大或缩小 Border 设置窗口是否有边界 WindowType 从下拉列表框中选择窗口的类型 WindowState 设置窗口状态 MDIClient Color 当该窗口为MDI窗口和带MicroHelp的MDI窗口时,选择该窗口在运行时客户区域的颜色 Icon 设置窗口最小化时的图标 HscrollBar 设置横向滚动条 UnitsPerLine 设置用户单击纵向滚动条中的上箭头或下箭头时,向上或向下滚动的距离 ColumnsPerPage 当用户单击横向滚动条时窗口滚动的列数 ToolBarVisible 设置窗口中的工具条是否可见 ToolBarAlignment 设置窗口上的工具条的安放位置 ToolBarX 当选中Float属性时,输入工具条悬浮位置的横坐标值 X 设置窗口左上角的横坐标 Width 设置窗口的宽度 Pionter 设置窗口的鼠标形状 (2) 窗口事件 窗口的事件处理程序决定了窗口的动作。当窗口的事件被触发时,便执行为该事件编写的程序。表1-2列出了窗口上的事件及其触发时机。 表1-2 窗口事件及其触发时机 事 件 触 发 时 机 Activate 仅当窗口成为活动的窗口之前 Clicked 当用户单击窗口中的空白区域时 Close 当窗口关闭时 CloseQuery 当关闭窗口时,Power Builder触发CloseQuery事件并检测Message.ReturnValue的值。如果Message.ReturnValue的值为1,则窗口不能关闭 Deactivate 当窗口成为不活动的窗口时 DoubleClicked 当用户双击窗口的空白区域时 续表 事 件 触 发 时 机 DragDrop 当在窗口中拖动控件并释放鼠标时 DragEnter 当拖动控件进入窗口时 DragLeave 当拖动控件离开窗口时 DragWithin 当在窗口中拖动控件时 Hide 仅当窗口隐藏时 HotLinkAlarm 当DDE服务器应用送来新的数据并且客户DDE应用接收到时 Key 当用户按键盘并且插入点不在RichTextEdit或数据窗口的编辑控件上时 MouseDown 当用户在窗口的空白区域按下鼠标的左键时 MouseUp 当用户在窗口的空白区域按下鼠标的右键时 Open 当事件处理程序执行窗口的Open函数时,事件发生在窗口打开以后但在显示以前 Other 当一个非Power Builder事件的消息发生时 RbuttonDown 当用户在窗口的空白区域按下鼠标的右键时 RemoteExecl 当DDE客户应用发送一个命令时 RemoteHotLinkStart 当DDE客户应用想要建立一个热连接时 RemoteHotLinkStop 当DDE客户应用想要结束一个热连接时 RemoteRequest 当DDE客户应用要求数据时 RemoteSend 当DDE客户应用发送数据时 Resize 当用户事件处理程序打开或改变一个窗口的大小时 Show 当用户事件处理程序执行窗口的显示函数,仅在窗口显示之前时 SystemKey 当插入点不在编辑点且当用户按ALT及ALT加其他的键时 Timer 当定时函数执行后过了制定的时间后 ToolBarMoved 在MDI窗口中移动工具条时 1.4.2 菜单简介 PowerBuilder 10.0提供了两类菜单,分别是下拉式菜单和弹出式菜单,下拉式菜单在应用窗口打开时随之显示,弹出式菜单一般与鼠标右键操作相对应。下面分别介绍这两种菜单的创建过程。 1. 设计下拉式菜单 在New对话框的PB Object选项卡中双击Menu图标,出现如图1-27所示的窗口面板。下面将在这个画板中进行菜单的设计。 (1) 菜单的常用属性 菜单的属性对话框有两个选项卡,分别如图1-28和图1-29所示,各项意义如下: l Text。设定当前菜单项的名字。 l MicroHelp。给MDI窗口做的帮助,只有主窗口是MDI类型的窗口才有此帮助。 l Tag。给该菜单项写的一些说明,这个Tag对于菜单的运行没有任何影响,只是为了方便用户的检查。 图1-27 窗口画板 图1-28 菜单属性对话框的General选项卡 图1-29 菜单属性对话框的ToolBar选项卡 l Visible。设定该菜单项可见。如果不选择这个选项,在运行时菜单是不可见的。 l Enable。设定该菜单项功能可用。如果不选这个选项,该菜单灰色显示。 l Check。选择了该选项,在菜单显示时会在当前菜单的文本前边打上勾。 l Default。设定该菜单项为默认值。 l ShiftToRight。选中该选项,改变菜单项在菜单栏位置,从右到左排列。 l MergeOption。改变菜单方式,该选项只有当窗口存在OLE控件时才有效。 l MenuItemType。设定菜单项的类型。 l ShortCutKey。设定菜单项快速选择键。 l ToolbarItemText。给工具图标加提示信息,当鼠标移到该图标时,会弹出此信息。 l ToolbarItemName。选择当前菜单的在工具栏上图标。 l ToolbarItemDownName。选择工具栏图标在按下状态时的图标。 l ToolbarItemVisible。设定该图标是否可见。 l ToolbarItemDown。设定该图标是否可按下。 l ToolbarItemSpace。设定在图标前的空格数。 l ToolbarItemOrder。设定图标的排列序号,其中序号小的排在左侧。 l ToolbarItemBarIndex。设定图标的栏号,相同栏号的图标在同一个栏内。 (2) 下拉式菜单的创建 创建下拉式菜单的步骤如下: ① 选择New对话框的PB Object选项卡中的Menu选项。 ② 右击Untitled0图标,在弹出的快捷菜单中选择Insert Submenu Item命令,创建一个菜单项,在属性对话框中设置该菜单项的属性。 ③ 在建好的菜单项上右击,选择Insert Submenu Item命令,创建这个菜单项的子菜单。如果选择Insert Menu Item,表示在该菜单前面添加一个平级菜单项。如果选择Insert Menu Item At End,表示在该菜单后边添加一个平级的菜单项。 ④ 如果在General选项卡下的Text中输入一个减号“-”,则会在该菜单项中添加一个凹横线。在General选项卡的ShortCut Key一栏中选择快捷键字符,然后在下面的复选框中选取要用的辅助键,就会给相应的菜单项添加一个快捷键。 ⑤ 保存所建的菜单。 2. 创建弹出式菜单 ① 在菜单栏区域中创建新的菜单栏。 ② 在菜单栏的属性中设置其名称为m_Pop,Visible属性为False。 ③ 下拉菜单中输入全部的要弹出的菜单项。 ④ 编写好菜单后,编写事件代码,可以在对象的Button中编写弹出式菜单代码,如下所示: m_new.m_Pop.Visible=True m_new.m_Pop.Pop(PointerX(),PointerY()) m_new.m-Pop.Visible=False. 代码的含义在以后的章节中介绍。 1.5 实例:使用PowerBuilder创建第一个应用程序 PowerBuilder 10.0提供了Wizard(向导)功能,它可以更快捷方便地建立应用程序。利用应用程序向导可以快速地建立一个基本应用。利用模板程序向导方法自动产生一个比较复杂的应用,包括菜单和MDI窗口的应用。下面介绍一下利用Wizard快速创建具有窗口界面、与数据库相连接并且显示数据的应用程序。 1. 使用应用程序向导设计应用 步骤如下: (1) 在PowerBuilder菜单栏中选择File|New命令,弹出New对话框,选择Workspace选项卡中的Workspace图标,如图1-30所示。单击OK按钮,在弹出的对话框中,输入要创建的Workspace名,然后自动生出一个Workspace。 (2) 双击图1-31中的Template Application图标,出现如图1-32所示的对话框,该对话框将帮助用户建立一个应用程序。 图1-30 创建一个新的Workspace 图1-31 建立一个应用程序对话框之一 (3) 单击Next按钮,将出现下一个对话框,如图1-33所示,这个对话框将提示用户将建立的应用程序需要8个步骤。 图1-32 建立一个应用程序对话框之二 图1-33 建立一个应用程序对话框之三 (4) 按照屏幕的提示,所有的选项都采用默认选项,完成应用程序的建立,如图1-34所示。 2. 创建数据窗口 步骤如下: (1) 在PowerBuilder 10.0的菜单栏中选择File | New命令,打开New对话框,选择DataWindow选项卡,选中Grid图标,如图1-35所示。 (2) 单击OK按钮,进入Grid DataWindow的数据源选择对话框。选中Quick Select图标,如图1-36所示。单击Next按钮,进入数据库表选择对话框,如图1-37所示,选择所要选择显示的数据库表的字段。 (3) 进入数据显示窗口的背景、文字和栏颜色设置,如图1-38所示。 (4) 进入Grid DataWindow配置清单窗口,如图1-39所示。 图1-34 应用程序创建完成后的界面 图1-35 选择数据窗口类型 图1-36 选择数据源 图1-37 定义数据库表的字段 图1-38 背景、文字和栏颜色设置 图1-39 数据窗口的配置清单 完成数据窗口的创建,保存数据窗口文件为dw_test,如图1-40所示。 图1-40 显示数据窗口对象 3. 连接数据窗口 打开w_genapptest_sheet1应用窗口,在数据窗口上添加数据窗口控件,把数据窗口控件的DataObject属性设为dw_test,在Script窗口编写如下的脚本: connect; dw_1.settransobject(sqlca) dw_1.retrieve() 如图1-41所示。 在w_genapp_frame窗口的Script窗口中添加如下脚本: SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='DSN=SQL Anywhere 5.0 Sample;UID=;PWD='" 如图1-42所示。 图1-41 Script脚本窗口1 图1-42 Script脚本窗口2 4. 应用程序的运行 在Run菜单中选择Run Genapp命令或在工具栏中单击Run图标。运行结果如图1-43所示。 图1-43 应用程序的运行结果 1.6 习 题 安装和启动PowerBuilder 10.0 1.2.1 安装PowerBuilder 10.0 安装PowerBuilder 10.0系统软件,可以选择最小安装、典型安装和用户自定义安装三种方式,不同安装需要的硬盘空间不同。下面介绍的是典型安装。 PowerBuilder 10.0系统软件的安装过程与大多数Windows应用软件一样。不同的是需要安装PowerBuilder 10.0许多相关组件。下面先介绍PowerBuilder 10.0的这些组件,PowerBuilder 10.0中有以下组件: l PowerBuilder 10.0。 l InfoMaker:是快速原型开发工具。 l PowerDynamo:是动态页面服务器。 l Jaguar CTS:是事务处理服务器。 l Sybase Online Books。 l Adaptive Server Anywhere:是随PowerBuilder提供的一个完整的客户/服务器数据库管理系统。 本小节介绍在中文Windows环境下PowerBuilder 10.0的安装过程。具体步骤如下: (1) 将PowerBuilder 10.0的安装光盘放入光盘驱动器,打开光盘,双击Setup图标,弹出Welcome对话框,如图1-1所示。 (2) 单击图1-1中的Next按钮,弹出如图1-2所示的安装协议,用户应该认真阅读该协议。 图1-1 Welcome对话框 图1-2 安装协议窗口 (3) 单击图1-2中的Yes按钮,弹出如图1-3所示的用户名称和公司名称输入界面。 (4) 单击Next按钮,进入如图1-4所示的安装目录窗口,如果要改变安装目录,则单击Browse按钮选择自己想要的安装目录。 图1-3 用户公司名称输入界面 图1-4 选择安装目录 (5) 单击Next按钮,进入如图1-5所示的共享文件安装目录窗口,如果要改变安装目录,则单击Browse按钮选择自己想要的安装目录。 (6) 在组件选择窗口中,用户可以根据需要选择组件,这里只选择了PowerBuilder 10.0系统软件,如图1-6所示。 图1-5 选择共享文件安装目录 图1-6 PowerBuilder 10.0部件选择窗口 (7) 在类型选择窗口,选取Typical选项将按典型方式安装,如图1-7所示。 (8) 下面几步选择默认设置,然后进入PowerBuilder软件的安装程序窗口,如图1-8所示。 (9) 安装完成后,出现InstallShield Wizard Complete对话框,如图1-9所示。 (10) 安装结束后,重新启动计算机,完成PowerBuilder 10.0的安装。 提示: 如果在如图1-6所示的组件选择窗口中选择其他组件,则安装向导将会继续安装其他组件。其过程和安装PowerBuilder 10.0类似,这里不再一一赘述。 图1-7 选择安装类型 图1-8 安装程序窗口 图1-9 InstallShield Wizard Complete对话框 1.2.2 启动PowerBuilder 10.0 安装完毕后,就可以启动PowerBuilder 10.0了,启动的步骤如下: (1) 单击任务栏的“开始”菜单命令。 (2) 选择“程序”中的PowerBuilder 10.0程序组,然后选择PowerBuilder 10.0菜单命令,启动PowerBuilder 10.0应用程序。也可以在资源管理器的PowerBuilder 10.0安装目录下运行pb10.exe或建立PowerBuilder 10.0的快捷方式,然后双击快捷方式启动 PowerBuilder 10.0应用程序。 (3) 第一次启动PowerBuilder时,会出现“Welcome to PowerBuilder”对话框,如图1-10所示,共有5个选项,两个复选框,用户可以根据需要选择不同的选项。如果启动PowerBuilder时不想显示“Welcome to PowerBuilder”对话框,选中“don’t show this dialog again”复选框,那么下次启动PowerBuilder时,就不会出现这个对话框。 图1-10 Welcome to PowerBuilder对话框 1.3 PowerBuilder 10.0开发环境 PowerBuilder 10.0的开发环境主要分为菜单系统、PowerBar工具栏、工作区以及状态栏4个部分,如图1-11所示。 (1) 菜单系统 菜单系统位于PowerBuilder 10.0开发环境的顶部,包含5个菜单:File菜单、Run菜单、Tools菜单、Window菜单和Help菜单。其中File菜单用于处理与文件相关的操作;在Run菜单中,可以对应用程序进行编译和调试;在Tools菜单中,可以设置PowerBuilder 10.0的各种选项以及使用多种工具;在Window菜单中,可以控制窗口在屏幕上的位置;Help菜单提供了全面的帮助信息。 图1-11 PowerBuilder 10.0的开发环境 (2) PowerBar工具栏 PowerBar工具栏位于PowerBuilder 10.0菜单系统的下面,其中每一个工具按钮都对应一个特定的功能。 (3) 工作区 PowerBuilder 10.0开发环境窗口的中间部分是空白的,这是PowerBuilder 10.0的工作区,PowerBuilder 10.0的各种画板执行的操作都在其中完成。 (4) 状态栏 状态栏位于PowerBuilder 10.0开发环境窗口的底部,为用户提供重要的提示。例如将鼠标停留在某个菜单选项上时,状态栏将显示关于该按钮或菜单选项的详细的文本说明。 1.3.1 菜单系统 菜单是应用程序的主要工具,用户通过菜单执行操作命令,以便完成指定任务(如打开文件和保存文件等)。 除了菜单系统包含的五个子菜单,如果打开不同的画板,则出现不同的菜单。单击某个菜单标签,将显示下拉菜单中的各个命令。单击某个命令,即完成相应操作。另外,还可以使用快捷键执行某个命令。下面将介绍一些菜单命令。 1. Fil菜单 File菜单如图1-12所示,其中包含操作文件的命令。 (1) New命令。用于创建一个新的PowerBuilder 10.0对象,包括应用程序、用户对象、构件对象以及窗口、数据窗口等,如图1-13所示。 图1-12 File菜单 图1-13 New对话框 (2) Inherit命令。用于通过继承一个已存在的对象来创建一个新的PowerBuilder 10.0对象,该对象将拥有原对象的属性。通过该菜单命令,可以选择所需继承对象的类型:窗口对象、用户对象、菜单对象。 (3) Open命令。用于打开一个应用对象。 (4) Open Workspace命令。用于打开一个工作空间。 (5) Recent Workspace子菜单。从Recent Workspace子菜单可以知道当前有哪些工作空间,并且可以单击其中的命令来打开哪个工作空间。 (6) Recent Connections子菜单。从Recent Connections子菜单可以知道当前有哪些数据库连接,并且可以单击其中的命令来建立一个数据库连接。 2. Run菜单 Run菜单如图1-14所示,可以对应用程序进行调试和编译。 (1) Incremental Build Workspace命令。对工作空间中修改的对象进行编译。 (2) Full Build Workspace命令。对工作空间全部对象进行编译。 (3) Debug命令。单击此按钮将进入应用程序调试窗口。 (4) Run命令。单击此按钮将开始运行应用程序。 3. Tools菜单 在Tools菜单中,用户可以设置系统选项。此外,Tools菜单还提供了多个工具,如图1-15所示。 图1-14 Run菜单 图1-15 Tools菜单 图1-16 Toolbars对话框(1) Toolbars命令。用于设置工具栏。选择该命令后,将会打开Toolbars对话框,如图1-16所示。在此对话框中可以设置工具栏的位置和字体等,还可以自定义工具栏。 (2) Keyboard Shortcuts命令。用于编辑键盘快捷键。选择该命令后,将打开Keyboard Shortcuts对话框,如图1-17所示。在此对话框中,可以设置和编辑PowerBuilder 10.0菜单系统中每个菜单命令的快捷键。 (3) System Options命令。用于设置或编辑系统选项。选择该命令后,可打开System Options对话框,如图1-18所示。在此对话框中,可以设置PowerBuilder 10.0的一些系统选项,这些选项将在下一次打开PowerBuilder 10.0时生效,如初始化路径、字体属性、日志文件等。 4. Window菜单 Window菜单如图1-19所示,提供了窗口在屏幕上位置的控制。 (1) System Tree命令、Output命令和Clip命令。用来打开或关闭各自的窗口。 (2) Close命令。关闭画板上的所有窗口。 (3) 其他命令。用来控制窗口的显示方式。 图1-17 Keyboard Shortcuts对话框 图1-18 System Options对话框 图1-19 Window菜单 5. Help菜单 图1-20 Help菜单Help菜单如图1-20所示,提供了帮助信息。 (1) Contents命令。用来打开帮助目录窗口。 (2) Welcome to PowerBuilder 10.0命令。用来打开帮助信息窗口。 (3) About PowerBuilder命令。用于说明Sybase公司PowerBuilder软件发布日期和版权等内容。 1.3.2 工作区 用来设计数据库、用户窗口、数据窗口以及各种组件等的区域,如图1-11灰色部分所示。 1.3.3 工具栏 PowerBuilder 10.0工具栏中的按钮对应常用的操作命令,如图1-21所示。用户可以根据需要增加自己的工具栏。 图1-21 PowerBuilder 10.0工具栏 各主要按钮作用如下: l New:启动Wizards(向导)工具创建新的应用对象、工程文件。 l Inherit:用继承的方式创建一个新的对象。 l Open:打开一个已经存在的对象。 l Run/Preview Object:运行或预览一个对象。 l System Tree:给出Workspace(工作空间)的信息。 l Output:弹出Output(输出)窗口,在窗口给出不同操作的信息。 l Next Error/Message:调试程序时显示下一条错误信息。 l Previous Error/Message:调试程序时显示上一条错误信息。。 l To-Do List:显示To-Do List列表,跟踪开发任务,PowerBuilder 10.0能自动增加列表和项目,快速进入想要找的画板和对象。 l Browser:打开浏览对话框。 l Clip Window:在此窗口中可以把经常使用的代码保存到适当的文件夹中。 l Library:单击此按钮将打开应用程序的库,在此界面中可以管理应用程序的各种对象。 l DB Profile:新建或打开一个数据库描述。 l EAServer Profile:打开一个对话框,可以定义一个特定数据库的连接参数。 l Database:单击此按钮将新建或打开一个数据库。 l Edit:单击此按钮将创建和打开一个文件并编辑文件。 l Incremental Build Workspace:参看“Run菜单”。 l Full Build Workspace:参看“Run菜单”。 l Deploy Workspace:部署Workspace(工作空间)。 l Skip Build/Deploy/Search:用于跳过应用的编译、配置和搜索。 l Stop Build/Deploy/Search:用于中止应用的编译、配置和搜索。 l Run:运行对象。 l Debug:调试对象。 l Select and Debug:选择对象进行调试。 l Select and Run:选择对象进行运行。 l Exit:单击此按钮将退出PowerBuilder 10.0系统。 1.3.4 画板 画板是根据英文Painter翻译过来的,它的实际含义是工具或工具箱,或者可以把它看作是PowerBuilder 10.0大环境下的一个小环境。PowerBuilder 10.0使用画板来建立应用程序的各个组件,PowerBuilder 10.0为每一类对象提供了一个画板。例如用户可在Window画板中建立窗口,为窗口定义属性和添加控件等,如图1-22所示。 图1-22 Window画板窗口 1.3.5 帮助系统 在实际开发PowerBuilder 10.0应用程序的过程中,可以通过PowerBuilder 10.0的联机文档系统得到帮助。 在PowerBuilder 10.0集成环境中选择Help菜单下的Contents命令,即可进入PowerBuilder Help窗口,如图1-23所示,窗口包括了两个页面,“目录”页面和“索引”页面。 定位PowerBuilder 10.0帮助主题有以下几种方式: 通过目录定位:选择“目录”页面,双击某个节点,就可以展开该节点,然后单击要查看的内容,如图1-23所示。 通过“索引”查找信息:在“索引”页面中输入或选择一个与所需查找的信息有关的关键字,然后单击“显示”按钮,会弹出一个查获的主题列表窗口,从中选择所需的主题,然后单击“显示”按钮,可以得到相关内容的文档,如图1-24所示。 图1-23 PowerBuilder 10.0帮助目录窗口 图1-24 PowerBuilder 10.0帮助索引窗口 1.4 窗口和菜单简介 窗口和菜单是用户和PowerBuilder 10.0应用程序联系的主要接口。可以通过菜单接收用户要求,通过窗口向用户显示信息和从用户那里得到信息。PowerBuilder 10.0给出了强大的菜单和窗口功能,可以通过简单的操作得到美观、实用的用户界面。下面将介绍窗口和菜单的设计方法。 1.4.1 窗口简介 1. 创建窗口 创建窗口的方法有两个,一个是直接打开New对话框,双击标签页中的Window图标,即可创建一个新的窗口;二是从菜单中选择Inherit菜单通过继承已有窗口的格式、事件、函数、结构、变量和程序代码,生成新的窗口。 在PowerBuilder 10.0中提供了6种类型的窗口,分别是主窗口(Main)、弹出窗口(Popup)、子窗口(Child)、应答窗口(Response)、多文档界面的窗口(MDI Frame)、带MicroHelp的多文档界面的窗口。 (1) 主窗口(Main)。主窗口是不依赖于其他窗口的独立窗口,它既可以覆盖别的窗口,也可以被别的窗口覆盖。通常使用主窗口作为应用程序的基本界面。 (2) 弹出窗口(Popup)。弹出窗口通常是在其他窗口中被打开,这个其他窗口从而成为弹出窗口的父窗口。如在响应应用程序的Open事件时打开弹出窗口、则该窗口没有父窗口。它的工作方式同主窗口相同。 (3) 子窗口(Child)。子窗口通常在主窗口和弹出窗口中被打开。子窗口只有在它的父窗口里才能存在。可以在父窗口中移动子窗口,但是不能将它移出父窗口。 (4) 应答窗口(Response)。应答窗口用于从用户那里获得信息,它们通常在别的窗口中被打开。一般来说,应答窗口在它的父窗口里发生某些事件时被打开。当应答窗口被打开时,只有当前活动窗口可以被访问,查到用户对该应答窗口做出响应。 (5) 多文档界面的窗口(MDI Frame)。多文档窗口是一种框架窗口,可以同时打开多个文档窗口。 (6) 带MicroHelp的多文档界面的窗口。相比多文档窗口,该窗口有帮助系统。 创建窗口很简单。首先,打开New对话框,双击标签页中的Window图标,创建一个新的窗口,如图1-25所示。 图1-25 窗口画板 2. 窗口的设计 窗口的定义主要包括属性、事件和函数。窗口的属性决定了窗口的显示风格,定义子窗口的表现形式。事件指当某个事件触发时,与之相关的程序脚本被执行,窗口做出响应的动作。函数能触发窗口事件、处理事务、改变窗口或者提供有关此窗口的信息。下面,分别介绍窗口的主要属性和事件。 (1) 窗口的属性 创建窗口后,定义窗口的属性。选中窗口对象的同时即打开窗口属性对话框,在各个选项卡中赋值即可,如图1-26所示。 图1-26 窗口的属性对话框(General选项卡) 表1-1列出了窗口对象的常用属性。 表1-1 窗口对象的常用属性 属 性 功 能 Title 设置窗口的标题 Tag 设置窗口的标签 MenuName 连接到该窗口的菜单 Title Bar 设定窗口是否含有标题栏,只有在Border属性设置为True时,才可以对该属性进行设置 Control Menu 当窗口含有标题栏时,是否显示标题栏的控制菜单 Context Help 设置窗口上下文帮助文本 RightToLeft 设置字符按照从右到左的顺序显示 Resizeable 设置窗口大小是否任意放大或缩小 Border 设置窗口是否有边界 WindowType 从下拉列表框中选择窗口的类型 WindowState 设置窗口状态 MDIClient Color 当该窗口为MDI窗口和带MicroHelp的MDI窗口时,选择该窗口在运行时客户区域的颜色 Icon 设置窗口最小化时的图标 HscrollBar 设置横向滚动条 UnitsPerLine 设置用户单击纵向滚动条中的上箭头或下箭头时,向上或向下滚动的距离 ColumnsPerPage 当用户单击横向滚动条时窗口滚动的列数 ToolBarVisible 设置窗口中的工具条是否可见 ToolBarAlignment 设置窗口上的工具条的安放位置 ToolBarX 当选中Float属性时,输入工具条悬浮位置的横坐标值 X 设置窗口左上角的横坐标 Width 设置窗口的宽度 Pionter 设置窗口的鼠标形状 (2) 窗口事件 窗口的事件处理程序决定了窗口的动作。当窗口的事件被触发时,便执行为该事件编写的程序。表1-2列出了窗口上的事件及其触发时机。 表1-2 窗口事件及其触发时机 事 件 触 发 时 机 Activate 仅当窗口成为活动的窗口之前 Clicked 当用户单击窗口中的空白区域时 Close 当窗口关闭时 CloseQuery 当关闭窗口时,Power Builder触发CloseQuery事件并检测Message.ReturnValue的值。如果Message.ReturnValue的值为1,则窗口不能关闭 Deactivate 当窗口成为不活动的窗口时 DoubleClicked 当用户双击窗口的空白区域时 续表 事 件 触 发 时 机 DragDrop 当在窗口中拖动控件并释放鼠标时 DragEnter 当拖动控件进入窗口时 DragLeave 当拖动控件离开窗口时 DragWithin 当在窗口中拖动控件时 Hide 仅当窗口隐藏时 HotLinkAlarm 当DDE服务器应用送来新的数据并且客户DDE应用接收到时 Key 当用户按键盘并且插入点不在RichTextEdit或数据窗口的编辑控件上时 MouseDown 当用户在窗口的空白区域按下鼠标的左键时 MouseUp 当用户在窗口的空白区域按下鼠标的右键时 Open 当事件处理程序执行窗口的Open函数时,事件发生在窗口打开以后但在显示以前 Other 当一个非Power Builder事件的消息发生时 RbuttonDown 当用户在窗口的空白区域按下鼠标的右键时 RemoteExecl 当DDE客户应用发送一个命令时 RemoteHotLinkStart 当DDE客户应用想要建立一个热连接时 RemoteHotLinkStop 当DDE客户应用想要结束一个热连接时 RemoteRequest 当DDE客户应用要求数据时 RemoteSend 当DDE客户应用发送数据时 Resize 当用户事件处理程序打开或改变一个窗口的大小时 Show 当用户事件处理程序执行窗口的显示函数,仅在窗口显示之前时 SystemKey 当插入点不在编辑点且当用户按ALT及ALT加其他的键时 Timer 当定时函数执行后过了制定的时间后 ToolBarMoved 在MDI窗口中移动工具条时 1.4.2 菜单简介 PowerBuilder 10.0提供了两类菜单,分别是下拉式菜单和弹出式菜单,下拉式菜单在应用窗口打开时随之显示,弹出式菜单一般与鼠标右键操作相对应。下面分别介绍这两种菜单的创建过程。 1. 设计下拉式菜单 在New对话框的PB Object选项卡中双击Menu图标,出现如图1-27所示的窗口面板。下面将在这个画板中进行菜单的设计。 (1) 菜单的常用属性 菜单的属性对话框有两个选项卡,分别如图1-28和图1-29所示,各项意义如下: l Text。设定当前菜单项的名字。 l MicroHelp。给MDI窗口做的帮助,只有主窗口是MDI类型的窗口才有此帮助。 l Tag。给该菜单项写的一些说明,这个Tag对于菜单的运行没有任何影响,只是为了方便用户的检查。 图1-27 窗口画板 图1-28 菜单属性对话框的General选项卡 图1-29 菜单属性对话框的ToolBar选项卡 l Visible。设定该菜单项可见。如果不选择这个选项,在运行时菜单是不可见的。 l Enable。设定该菜单项功能可用。如果不选这个选项,该菜单灰色显示。 l Check。选择了该选项,在菜单显示时会在当前菜单的文本前边打上勾。 l Default。设定该菜单项为默认值。 l ShiftToRight。选中该选项,改变菜单项在菜单栏位置,从右到左排列。 l MergeOption。改变菜单方式,该选项只有当窗口存在OLE控件时才有效。 l MenuItemType。设定菜单项的类型。 l ShortCutKey。设定菜单项快速选择键。 l ToolbarItemText。给工具图标加提示信息,当鼠标移到该图标时,会弹出此信息。 l ToolbarItemName。选择当前菜单的在工具栏上图标。 l ToolbarItemDownName。选择工具栏图标在按下状态时的图标。 l ToolbarItemVisible。设定该图标是否可见。 l ToolbarItemDown。设定该图标是否可按下。 l ToolbarItemSpace。设定在图标前的空格数。 l ToolbarItemOrder。设定图标的排列序号,其中序号小的排在左侧。 l ToolbarItemBarIndex。设定图标的栏号,相同栏号的图标在同一个栏内。 (2) 下拉式菜单的创建 创建下拉式菜单的步骤如下: ① 选择New对话框的PB Object选项卡中的Menu选项。 ② 右击Untitled0图标,在弹出的快捷菜单中选择Insert Submenu Item命令,创建一个菜单项,在属性对话框中设置该菜单项的属性。 ③ 在建好的菜单项上右击,选择Insert Submenu Item命令,创建这个菜单项的子菜单。如果选择Insert Menu Item,表示在该菜单前面添加一个平级菜单项。如果选择Insert Menu Item At End,表示在该菜单后边添加一个平级的菜单项。 ④ 如果在General选项卡下的Text中输入一个减号“-”,则会在该菜单项中添加一个凹横线。在General选项卡的ShortCut Key一栏中选择快捷键字符,然后在下面的复选框中选取要用的辅助键,就会给相应的菜单项添加一个快捷键。 ⑤ 保存所建的菜单。 2. 创建弹出式菜单 ① 在菜单栏区域中创建新的菜单栏。 ② 在菜单栏的属性中设置其名称为m_Pop,Visible属性为False。 ③ 下拉菜单中输入全部的要弹出的菜单项。 ④ 编写好菜单后,编写事件代码,可以在对象的Button中编写弹出式菜单代码,如下所示: m_new.m_Pop.Visible=True m_new.m_Pop.Pop(PointerX(),PointerY()) m_new.m-Pop.Visible=False. 代码的含义在以后的章节中介绍。 1.5 实例:使用PowerBuilder创建第一个应用程序 PowerBuilder 10.0提供了Wizard(向导)功能,它可以更快捷方便地建立应用程序。利用应用程序向导可以快速地建立一个基本应用。利用模板程序向导方法自动产生一个比较复杂的应用,包括菜单和MDI窗口的应用。下面介绍一下利用Wizard快速创建具有窗口界面、与数据库相连接并且显示数据的应用程序。 1. 使用应用程序向导设计应用 步骤如下: (1) 在PowerBuilder菜单栏中选择File|New命令,弹出New对话框,选择Workspace选项卡中的Workspace图标,如图1-30所示。单击OK按钮,在弹出的对话框中,输入要创建的Workspace名,然后自动生出一个Workspace。 (2) 双击图1-31中的Template Application图标,出现如图1-32所示的对话框,该对话框将帮助用户建立一个应用程序。 图1-30 创建一个新的Workspace 图1-31 建立一个应用程序对话框之一 (3) 单击Next按钮,将出现下一个对话框,如图1-33所示,这个对话框将提示用户将建立的应用程序需要8个步骤。 图1-32 建立一个应用程序对话框之二 图1-33 建立一个应用程序对话框之三 (4) 按照屏幕的提示,所有的选项都采用默认选项,完成应用程序的建立,如图1-34所示。 2. 创建数据窗口 步骤如下: (1) 在PowerBuilder 10.0的菜单栏中选择File | New命令,打开New对话框,选择DataWindow选项卡,选中Grid图标,如图1-35所示。 (2) 单击OK按钮,进入Grid DataWindow的数据源选择对话框。选中Quick Select图标,如图1-36所示。单击Next按钮,进入数据库表选择对话框,如图1-37所示,选择所要选择显示的数据库表的字段。 (3) 进入数据显示窗口的背景、文字和栏颜色设置,如图1-38所示。 (4) 进入Grid DataWindow配置清单窗口,如图1-39所示。 图1-34 应用程序创建完成后的界面 图1-35 选择数据窗口类型 图1-36 选择数据源 图1-37 定义数据库表的字段 图1-38 背景、文字和栏颜色设置 图1-39 数据窗口的配置清单 完成数据窗口的创建,保存数据窗口文件为dw_test,如图1-40所示。 图1-40 显示数据窗口对象 3. 连接数据窗口 打开w_genapptest_sheet1应用窗口,在数据窗口上添加数据窗口控件,把数据窗口控件的DataObject属性设为dw_test,在Script窗口编写如下的脚本: connect; dw_1.settransobject(sqlca) dw_1.retrieve() 如图1-41所示。 在w_genapp_frame窗口的Script窗口中添加如下脚本: SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "ConnectString='DSN=SQL Anywhere 5.0 Sample;UID=;PWD='" 如图1-42所示。 图1-41 Script脚本窗口1 图1-42 Script脚本窗口2 4. 应用程序的运行 在Run菜单中选择Run Genapp命令或在工具栏中单击Run图标。运行结果如图1-43所示。 图1-43 应用程序的运行结果 评论这张 转发至微博 转发至微博 阅读(1100)| 评论(0) | 分享到: 喜欢 推荐 0人 | 转载 历史上的今天 最近读者 热度 评论 this.p={ m:2, b:2, id:'fks_082069081086086068085085094095087082088065081095082070', blogTitle:'PowerBuilder', blogAbstract:'安装和启动PowerBuilder 10.0 1.2.1 安装PowerBuilder 10.0 安装PowerBuilder 10.0系统软件,可以选择最小安装、典型安装和用户自定义安装三种方式,不同安装需要的硬盘空间不同。下面介绍的是典型安装。 PowerBuilder 10.0', blogTag:'', blogUrl:'blog/static/34925945200971582343871', isPublished:1, istop:false, type:0, modifyTime:1317055516583, publishTime:1250295823871, permalink:'blog/static/34925945200971582343871', commentCount:0, mainCommentCount:0, recommendCount:0, bsrk:-100, publisherId:0, recomBlogHome:false, currentRecomBlog:false, attachmentsFileIds:[], vote:{}, groupInfo:{}, friendstatus:'none', followstatus:'unFollow', pubSucc:'', visitorProvince:'', visitorCity:'', visitorNewUser:false, postAddInfo:{}, mset:'000', mcon:'', srk:-100, remindgoodnightblog:false, isBlackVisitor:false, isShowYodaoAd:false, hostIntro:'', hmcon:'0', selfRecomBlogCount:'0', lofter_single:'' } {list a as x} {if !!x} {if x.visitorName==visitor.userName} {else} {/if} {if x.moveFrom=='wap'} {elseif x.moveFrom=='iphone'} {elseif x.moveFrom=='android'} {elseif x.moveFrom=='mobile'} {/if} ${fn(x.visitorNickname,8)|escape} {/if} {/list} {if !!a} ${fn(a.nickname,8)|escape} ${a.selfIntro|escape}{if great260}${suplement}{/if} {/if} {list a as x} {if !!x} ${fn(x.title,26)|escape} {/if} {/list} 推荐过这篇日志的人: {list a as x} {if !!x} ${fn(x.recommenderNickname,6)|escape} {/if} {/list} {if !!b&&b.length>0} 他们还推荐了: {list b as y} {if !!y} ·${y.recommendBlogTitle|escape} {/if} {/list} {/if} 转载记录: {list d as x} · ${x.referBlogTitle|escape} ${x.referUserName|escape} {/list} {list a as x} {if !!x} ${x.title|default:""|escape} {/if} {/list} {list a as x} {if !!x} ${x.title|default:""|escape} {/if} {/list} {list a as x} {if !!x} ${x.blogTile|default:""|escape} {/if} {/list} {list a as x} {if x_index>4}{break}{/if} {if !!x} ${fn1(x.title,60)|escape}${fn2(x.publishTime,'yyyy-MM-dd HH:mm:ss')} {/if} {/list} {list a as x} {if !!x} ${fn(x.title,26)|escape} {/if} {/list} {if !!(blogDetail.preBlogPermalink)} ${blogDetail.preBlogTitle|escape} {/if} {if !!(blogDetail.nextBlogPermalink)} ${blogDetail.nextBlogTitle|escape} {/if} {list a as x} {if !!x} {if x.publisherUsername==visitor.userName} {else} {/if} ${fn(x.publisherNickname,8)|escape} {/if} {/list} 被推荐日志 最新日志 该作者的其他文章 博主推荐 随机阅读 首页推荐 更多>> {list a as x} {if !!x} ${x.nickName|escape} 投票给 {var first_option = true;} {list x.voteDetailList as voteToOption} {if voteToOption==1} {if first_option==false},{/if} “${b[voteToOption_index]}” {/if} {/list} {if (x.role!="-1") },“我是${c[x.role]}” {/if} ${fn1(x.voteTime)} {if x.userName==''}{/if} {/if} {/list} 页脚 公司简介 - 联系方法 - 招聘信息 - 客户服务 - 隐私政策 - 博客风格 - 手机博客 - VIP博客 - 订阅此博客 网易公司版权所有 ©1997-2014 帮助 ${u} {list wl as x} ${x.g} {list x.l as y} ${y.n} {/list} {/list} {if defined('wl')} {list wl as x}${x.n}{/list} {/if}