如何实现image.canvas.textout控制输出文本从右向左循环滚动显示?用了Timer定时器

解决方案 »

  1.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls;type
      TForm1 = class(TForm)
        Timer1: TTimer;
        procedure FormCreate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
        procedure FormPaint(Sender: TObject);
      private
        { Private declarations }
        index:Integer;
        procedure DrawText(s:string;i:Integer);
      public
        { Public declarations }
      end;var
      Form1: TForm1;
    const
      printStr = 'dsgdgdfgdfhgdfsdfsdfjlsjflsdjdflsdfsdflsldf';implementation{$R *.dfm}procedure TForm1.DrawText(s: string; i: Integer);
    var
      str:string;
      len:Integer;
    begin
      if i = 0 then
      begin
        len := Self.Canvas.TextWidth(s);
        Self.Canvas.TextOut(500-len,10,s);
      end
      else
      begin
        str := Copy(s,1,i);
        len := Self.Canvas.TextWidth(str);
        Self.Canvas.TextOut(500-len,10,str);
      end;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      index := 1;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      if index < Length(printStr) then
        Inc(index)
      else
        index := -1;
      Invalidate;
    end;procedure TForm1.FormPaint(Sender: TObject);
    begin
      DrawText(printStr,index);
    end;end.
      

  2.   

    to(bdmh)我的数据在数组中 而且有很多条记录 用Drawtext可以行吗?
      

  3.   


    delphi 数据库中的多条记录如何接着输出 ? 我想要的效果是输出第一条记录之后 接着输出第二条记录 该如何实现?我的记录放在了数组中 Arr:array[1..500]of string;
    数组中的字段赋值    Arr[1]:=task_tab.FieldByName('ziduan1').AsString;
      Arr[2]:=task_tab.FieldByName('ziduan2').AsString;
      Arr[3]:=task_tab.FieldByName('ziduan3').AsString;
      Arr[4]:=task_tab.FieldByName('ziduan4').AsString;
      

  4.   

    单纯的Textout或Draw在多条记录时会闪烁得比较厉害。楼主可以去下一个我发的DEMO,关键在于两点:
    1.内存中做一幅图,显示要滚动的内容,解决闪烁问题
    2.计算何时接上下一条,下下一条以及到边缘时消除需要一个算法。
    我的DEMO都是自己写的,在真实系统中没有发现任何问题。
      

  5.   


    非常感谢 请问能给我发一个份吗 [email protected]