tempad
ReadyGo!技术成就梦想 >>交换技术 >> 想做一个类似电影字幕的滚动字幕:

想做一个类似电影字幕的滚动字幕:

ReadyGo!技术成就梦想 网络搜索 efish 2008-1-20 5:02:58

想做一个类似电影字幕的滚动字幕:

楼主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

责任编辑: efish 参与评论 查找更多:
相关文章
【刘公子】火凤凰,菜鸟(二),是在对不住了,兄弟… 【刘公子】火凤凰,菜鸟(二),是在对不住了,兄弟们,那事是我没办好,让你们困惑了!
如何得到DataGrid中某列的宽度[在线等] 如何得到DataGrid中某列的宽度[在线等]
突然发现自己有个概念好模糊,请教大家。就是有关sw… 突然发现自己有个概念好模糊,请教大家。就是有关switch 中,return和break
没分了。求好心人帮忙。! 没分了。求好心人帮忙。!
请大家帮帮忙,ASP实现智能搜索,有一个小问题 请大家帮帮忙,ASP实现智能搜索,有一个小问题
请教!关于DataWindow导入XML的问题? 请教!关于DataWindow导入XML的问题?
寻求批量添加的解决方案 寻求批量添加的解决方案
高手请帮忙,为什么我这样不能调用?? 高手请帮忙,为什么我这样不能调用??
准备购买空间,帮测试下速度了……测试者均有分送 准备购买空间,帮测试下速度了……测试者均有分送
====跪求TCP穿越NAT源代码,要含Client,Server,无聊者… ====跪求TCP穿越NAT源代码,要含Client,Server,无聊者请不要进来====
2秒记住本站域名

玩过泡泡龙吗?Readygo?Go! 再加上.Com.Cn的后缀,那就是大名小顶的ReadyGo.com.cn

分类导航
ReadyGo!技术成就梦想