实验三窗口与常用控件编程.docx
- 文档编号:4179819
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:12
- 大小:98.60KB
实验三窗口与常用控件编程.docx
《实验三窗口与常用控件编程.docx》由会员分享,可在线阅读,更多相关《实验三窗口与常用控件编程.docx(12页珍藏版)》请在冰豆网上搜索。
实验三窗口与常用控件编程
实验三窗口与常用控件编程
一、目的和要求
1.掌握主窗口(main窗口)的创建和窗口属性的调整方法
2.加深对窗口类型、各种类型窗口的特点以及应用范围的认识
3.掌握静态文本控件(StaticText)、单行编辑器控件(SingleLineEdit)、编辑掩码控件(EditMask)、单选控件(RadioButton)、成组框(GroupBox)、命令按钮(CommandButton)的使用方法。
4.掌握数据库的动态连接方法
二、实验准备
1.复习有关窗口、控件的知识
2.启动PowerBuilder9.0
3.建立目录(如:
D:
\PB),按照实验一中描述的方法,建立工作空间(Student
.pbw),目标文件(Student.pbt),应用文件(Student.pbl)。
4.按照实验二的方法,用ODBC连接数据库(student.pb)
三、实验内容
1.数据准备
向数据库中插入部门和专业信息
(1)按照实验2的方法,通过ODBC连接已经建好的数据库Student.db。
(2)单击工具栏的数据库(database)图标
,进入数据库画板。
(3)选择菜单“View”下的子菜单“InteractiveSQL”,进入“ISQLSession”窗口,输入SQL语句:
//插入部门数据
Insertintodepartmentvalues(‘0001’,’计算机系’,’计算机软硬件’);
Insertintodepartmentvalues(‘0002’,’通信工程系’,’通信工程’);
Insertintodepartmentvalues(‘0003’,’信息科学系’,’信号处理’);
Insertintodepartmentvalues(‘0004’,’数学系’,’应用数学’);
Insertintodepartmentvalues(‘0005’,’指挥管理系’,’’);
Insertintodepartmentvalues(‘0008’,’地方生系’,’’);
Insertintodepartmentvalues(‘0009’,’联办生系’,’’);
//插入专业数据
Insertintomajorvalues(‘000101’,’计算机硬件’,’0001’,’’);
Insertintomajorvalues(‘000102’,’计算机应用’,’0001’,’’);
Insertintomajorvalues(‘000201’,’通信工程’,’0002’,’’);
Insertintomajorvalues(‘000202’,’自动化’,’0002’,’’);
Insertintomajorvalues(‘000203’,’侦测工程’,’0002’,’’);
Insertintomajorvalues(‘000301’,’信号处理’,’0003’,’’);
Insertintomajorvalues(‘000401’,’应用数学’,’0004’,’’);
输入SQL语句后,单击图标
,执行SQL语句。
2.创建窗口对象
创建新窗口对象的步骤如下。
(1)单击工具栏上的New图标
,弹出”New”对话框,选择“Pbobject”,
如下图。
(2)选中“Window”图标,单击“OK”,出现窗口画板。
(3)单击“File”菜单下“SaveAs”,出现“SaveWindow”窗口,如下图
(4)输入窗口名称W_student,单击“OK”保存。
注意:
窗口名称最好以W_开头,以示与其他对象的区别。
,在上面窗口的注释栏(Comments)可以填写针对该窗口的注释。
(5)在窗口画板右边的“Properties”中选择“General”,在“Title”属性中输入窗口标题,如“学生信息录入”,在“WindowsType”属性中选择“main!
”。
3.向窗口中填加控件
向窗口中添加下列控件:
(1)静态文本(statictext)
控件名称
文本信息(text)
用途
St_1
学生录入
用于信息录入的提示
St_2
学号
St_3
姓名
St_4
民族
St_5
出生日期
St_6
专业
St_7
入学时间
St_8
籍贯
St_9
地址
(2)单行编辑器(SingleLineEdit)
控件名称
用途
Sle_id
输入学号
Sle_name
输入姓名
Sle_native
输入籍贯
Sle_address
输入地址
(3)编辑掩码控件(editmask)
控件名称
用途
mask属性
maskdatatype
mask
em_birthday
输入出生日期
Datamask!
Yyyy/mm/dd
em_grade
输入入学时间
Datamask!
yyyy
(4)下拉列表框(dropdownlistbox)
控件名称
用途
ddlb_nation
选择民族
Ddlb_major
选择专业
(5)成组框(groupbox)
控件名称
文本信息(text)
用途
Gb_1
性别
性别成组
Gb_2
政治面貌
政治面貌成组
(6)单选按钮(radiobutton)
控件名称
文本信息(text)
用途
对应成组框
rb_1
男
选择性别信息
Gb_1
rb_2
女
Gb_1
Rb_3
党员
选择政治面貌信息
Gb_2
Rb_4
团员
Gb_2
Rb_5
其他
Gb_2
(7)命令按钮(commandbutton)
控件名称
文本信息(text)
用途
Cb_add
新增
增加一条记录
Cb_save
保存
保存信息
添加控件后的窗口如下图:
4.对象属性设置
(1)选中ddlb_nation控件,单击鼠标右键,选择“properties”,在属性窗口中选中“items”,在item中输入“汉族、回族、壮族、蒙古族、维吾尔族、白族、土家族”,如图
(2)选中ddlb_major控件,item中输入“计算机硬件、计算机应用、通信工程、自动化、侦测工程、信号处理、应用数学”,如下图
(3)选中em_birthday控件,编辑其掩码(mask),如下图:
(4)选中em_grade控件,编辑其掩码(mask),如下图:
保存窗口。
5.编写脚本
1)对student应用的Open事件进行编程
在系统树窗口中选择student.pbl,双击student应用,弹出应用画板,选择open事件,写入以(下程序:
//数据库连接
//事务对象进行属性赋值
SQLCA.DBMS="ODBC"
SQLCA.AutoCommit=False
SQLCA.DBParm="Connectstring='DSN=grade'"
//连接
connectusingsqlca;
//数据库是否正确连接的判断
ifsqlca.sqlcode=-1then
messagebox("提示","数据库连接错误!
")
return
endif
//打开窗口w_student
open(w_student)
(2)对窗口w_student的Open事件编程
在窗口w_student的编程窗口中选择open事件,输入以下程序:
setnull(sle_id)
setnull(sle_name)
setnull(sle_native)
setnull(sle_address)
rb_1.checked=true
rb_3.checked=true
(3)对按钮cb_add的clicked事件编程
setnull(sle_id)
setnull(sle_name)
setnull(sle_native)
setnull(sle_address)
em_birthday.text=""
em_grade.text=""
ddlb_major.SelectItem
(1)
ddlb_nation.SelectItem
(1)
rb_1.checked=true
rb_3.checked=true
sle_id.setfocus()
(4)对按钮cb_save的clicked事件编程
//对表中不能为空的字段进行判断,给出提示
ifsle_id.text=""then
messagebox("提示","学号不能为空!
")
sle_id.setfocus()
return
endif
ifsle_name.text=""then
messagebox("提示","姓名不能为空!
")
sle_name.setfocus()
return
endif
ifddlb_nation.text=""then
messagebox("提示","民族不能为空!
")
ddlb_nation.setfocus()
return
endif
ifem_birthday.text=""then
messagebox("提示","出生日期不能为空!
")
em_birthday.setfocus()
return
endif
ifddlb_major.text=""then
messagebox("提示","专业不能为空!
")
ddlb_major.setfocus()
return
endif
ifem_grade.text="0000"then
messagebox("提示","入学时间不能为空!
")
em_grade.setfocus()
return
endif
//定义变量,用于从各个控件中获取输入值
stringls_id//学号变量
stringls_name//姓名变量
stringls_sex//性别
stringls_nation//民族
stringls_major1//专业名称
stringls_major2//专业代码
stringls_native//籍贯
stringls_address//地址
stringls_background//政治背景
stringls_grade//入学时间
dateld_birthday//生日
//变量赋值
ls_id=sle_id.text//获取ID号
ls_name=sle_name.text//取姓名
//取性别
ifrb_1.checked=truethen
ls_sex='1'
else
ls_sex='2'
endif
//取民族
ls_nation=ddlb_nation.text
//获取专业名称
ls_major1=ddlb_major.text
//通过SQL语句获取专业代码
selectmajor_idinto:
ls_major2frommajorwherename=:
ls_major1;
ls_native=sle_native.text//取籍贯
ls_address=sle_address.text//取地址
//获取政治面貌
ifrb_3.checked=truethen
ls_background="党员"
elseifrb_4.checked=truethen
ls_background="团员"
else
ls_background="其他"
endif
//获取生日,需要进行数据类型转换
ld_birthday=date(em_birthday.text)
ls_grade=em_grade.text//获取入学时间
//主键判断,避免数据库中主键不唯一,数据库报错
intli_count
selectcount(*)into:
li_countfromstudentwherestudent_id=:
ls_idusingsqlca;
ifli_count>0then
messagebox("提示","该学号的学生已存在,请更改学号!
")
sle_id.setfocus()
return
endif
//应用嵌入式SQL语句向数据库中插入记录
insertintostudent
values(:
ls_id,:
ls_name,:
ls_sex,:
ld_birthday,:
ls_grade,:
ls_nation,:
ls_background,:
ls_major2,:
ls_native,:
ls_address)
usingsqlca;
//判断插入是否成功
ifsqlca.sqlcode=0then
commit;
messagebox("提示","保存完毕!
")
return
else
rollback;
messagebox("提示",SQLCA.SQLErrText)
return
endif
在以上步骤都完成以后,可以运行程序,输入数据进行测试。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 实验三 窗口与常用控件编程 实验 窗口 常用 控件 编程