"我对Timer控件的理解是每一个单位时间内执行一次,是不是理解有误呀"
你的理解没有错,但是if里写的代码是错的

解决方案 »

  1.   

    定义个全局变量s1:boolean ;
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin  if Edit1.Left +edit1.width =width then
         s1 :=False ;
      if Edit1.Left =121 then
         s1:=True ;
      if s1  then
         begin
         edit1.Left := edit1.Left +1;
         s1 :=true ;
         end
         else
         begin
         edit1.Left :=edit1.Left -1 ;
         s1 :=False ;
         end;
    end;
      

  2.   

    procedure TForm1.Timer1Timer(Sender: TObject);begin
      form1.Caption := datetimetostr(now());
      if ToLeft then
      begin
        edit1.Left := edit1.Left - 1;
        if edit1.Left < 0 then
          ToLeft := not ToLeft;
      end
      else
      begin
        if not ToLeft then
          edit1.Left := edit1.Left + 1;
        if edit1.Left+edit1.Width >= Width then
          ToLeft := not ToLeft;  end;
    end;
    //ToLeft为一个全局变量。
      

  3.   

    我倒觉的你这样移来移去的窗体肯定会闪动的,不如动态的设置它的width应该列好一点;
    再者:
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      form1.Caption:=datetimetostr(now());
      if edit1.Left=form1.Width then
          edit1.Left:=edit1.Left-1
        else
          if edit1.left=121 then //你确定它就到121吗?
                edit1.Left:=edit1.Left+1
                else edit1.Left:=edit1.Left+1;
      end;
      

  4.   

    全局变量bool:boolean;
    令bool:=true;
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      form1.Caption:=datetimetostr(now());
      if edit1.Left=form1.Width then
          bool:=true
      else if edit1.left=121 then
          bool:=false;
      if bool=true then
        edit1.Left:=edit1.Left-1;
      if bool=false then
        edit1.Left:=edit1.Left+1;
    end;