写在前面
这是PB案例学习笔记系列文章的第44篇,该系列文章适合具有一定PB基础的读者。
通过一个个由浅入深的编程实战案例学习,提高编程技巧,以保证小伙伴们能应付公司的各种开发需求。
文章中设计到的源码,小凡都上传到了gitee代码仓库https://gitee.com/xiezhr/pb-project-example.git

需要源代码的小伙伴们可以自行下载查看,后续文章涉及到的案例代码也都会提交到这个仓库【pb-project-example】
如果对小伙伴有所帮助,希望能给一个小星星⭐支持一下小凡。
一、小目标
通过本案例我们将在数据窗口中使用下拉子数据窗口,实现数据项选择。
用户通过下拉框选择数据,而不用自己输入,这样可以避免一些不必要的错误数据产生。
最终效果如下

二、创作思路
在数据窗口中,通过将字段设置成下拉子数据窗Drop Down Data Window。然后通过数据窗口的方式赋值,
完成我们需要的效果。
三、创建程序基本框架
有了基本思路之后,我们就动起来开始写程序了
① 新建examplework 工作区
② 新建exampleapp应用
③ 新建w_main窗口,并将其Title设置为"使用下拉子数据窗口"
由于文章篇幅的原因,以上步骤就不再赘述,如果忘记的小伙伴可以翻一翻该系列第一篇文章复习一下
四、界面布局
① 建立Grid风格的数据窗口对象
连接scott数据库,选择emp表,并选择我们需要的字段最总将新建的数据窗口对象保存为d_emp.
② 建立Grid风格的外部数据窗口对象d_job
- 单击菜单栏上的
File-New命令 - 在弹出的对话框中选择
Grid

- 在弹出的
Choose Data Source对话框中hua 中选择External

- 在弹出的
Define Result Set对话框中填写字段名称,选择类型

- 将新建的数据窗口对象保存为
d_job

- 向数据窗口
d_job中添加数据


③ 选择dept表,建立d_dept数据窗口

④ 建立窗口控件
向窗口中添加一个DataWindow控件和6个CommandButton控件,依次命名为dw_1、cb_1~cb_6
⑤ 设置窗口控件 dw_1控件的DataObject设置为d_empcb_1~cb_6控件的Text依次设置为“上一条”、“下一条”、“添加”、“删除”、“保存”、“退出”。

五、设置d_emp数据窗口
① 设置下拉子数据窗
-在d_emp数据窗口中选中职位job栏目,在其选项卡Edit页面上,将Style Type项设置成DropDownDW,并勾选
Always Show Arrow复选框

- 单击该页面上的
DataWindow,然后选中之前步骤创建好的d_job。并将Display Column和Data Column设置为job

② 通过同样的方式这是deptno 栏

六、编写代码
① 在w_main窗口的Open中添加如下代码
dw_1.settransobject(sqlca)
dw_1.retrieve()
② 在w_main窗口的cb_1控件的Clicked事件中添加如下代码
dw_1.scrollpriorrow()
③ 在w_main窗口的cb_2控件的Clicked事件中添加如下代码
dw_1.scrollnextrow()
④ 在w_main窗口的cb_3控件的Clicked事件中添加如下代码
int li_row
li_row = dw_1.insertrow(0)
dw_1.scrolltorow(li_row)
dw_1.setfocus()
⑤ 在w_main窗口的cb_4控件的Clicked事件中添加如下代码
int li_row
li_row = dw_1.getrow()
dw_1.deleterow(li_row)
dw_1.update()
commit;
dw_1.retrieve()
⑥ 在w_main窗口的cb_5控件的Clicked事件中添加如下代码
dw_1.update()
commit;
dw_1.retrieve()
⑦在w_main窗口的cb_6控件的Clicked事件中添加如下代码
close(w_main)
⑧ 在开发界面左边的System Tree窗口中双击exampleapp应用对象,并在其Open事件中添加如下代码
SQLCA.DBMS = "O90 Oracle9i (9.0.1)"
SQLCA.LogPass = "tiger"
SQLCA.ServerName = "127.0.0.1:1521/orcl"
SQLCA.LogId = "scott"
SQLCA.AutoCommit = False
SQLCA.DBParm = "PBCatalogOwner='scott'"
connect;
open(w_main)
⑨ 在开发界面左边的System Tree窗口中双击exampleapp应用对象,并在其close事件中添加如下代码
disconnect;
七、运行程序
运行程序,看看有没有达到效果

803

被折叠的 条评论
为什么被折叠?



