每隔一秒钟从前到后一次显示8个字符在TMemo控件中,如何实现?举例说明一下我要实现的效果:比如有一个长字符串:“中国国奥在广州亚运会八分之一决赛中以0-3惨败于宿敌韩国脚下,当比赛进行到80分钟时现场数万球迷开始倒戈国奥队,震耳欲聋的“解散”“解散”声在天河体育中心响起。”,我想第一秒在TMemo控件中显示“中国国奥在广州亚”,第二秒在TMemo控件中显示“运会八分之一决赛”,第三秒在TMemo控件中显示“中以0-3惨败于”…………以此类推,直到显示完毕,如果最后一秒显示的内容不够8个字,就有几个字显示几个字。请问如何实现呢?

解决方案 »

  1.   

    很简单啊,用timer,然后给一个字符串,给一个当前显示的位置,就可以显示了
      

  2.   

    用timer,字符串用widestring,然后顺序访问字符串中的每一个字比如var
      s:widestring;
      i:integer;
    begin
      for i := 1 to Length(s) do
      begin  end;
    end;
      

  3.   


    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;type
      TForm1 = class(TForm)
        Mmo1: TMemo;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      s:string;
      t:Cardinal;
      h:THandle;implementation{$R *.dfm}procedure Addstr();stdcall;
    var
    tmps:string;
    begin
      while Length(s)>0 do
      begin
      if Length(s)>8 then
      begin
      tmps:=Copy(s,1,8);
      Delete(s,1,8);
      end else tmps:=s;
      Form1.Mmo1.Clear;
      Form1.Mmo1.Lines.Add(tmps);
      Sleep(1000);
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
      h:=CreateThread(NIL, 0, @Addstr, nil, 0,t);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    s:='中国国奥在广州亚运会八分之一决赛中以0-3惨败于宿敌韩国脚下,当比赛进行到80分钟时现场数万球迷开始倒戈国奥队,震耳欲聋的“解散”“解散”声在天河体育中心响起。';
    end;procedure TForm1.FormDestroy(Sender: TObject);
    begin
    if h<>null then CloseHandle(h);
    end;end.
    楼主试试我的代码