窗体上有一个timer控件,一个button1按钮,其余控件如下建立,请问如何在Timer1Timer里面写代码实现agv按钮水平移动到
agv.left=newbtn[0].left的地方,停留3秒钟,然后水平移动到agv.left=newbtn[1].left的地方,再停留3秒钟,继续水平移动到
agv.left=newbtn[2].left的地方,停留3秒钟,各位高手帮我看看
var
Form1: TForm1;
newbtn :array[0..3] of Tbutton;
agv :Tbutton;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
i :integer;
begin
for i :=0 to 2 do
begin
newbtn[i] :=Tbutton.Create(Self);
newbtn[i].Parent :=form1;
newbtn[i].Left :=30+30*i;
newbtn[i].Top :=50;
newbtn[i].Width :=30;
newbtn[i].Height :=30;
newbtn[i].Caption :=inttostr(i);
end;
agv:=Tbutton.Create(Self);
agv.Parent :=form1;
agv.Left :=30;
agv.Top :=90;
agv.Width :=30;
agv.Height :=30;
agv.Caption :='agv';
Timer1.Enabled :=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);???????????????
agv.left=newbtn[0].left的地方,停留3秒钟,然后水平移动到agv.left=newbtn[1].left的地方,再停留3秒钟,继续水平移动到
agv.left=newbtn[2].left的地方,停留3秒钟,各位高手帮我看看
var
Form1: TForm1;
newbtn :array[0..3] of Tbutton;
agv :Tbutton;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
i :integer;
begin
for i :=0 to 2 do
begin
newbtn[i] :=Tbutton.Create(Self);
newbtn[i].Parent :=form1;
newbtn[i].Left :=30+30*i;
newbtn[i].Top :=50;
newbtn[i].Width :=30;
newbtn[i].Height :=30;
newbtn[i].Caption :=inttostr(i);
end;
agv:=Tbutton.Create(Self);
agv.Parent :=form1;
agv.Left :=30;
agv.Top :=90;
agv.Width :=30;
agv.Height :=30;
agv.Caption :='agv';
Timer1.Enabled :=true;
end;
procedure TForm1.Timer1Timer(Sender: TObject);???????????????
解决方案 »
- Delphi 数据模糊查询语句
- delphi 7+SQL2005 做简单的查询系统 仅仅就是查询功能
- 关于Treeview的一些问题
- Delphi 2006-06专家榜
- 求128条码字体
- 我怎样才能用datetimepicker将时间插入数据表中呢??
- 我的问题怎么老是出现在这个地方。。。。
- 关于DBGrid问题!
- xp与2K3下socket API编程有什么不同吗
- 武汉知名软件公司急聘Delphi研发经理,年薪10万!
- 在windows nt中有一大堆的共享文件,然后有几个客户端会去读取这些文件,我能否在nt服务器上写个程序,监视当前哪个文件已经独取了?
- 谁知道TTF160_TLB是个什么东东?
procedure TForm1.Timer1Timer(Sender: TObject);
begin
if not Assigned(agv) then Exit;
Timer1.Tag := Timer1.Tag + 1;
if Timer1.Tag > High(newbtn) then
Timer1.Tag := Low(newbtn);
agv.Left := newbtn[Timer1.Tag].Left;
end;
timer1.enabled := false;
exit;
end;
agv.left := agv.left + 30; ----->或者用下面的判断实现.if agv.left<newbtn[0].left then
agv.left := newbtn[0].left
else if agv.left<newbtn[1].left then
agv.left := newbtn[1].left
else if agv.left<newbtn[2].left then
agv.left := newbtn[2].left
else
timer1.enable := false;
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
newbtn :array[0..3] of Tbutton; //你这里定义多出一个。下面又没有用到。
agv :Tbutton;
iP:Integer;
implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
i :integer;
begin
for i :=0 to 2 do //这里只用到3个,上面定义了4个。
begin
newbtn[i] :=Tbutton.Create(Self);
newbtn[i].Parent :=form1;
newbtn[i].Left :=30+30*i;
newbtn[i].Top :=50;
newbtn[i].Width :=30;
newbtn[i].Height :=30;
newbtn[i].Caption :=inttostr(i);
end;
agv:=Tbutton.Create(Self);
agv.Parent :=form1;
agv.Left :=30;
agv.Top :=90;
agv.Width :=30;
agv.Height :=30;
agv.Caption :='agv';
Timer1.Enabled :=true;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
iP:=0;
Timer1.Interval:=3000;
Timer1.Enabled :=False;
end;procedure TForm1.Timer1Timer(Sender: TObject);
begin
agv.left:=newbtn[iP].left; Inc(iP);
iP:=iP mod 3; //因为只用到三个,所以3步就循环。
end;end.
agv.left := newbtn[0].left
else if agv.left<newbtn[1].left then
agv.left := newbtn[1].left
else if agv.left<newbtn[2].left then
agv.left := newbtn[2].left
else
timer1.enable := false;
我也是用这样的判断语句,但是有问题,动态创建的newbtn[i].left可以直接放在if语句里面么?
这句怎么执行不了啊?
可以
有什么问题?把报错的东西贴出来agv.Left := newbtn[Timer1.Tag].Left;
这句怎么执行不了啊?
是什么错误贴出来看
执行我上面的程序。你还需要做。
1.在设计期的时候双击窗体。
2.在设计期的时候双击Timer控件。