急急急!!!求各位高手 帮忙做个powerbuilder 点名系统 (程序怎么写)

2025-01-01 18:03:24
推荐回答(2个)
回答1:

得用到2个实例变量
long il_stoprow= 1 //上一次停在哪一列得记录一下,下次从这几继续哈
boolean ib_stop = false

应该是三个text吧比较合理吧,点名,停止 ,继续

long li
if this.text = '停止' then
this.text = '继续'
li = il_stoprow
do while true //停止的时候得找到没有点过的
if li = dw_1.rowcount() + 1 then li = 1
if dw_1.getselectedrow(li - 1) = li then //判断当前行已被点过
li ++
else
dw_1.selectrow(li,true)
exit //找到没有被点过的推出循环
end if
if li = il_stoprow then //找遍了还没有找到
messagebox('','所有学生均已被点名')
exit
end if
loop

ib_stop = true
return
end if

if this.text = '点名' or this.text = '继续' then
this.text = '停止'
ib_stop = false
do while not ib_stop
if il_stoprow = dw_1.rowcount() + 1 then il_stoprow = 1
dw_1.scrolltorow(il_stoprow) //滚动起来
il_stoprow ++
yield() //允许处理鼠标单击等其他消息
loop
end if

回答2:

可以利用数据窗口来实现:
首先数据窗口是不可见的,你可以把所有的学生信息都放到这个数据窗口里,数据窗口里的每一列必然就代表一个学生信息。然后用一个随即函数(自己写或者改自带的rand()等),取到一个介于0~(学生总数-1)之间的整数m,然后用dw_1.getitemstring(m,'学生姓名列')得到学生姓名并在st控件显示,基本就差不多了。
如果想做的好些,就必须在随机函数上下功夫,不要每次重启程序就同样的学号出来,再者可以做到点过的学号不再取等等,这就是算法的问题了。