没有,用一个Timer就搞定了,改变Label的位置即可,不过会闪烁得很厉害!好的方法使用一个临时的TBitmap,TextOut之后,然后BitBlt出来就可以了。

解决方案 »

  1.   

    除了Timer,想听听各位的高招。
      

  2.   

    是,的确有API,是 SetWindowPos;但是没必要用WINDOWS API吧,直接用控件(比如说TLabel),再用个TTimer ,设置时间间隔并修改控件位置属性就行了。
      

  3.   

    若是几段文字,我要设置多少Label呢?
    而且,闪烁的太厉害,一行一行向上蹦,离字幕的效果差远了
      

  4.   

    其实方法很多,你可以将所有的label放在panel上,在移动panel即可(当然能有个缓冲的panel更好);
    或者你用一个richedit组件,放在一定的位置,设置好它的背景色,边框风格:none,然后将
    移动行焦点,达到你要的效果。
      

  5.   

    同意Kingron兄。
    Label1.Caption:='asdfa'+#13#10+'sdfsdfgd'+#13#10;可以多行。
      

  6.   

    下面的代码仅仅是演示:
    窗体设置:放一个TTimer,Interval=100,放置一个Label,输入Caption就可以了。
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Timer1: TTimer;
        Label1: TLabel;
        procedure Timer1Timer(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
        iTop:integer;
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      bitblt(Canvas.Handle,100,iTop,label1.width,label1.Height,label1.Canvas.Handle,0,0,srccopy);
      Dec(iTop,2);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      iTop:=Height;
    end;end.
      

  7.   

    效果确实不错.但我不清楚API函数bitblt的具体参数什么意思,能说说说吗?帮助看不懂.
    还有,我从文本文件中读出每一行,怎样设置让每一行按规定的字数显示?
    我再加30分够了吗?
      

  8.   

    实际上,你可以在delphi里安装一个flash组件的,这样一来,实现再复杂的动画效果,完全看你
    的天分和对flash的熟悉程度了。
    祝你成功!
      

  9.   

    效果确实不错.但我不清楚API函数bitblt的具体参数什么意思,能说说说吗?帮助看不懂.
    还有,我从文本文件中读出每一行,怎样设置让每一行按规定的字数显示?
    我再加30分够了吗?
      

  10.   

    >>bitblt的具体参数什么意思,能说说说吗?BitBlt:
    说明 
    将一幅位图从一个设备场景复制到另一个。源和目标DC相互间必须兼容 
    返回值 
    Long,非零表示成功,零表示失败。会设置GetLastError 
    参数 类型及说明 
    hDestDC ,目标设备场景 
    x,y ,对目标DC中目标矩形左上角位置进行描述的那个点。用目标DC的逻辑坐标表示 
    nWidth,nHeight,欲传输图象的宽度和高度 
    hSrcDC,源设备场景。如光栅运算未指定源,则应设为0 
    xSrc,ySrc,对源DC中源矩形左上角位置进行描述的那个点。用源DC的逻辑坐标表示 
    dwRop,传输过程要执行的光栅运算 
    注解 
    在NT环境下,如在一次世界传输中要求在源设备场景中进行剪切或旋转处理,这个函数的执行会失败如目标和源DC的映射关系要求矩形中像素的大小必须在传输过程中改变,那么这个函数会根据需要自动伸缩、旋转、折叠、或切断,以便完成最终的传输过程>>设置让每一行按规定的字数显示?用label.width div Canvas.TextWidth('H'),结果就是每一行显示的字符的个数。
      

  11.   

    请问linkie兄哪里有flash组件呀,还有这样的话有没有移植问题
      

  12.   

    var s:array[0..30]of string;AssignFile(F,'aaa.txt');
    Reset(F);
    i:=0;
    While not eof(F) do
    begin
      Readln(F,s[i]);
      i:=i+1;
      showmessage(s[i]);  //字符串为什么为空?改为Readln(F,s[1])则能正常显示
    end;
      

  13.   

    to Kingron:每一行剩余的部分怎样转到下一行去读,每行按照规定的字数自动变行
      

  14.   

    to Kingron:你的演示程序字符下留着一个尾巴
      

  15.   

    原问题已经解决
    to linkie(linkie):哪里有flash控件?