DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: lixuan123
今日帖子: 24
在线用户: 7
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 zxdcj (月下舞者) ★☆☆☆☆ -
盒子活跃会员
2003/12/30 20:56:05
标题:
菜鸟请教一个关于滚动字的问题. 浏览:2154
加入我的收藏
楼主: 刚才在坛里下了一个<WinApi函数快速查询工具>看到查询窗口上有一个可以滚动的字串,挺有意思,想做一个但没成功,请大家给看一下吧,谢谢!!!
WinApi函数快速查询工具:http://bbs.2ccc.com/topic.asp?topicid=48244
var
  Form1: TForm1;
  cx:integer;
implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);

begin
  cx:=cx-3;
  form1.Canvas.CleanupInstance;//这个用得对不对?我想将上次画的清掉,感觉像是它,因没运行成功,所以我无法验证.
  form1.Canvas.TextOut(CX,50,'演示滚动演示滚动演示滚动演示滚动');
  if cx<=0 then cx:=form1.Width;
  timer1.Enabled:=false;
  timer2.Enabled:=true;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
  timer2.Enabled:=false;
  timer1.Enabled:=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  cx:=form1.Width;
end;

end.
----------------------------------------------
-
作者:
男 bios (阿贡) ★☆☆☆☆ -
盒子中级会员
2003/12/30 21:11:07
1楼: procedure TForm1.Timer1Timer(Sender: TObject);
const s='演示滚动演示滚动演示滚动演示滚动';
var
 i:Longint;
begin
  cx:=cx-3;
  if not tt then
   begin
    form1.Canvas.Font.Color :=clBtnFace;
    tt:=true;
   end;
  if tt then
   begin
    form1.Canvas.Font.Color :=clActiveCaption;
    tt:=false;
   end;
  form1.Canvas.TextOut(CX,50,s);
  i:=canvas.TextWidth(s);
  form1.Canvas.TextOut(cx+i+1,50,');
  if cx<=0-i then cx:=form1.Width;
  timer1.Enabled:=false;
  timer2.Enabled:=true;
end;

无能为力只能这样了
----------------------------------------------
按此在新窗口浏览图片
按此在新窗口浏览图片
作者:
男 flyers (flyers) ★☆☆☆☆ -
普通会员
2003/12/30 21:28:42
2楼: 麻烦您能给一份原代码给我吗?我也学习学习,我刚学Delphi,是个菜鸟。谢谢了!小弟感激不尽。
----------------------------------------------
大家好,我是Flyers。

是Delphi.Net版主,小弟会尽力解决大家的问题!谢谢支持!
作者:
男 yfeng (伊风) ★☆☆☆☆ -
盒子活跃会员
2003/12/30 22:09:47
3楼: 我是<WinApi函数快速查询工具>的作者,那个效果其实不用这么复杂啊!不过也许
大哥你们要更好的??代码就这样也很好呀
你们看:

在窗体里放一个panel1,一个Timer1,一个label1.
procedure TFindFrm.Timer1Timer(Sender: TObject);
begin
label1.Left:=label1.Left-1; //向左移动文字
if
label1.Left<-label1.Left-520//这个520数字可以自己调,知道你满意为止!!
then//重新初始化Label1
Label1.Left:=panel1.width;
end;

注意:Timer1的interval的值设为:10 最好!!

你们可以发邮件:ranyang@eyou.com
我可以公布源码,我是菜鸟,愿与大家共进退~~~~~~~~


----------------------------------------------
~~~~~我爱delphi就像爱我的她~~~~~
作者:
男 hotyei (青出于蓝) ★☆☆☆☆ -
盒子活跃会员
2003/12/30 22:42:03
4楼: 原来用的是Label,这种方法还挺简单的嘛,不过会不会闪??
----------------------------------------------
米软科技有限公司http://www.szmesoft.com
作者:
男 yfeng (伊风) ★☆☆☆☆ -
盒子活跃会员
2003/12/31 8:18:29
5楼: 有一小点~~不过还可以!!
----------------------------------------------
~~~~~我爱delphi就像爱我的她~~~~~
作者:
男 zxdcj (月下舞者) ★☆☆☆☆ -
盒子活跃会员
2003/12/31 8:19:32
5楼: 谢谢大家,我用的方法错在将timer的interval设大了,让我误以为是没有反应了,用yfeng说的label的方法不错,不闪,不过我遇到一些别的问题,请大家帮忙!
var
  Form1: TForm1;
  cx:integer;
implementation

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);

begin
  cx:=cx-1;
  form1.Canvas.CleanupInstance;//这个用对不对?我想将上次画的清掉但好像没有效果,
                               //我刚学到Canvas不太会,大家指点一下吧
  form1.Canvas.TextOut(CX,50,'演示滚动演示滚动演示滚动演示滚动');
  if cx<=(0-length('演示滚动演示滚动演示滚动演示滚动')*sizeof(string)) then
    cx:=form1.Width;//这句有问题,我想让字串在右边滚到最后字符,从左面接着
                    //滚动,但取的长度是不够的,这是不是与字号或字间距有关呀?
                    //还有就是当将字串换成英文时,后面会拖着一行黑条或黑线
                    //这个好像也与字号有关,而且与最后一个字符也有关,如果最后一
                    //个K之类尾端尖的就有这个现象,是h之类尾端是比较圆的就没有了
                    //如果在后面加一个空格就好了,但这并不是办法吧?这应该怎么办呢?
                    //望高手指点!!!!
  timer1.Enabled:=false;
  timer2.Enabled:=true;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
  timer2.Enabled:=false;
  timer1.Enabled:=true;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  cx:=form1.Width;
end;

end.
----------------------------------------------
-
作者:
男 zxdcj (月下舞者) ★☆☆☆☆ -
盒子活跃会员
2003/12/31 8:28:58
6楼: yfeng大哥,有邮件到! 
----------------------------------------------
-
作者:
男 xuanjian007 (悬剑) ★☆☆☆☆ -
普通会员
2003/12/31 9:03:22
7楼: 我觉得raize套件里面的有一个控件,就是跑马灯的效果,不过目前只支持英文!
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行62.5毫秒 RSS