当前位置:编程学习 > Delphi >>

delphi 循环赋值

怎么才可以按顺序显示,以下代码只显示hfghfghgf',因为一下就循环完了,就是 i 等于4,那么始终就是4,怎么才可以按顺序赋值,完了再重最开头赋值 procedure TMain_frm.tmr1Timer(Sender: TObject); var s:string; str:TStrings; i:Integer; begin LAB1.Left:=LAB1.Left - 1; s:='asaaas;erererer;vcvcvcvc;hfghfghgf'; str:=TStringList.Create; str.Delimiter:=';'; str.DelimitedText:=s; if LAB1.Left = -lab1.Width then begin for i:= 0 to str.Count -1 do LAB1.Caption:=str[i]; LAB1.Left:=self.ClientRect.Right; end; str.Free; end;
答案:你的代码有点问题陈(if LAB1.Left = -lab1.Width then) 我就在你这个代码基础上写吧,设一全局变量 iCnt

var
  iCnt: Integer = 0;
procedure TMain_frm.tmr1Timer(Sender: TObject);
var
  s:string;
  str:TStrings;
  i:Integer;
begin
  LAB1.Left:=LAB1.Left - 1;
  s:='asaaas;erererer;vcvcvcvc;hfghfghgf';
  str:=TStringList.Create;
  str.Delimiter:=';';
  str.DelimitedText:=s;
  if LAB1.Left = -lab1.Width then
  begin
   // for i:= 0 to str.Count -1 do          去掉
    LAB1.Caption:=str[iCnt];
    Inc(iCnt);                               //加1
    if iCnt>3 then iCnt := 0;          //大了则还原为0  循环
    LAB1.Left:=self.ClientRect.Right;
  end;
  str.Free;
end;
其他:var 
 i:Integer;
procedure TMain_frm.tmr1Timer(Sender: TObject);
var
  s:string;
  str:TStrings;
begin
  LAB1.Left:=LAB1.Left - 1;
  s:='asaaas;erererer;vcvcvcvc;hfghfghgf';
  str:=TStringList.Create;
  str.Delimiter:=';';
  str.DelimitedText:=s;
  if LAB1.Left = -lab1.Width then
  begin
    if i>str.Count -1 then i:=0;
    LAB1.Caption:=str[i];
    LAB1.Left:=self.ClientRect.Right;
  end;
  str.Free;
  inc(i)
end; 

上一个:delphi Image1上建立的光标如何册除
下一个:win7安装delphi显示不全还是咋回事??附图

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,