1. 程式人生 > >PB做大屏顯示滾動窗口 [轉載]

PB做大屏顯示滾動窗口 [轉載]

間接 htm transacti geb int conn 大屏 obj size

前段時間接到一個同事的求助

一個客戶需求做門診已完成報告通知取單的大屏顯示界面

百度了一下,其實很簡單

實現方法如下

1.用要顯示數據的sql語句做成數據窗口(datawindow);

2.在窗體(window)中嵌入window;

3.在窗體的open事件中加入timer事件;

4.在timer事件中對datawindow進行操作,用datawindow的scrolltorow方法滾動到對應行;

5.當滾動到對應行大於等於datawindow的rowcount是滾動行重新回到第一行;

//窗口滾動的方式,如跑馬燈的方式等都可以優化完美一點,但因為事件和能力的原因就不搞了

以下是一些代碼

open事件

// Profile local_lis

//f_resize()

sqlca = create transaction

SQLCA.DBMS = ProfileString (‘sf.ini‘, ‘Database‘, "DBMS", "")

SQLCA.Database = ProfileString (‘sf.ini‘, ‘Database‘, "Database", "")

SQLCA.LogPass = ProfileString (‘sf.ini‘, ‘Database‘, "LogPassword", "")

SQLCA.ServerName = ProfileString (‘sf.ini‘, ‘Database‘, "Servername", "")

SQLCA.LogId = ProfileString (‘sf.ini‘, ‘Database‘, "Logid", "")

SQLCA.AutoCommit = False

SQLCA.DBParm = ""

connect using sqlca;

string ls_title

int li_speed

ls_title = ProfileString (‘sf.ini‘, ‘Scroll‘, "title", "")

ii_num = integer(Profilestring (‘sf.ini‘, ‘Scroll‘, "date_num", ""))

li_speed = integer(Profilestring (‘sf.ini‘, ‘Scroll‘, "speed", "3"))

st_2.text = ProfileString (‘sf.ini‘, ‘Scroll‘, "text1", "")

st_3.text = ProfileString (‘sf.ini‘, ‘Scroll‘, "text2", "")

it_date = relativedate(today(),ii_num)

if ls_title <>‘‘ then st_1.text = ls_title

dw_1.settransobject(sqlca)

dw_1.retrieve(datetime(relativedate(today(),ii_num),time(00:00:00)))

//messagebox(‘‘,string(datetime(relativedate(today(),ii_num),time(00:00:00))))

//if dw_1.retrieve() =

ii_i =0

timer(li_speed)

timer事件

int li_i
li_i = dw_1.rowcount()
int i = 0

dw_1.scrolltorow(ii_i)

ii_i = ii_i + 3

if ii_i > li_i +3 then
ii_i = 0
dw_1.retrieve(datetime(relativedate(today(),ii_num),time(00:00:00)))
sleep(2)

li_i = dw_1.rowcount()
end if

轉載自【http://blog.sina.com.cn/s/blog_6c99d4e90102vdi0.html】

PB做大屏顯示滾動窗口 [轉載]