我想在界面上实现一段文字来回的移动的效果,类似于跑马灯,到了边界就弹回!
这个问题应该不难吧,不过我是新手,只会做单向移动。恳请各位高手指点迷津,谢谢!

解决方案 »

  1.   

    timer1的事件里if label1.left<panel1.width then
    label1.left:=label1.left+5
    else
    label1.left:=label1.left-5
      

  2.   

    加个判断,当文字所在的控件的left为1时,开始向右移动,同样right为1时,开始向左移动~
    试试吧~理论上可以~
      

  3.   

    这是了一辆车来回走的代码,希望能给你启发哈!
     smallcar1,smallcar2是两个图片;drivearea是车走的区域。//预先设定1号车可视,2号车不可视
    begin
      if direction then
        begin
        smallcar1.Left := smallcar1.left+steps;
        smallcar2.Left := smallcar2.left+steps; //以steps的步长向右移动
        end
      else
        begin
        smallcar2.left := smallcar2.left-steps;
        smallcar1.left := smallcar1.left-steps; //以steps的步长向左移动
        end;
      if smallcar1.Left + smallcar1.width >= drivearea.Width-steps  then
        //如果1号车+车长 离区域右边界大于等于于1个步长
        begin
          direction :=false; //改变方向
          smallcar2.Visible := true; //2号车可视
          smallcar1.Visible := false;//1号车不可视
        end;
      if smallcar1.Left<=0+steps then
         //如果1号车离区域左边界小于等于1个步长
         begin
          direction := true; //改变方向
          smallcar1.Visible :=true; //1号车可视
          smallcar2.Visible :=false; //2号车不可视
         end;
      

  4.   

    这段是写在Timer控件里的代码。
      

  5.   

    这么说假如文字移动的话,也要做两句一样的文字,一个label1和一个label2,一个向左一个向右,一个可见一个不可见,这样好像还是很烦琐,就没有更简单的嘛!恕小弟脑瓜不开窍。
      

  6.   

    这样吧,就放一个label,写上文字,然后呢,再放两个timer(timer1,timer2);设开始时label1处于窗口的最左边,
    timer1.ontimer()
    begin
       if (label1.left+label1.width)<form1.with then
          begin
            label1.left:=label1.left+1;
          end
        else
         begin
          timer1.enabled:=false;
          timer2.enabled:=true;
        end;
    timer2.ontimer()
      begin
        if label1.left>form1.left then
          begin
            label1.left:=label1.left-1;
          end
        else
         begin
           timer2.enabled:=false;
           timer1.enabled:=true;
        end;
      

  7.   

    baisha178:你能说得具体点吗?我是初学者,谢谢!
      

  8.   

    具体的代码如下://设timer1.enabled:=true;timer2.enabled:=false;
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      if label1.Left+label1.Width<form1.Width then
        begin
          label1.Left:=label1.Left+10;
        end
      else
        begin
          timer1.Enabled:=false;
          timer2.Enabled:=true;
        end;
    end;procedure TForm1.Timer2Timer(Sender: TObject);
    begin
      if label1.left>0 then
        begin
          label1.Left:=label1.Left-10;
          label2.Caption:=inttostr(label1.Left);
        end
      else
        begin
          timer2.Enabled:=false;
          timer1.Enabled:=true;
        end;
    end;