怎样让汉字按一定得时间间隔输出来?(100分)

  • 主题发起人 主题发起人 watt
  • 开始时间 开始时间
W

watt

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾大家好,现在我想用Delphi开发这样一个程序:只想在Form窗口里写一些汉字,然后运行程序的时候,可以让那些字按照一定的时间间隔显示出来。请大家帮我想个办法吧(尽量详细一些就最好了),[red]Thanks everybody so much![/red]
 
用timer应该可以吧?
 
Timer就可以了。每次触发Timer,将Label的Caption添加一个汉字就行了。
 
怎么样触发Timer?各位能否说得更详细一些?我急着要用这个东西
 
可在ONFormShow中写:<br>Timer1.Interval := &nbsp;1000 ; //表示1秒触发一次<br>Timer1.Enabled := True ; //启用。<br><br>Timer1.Ontimer事件中写:<br>label1.Caption := Label1.Caption + '好'; //加上你要添加字即可
 
谢谢happycyp的热心解答,不过你给出的办法好像不是我想要地效果啊,我的意思是我想输出一段文字,而且一次只输出一个字。
 
这么简单的问题变通一下就行了<br>把这段文字放在一个string 这变量(如s)里就行了(如果不是很长的话),每次从中取一个显示即可。步长为1:<br>OnTimer 事件里写<br>label1.caption := label1.caption &nbsp;+ s;//或者选择其他控件<br>inc(i);<br><br>初始化时,i设置为1.
 
楼上的方法正确,但是漏掉了一点:<br>文字输入完后需要停止,不然要死循环了;<br>在 OnTimer 事件里需要加入,<br>if i&gt;=n then &nbsp;(n为文字个数)<br>begin<br> &nbsp;Timer1.Enabled:=False;//关闭文字输出<br> &nbsp;exit;<br>end;
 
可在ONFormShow中写:<br>var SList:TStringlist;<br> &nbsp; &nbsp;i:integer;<br>..........................<br>SList:=TStringlist.create;<br>SList.add('123');<br>SList.add('456');<br>SList.add('789');<br>i:=0;<br><br>Timer1.Interval := &nbsp;1000 ; //表示1秒触发一次<br>Timer1.Enabled := True ; //启用。<br><br><br>Timer1.Ontimer事件中写:<br>if i&gt;=s.Count then i=0;<br>label1.Caption := SList; //加上你要添加字即可
 
大家来看看我在OnTimer 事件中写的代码,我是根据happycyp的提示来写的,可是运行之后结果显示出来的是一个问号,不知道是怎么回事,请大家帮我看看吧<br>var<br> &nbsp;s:String;<br> &nbsp;i:Integer;<br>begin<br> &nbsp;i:=1;<br> &nbsp;s:='我会好好的';<br> &nbsp;label1.caption := label1.caption &nbsp;+ s+' &nbsp;';<br> &nbsp;inc(i);<br>end;
 
我晕,每次都把i设置成1,服了。<br>把i设置成全局变量好吗,在FormShow中设置成1就行了。<br>另外,s也要声明成全局变量。也在Formshow中设置。<br>希望楼主写程序多动动脑子。<br>I服了U.
 
如果是用汉字,将s声明成WideString;
 
汉字是双字节的
 
这样的程序可以卖钱嘛?<br><br>哈哈
 
定义一个数组不就行了:s:array [1..n] of String; &nbsp;n为你汉字的个数<br>先将汉字一个一个放进数组,然后在取出来不就行了:<br><br>var //先设置全局变量<br> &nbsp;i:Integer;<br> &nbsp;s:array [1..5] of String; <br>procedure TForm1.FormShow(Sender: TObject);<br>begin<br> &nbsp;s[1]:='我';<br> &nbsp;s[2]:='会';<br> &nbsp;s[3]:='好';<br> &nbsp;s[4]:='好';<br> &nbsp;s[5]:='的';<br> &nbsp;i:=1;<br>end;<br>在OnTimer 事件中写的代码<br>begin<br> &nbsp;if i&gt;=5 then<br> &nbsp;begin<br> &nbsp; &nbsp;Timer1.Enabled:=False;//关闭文字输出,不然会死循环的<br> &nbsp; &nbsp;exit;<br> &nbsp;end;<br> &nbsp;label1.caption := label1.caption &nbsp;+ s+' &nbsp;';<br> &nbsp;inc(i);<br>end;
 
多谢各位,我终于做出来了,大家可能会觉得我问的问题太傻瓜了,不过我只是一个初学者,如果我会了的话,我也就不问大家了。不管怎么样,再一次谢谢各位热心的朋友。这个问题讨论到此结束,最后把我的代码写出来,可能对后来者会有帮助的<br>var &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; //将i,s设置为全局变量<br> &nbsp;i:Integer;<br> &nbsp;s:WideString;<br><br>procedure TForm1.Timer1Timer(Sender: TObject);<br>begin<br> &nbsp;if i&gt;12 then<br> &nbsp;begin<br> &nbsp; &nbsp;Timer1.Enabled:=False;<br> &nbsp; &nbsp;Exit;<br> &nbsp;end;<br> &nbsp;label1.caption := label1.caption &nbsp;+ s+' &nbsp;';<br> &nbsp;inc(i);<br>end;<br><br>procedure TForm1.FormShow(Sender: TObject);<br>begin<br> &nbsp; &nbsp;i:=1;<br> &nbsp; &nbsp;s:='谢谢各位,我会继续努力的';<br>end;
 
后退
顶部