想做一个类似电影字幕的滚动字幕:
想做一个类似电影字幕的滚动字幕:
楼主xieanxiong_1981(┕新手上路┑)2006-07-12 09:43:57 在 PowerBuilder / DataWindow 提问
我要实现的结果:
字幕里包括的内容的字数不少于1000字,字幕滚动是从下往上滚动,并且,有透明的背景色或者背景图。
我做的结果:我没法实现能容1000多字的内容
我本来做一个这样的,但是,当时,没有考虑字幕内容的字数,只是在数据窗口里放一个text,然后改变text.y值来移动
问题点数:20、回复次数:7Top
1 楼daixf_csdn(圣殿骑士【CNO】)回复于 2006-07-12 09:55:46 得分 0
pb做效果可能不好吧,upTop
2 楼kkbgp(kkb)回复于 2006-07-12 10:07:54 得分 0
用flashTop
3 楼Dlook(德力)回复于 2006-07-12 10:30:21 得分 0
用mleTop
4 楼xieanxiong_1981(┕新手上路┑)回复于 2006-08-22 10:26:30 得分 0
//of_insertitem(ll_handle,ads_bmtree.GetItemString(li_i,"bmdm"),ads_bmtree)
//ah_parenthandle 返回值:long
//al_fbm 返回值:string
//ads_bmtree 返回值:datastore
treeviewitem ltvi_tmp
Integer li_i,li_j
Long ll_handle
string ls_data,ls_label
For li_i = 1 To ads_bmtree.RowCount()
If ads_bmtree.GetItemString(li_i,"fbmdm") = al_fbm Then
// ltvi_tmp.Data = ads_bmtree.GetItemString(li_i,"bmdm")
ls_data = ads_bmtree.GetItemString(li_i,"bmdm")
ls_Label = ads_bmtree.GetItemString(li_i,"bmmc")
if ls_label <> "单位领导" then
ltvi_tmp.Data = trim(ls_data)
if left(ls_data,1)="M" then
ltvi_tmp.Label = trim(ls_label)+"("+right(ls_data,4)+")"
else
ltvi_tmp.Label = trim(ls_label)+"("+ls_data+")"
end if
ltvi_tmp.PictureIndex = 1 +ads_bmtree.GetItemNumber(li_i,"status")
ltvi_tmp.SelectedPictureIndex = 3
//ltvi_tmp.StatePictureIndex = 1 +ads_bmtree.GetItemNumber(li_i,"status")
// ltvi_tmp.Data = ads_bmtree.GetItemString(li_i,"bmdm")
if left(string(ltvi_tmp.data),1)="M" then
ltvi_tmp.PictureIndex = 1 +ads_bmtree.GetItemNumber(li_i,"status")
ltvi_tmp.SelectedPictureIndex = 4
end if
ll_handle = tv_1.InsertItemLast(ah_parenthandle,ltvi_tmp)
// For li_j = ads_bmtree.RowCount() - 1 To 1
// If ads_bmtree.GetItemString(li_j,"fbmdm") = ads_bmtree.GetItemString(li_i,"bmdm") Then
of_insertitem(ll_handle,ads_bmtree.GetItemString(li_i,"bmdm"),ads_bmtree)
// Exit
// End If
// Next
end if
End If
Next
Return 1
//////////////////////////////////////////////////////////////
//////////////////////
////生成部门与人员的所属关系树
long ll_handle,ll_root_handle
treeviewitem ltvi_tree
datastore lds_bmtree
lds_bmtree= create datastore
lds_bmtree.dataobject="d_ryqx"
lds_bmtree.settransobject( sqlca)
lds_bmtree.retrieve()
lds_bmtree.setsort("px A")
lds_bmtree.sort()
//删除原有的树
do while ll_handle<>-1
ll_handle=tv_1.FindItem(RootTreeItem!, 0)
if ll_handle<>-1 then tv_1.DeleteItem ( ll_handle )
loop
ltvi_tree.label = lc_bddwm
ltvi_tree.data = "000000"
ltvi_tree.pictureindex = 1
ltvi_tree.selectedpictureindex = 3
ll_root_handle = this.insertitemlast(0,ltvi_tree)
if lds_bmtree.rowcount( ) > 0 then
of_insertitem(ll_root_handle,"000000",lds_bmtree)
tv_1.expanditem( ll_root_handle)
end if
//释放资源
destroy lds_bmtreeTop
5 楼dawugui(潇洒老乌龟)回复于 2006-08-22 11:29:17 得分 0
"跑马灯"的实现技巧
深圳:独孤求败 2003-11-24
有时需要用一矩形条显示少量用户特别关心的信息,这条信息串首尾相连,向一个方向循环滚动,
我们通常将其称作"跑马灯"。证券业中常用"跑马灯"来显示不断变化的股票行情;实际应用中也
常通过"跑马灯"来监视是否死机。我们可以写一个简单的函数run_horse()来实现"跑马灯"的
显示。run_horse有两个参数,第一个参数的参数名为Ps_String,类型为string,传值;第二个参
数的参数名为Pi_Num,类型为int,传值;函数返值类型为string。该函数的代码仅一句:
RETURN Mid(Ps_String , (Pi_Num + 1)) + Left(Ps_String , Pi_Num)
下面就可以调用run_horse()函数了。先在一个窗口里定义好单行编辑器sle_runhorse,
在该窗口的Open事件下写上:
sle_runhorse.Text="ABCDEFGHIJKLMNOPQRSTUVWXYZ"
Timer(0.2)
然后在该窗口的Timer事件下调run_horse(),代码如下:
sle_runhorse.text=run_horse(sle_runhorse.Text,1)
这样,当你打开这个窗口时,"跑马灯"便会运转起来。可以在程序中加些语句,
适时地增减sle_runhorse.text中的内容,你便会在"跑马灯"中看到相应变化的信息。
上面讲述的是单字符的显示,对于向汉字这样双字符的得稍作修改。修改如下:
函数代码:RETURN Mid(Ps_String , (Pi_Num + 2)) + Left(Ps_String , (Pi_Num + 1))
窗口Open:sle_runhorse.Text="独孤求败是个大乌龟!"
在状态栏里面的实现要加入一个实例变量:
Is_Show
然后在Timer事件中写:
w_main.setmicrohelp(run_horse(Is_Show,1))
Top
6 楼xiao_bai(小白)回复于 2006-08-22 11:56:57 得分 0
这个有点难啊,一个是上下滚动,一个是字数太多了。我提供一个思路:
用多行编辑器的垂直滚动条位置来控制显示Top
7 楼threshold(threshold)回复于 2006-08-22 17:13:40 得分 0
推荐德力的方法,简单易行Top
-
相关文章
2秒记住本站域名
玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn
