delphi7中我在程序运行时定义一类,但在定义了实例后其中的定时器T1的事件OnT1Timer无法触发,请部何故?程序如下:unit Unit2;interfaceuses QExtCtrls,SysUtils;type
Ttest=class(Tobject)
private
T1:ttimer;
public
constructor create;
destructor destroy;
procedure onT1Timer(Sender:Tobject);
end;implementationuses Unit1;
procedure Ttest.onT1Timer(Sender:Tobject);
var
i,j:integer;
begin
i:=j*1000;
end;constructor Ttest.create;
begin
t1:=TTimer.Create(form1);
t1.Enabled:=true;
t1.Interval:=2000;
t1.OnTimer:=onT1Timer;
end;destructor Ttest.Destroy;
begin
t1.Free;
end;end.
Ttest=class(Tobject)
private
T1:ttimer;
public
constructor create;
destructor destroy;
procedure onT1Timer(Sender:Tobject);
end;implementationuses Unit1;
procedure Ttest.onT1Timer(Sender:Tobject);
var
i,j:integer;
begin
i:=j*1000;
end;constructor Ttest.create;
begin
t1:=TTimer.Create(form1);
t1.Enabled:=true;
t1.Interval:=2000;
t1.OnTimer:=onT1Timer;
end;destructor Ttest.Destroy;
begin
t1.Free;
end;end.
解决方案 »
- Fastreport 如何做交插表?
- delphi动态生成的图标的再获取
- 希望delphi7快速入门,求一个小系统的详细开发步骤和源码
- 课本上的一个简单的程序,求解释!
- 谁能帮我编这样一个程序?
- 在delphi中往一个文本文件写东西时如何换行? 回答着给分!!!!
- 最低层的程序设计语言是什么呢?微软的软件是用什么语言写得呢
- *************在关闭计算机或重启计算机的时候,怎样执行DELPHI程序里的ONCLOSE事件呢*****************
- 编写控件遇到的问题2
- 如何用NMFTP控件写下载某日(比如2001年4月9日)在ftp服务器上创建的文件的代码?
- ESMTP 的问题,对邮件编程感兴趣的朋友进来研究一下?
- 小问题:如何让整个系统的光标不可见而不是当前的的程序的光标不可见
t1.Enabled:=true;
t1.Interval:=2000;
放在t1.OnTimer:=onT1Timer;后面,并且两个顺序换一下。
procedure Ttest.onT1Timer(Sender:Tobject);
var
i,j:integer;
begin
i:=j*1000;
end;
那么不会执行,因为变量I没有用刀,已经被Delphi编译器优化掉了
你把它写在procedure TForm1.FormCreate(Sender: TObject);事件中就可以了
以下是我对你程序的修改
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Button3: TButton;
Timer1: TTimer;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
T1:ttimer; { Private declarations }
public
//constructor create;
destructor destroy;
procedure onT1Timer(Sender:Tobject);
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
s :string;
i:integer;
begin
s :='1 2 4 5 13 334';
i:=2;
while length(s)>0 do
begin
if i=1 then
begin
ShowMessage(Copy(s,1,length(s)));
exit;
end;
if Copy(s, 1, Pos(' ', s) - 1)<>'' then
ShowMessage(Copy(s, 1, Pos(' ', s) - 1));
i:=pos(' ',s)+1;
s :=Copy(s, i, Length(s));
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
s :string;
i,j:integer;
begin
s :='1 2 4 5 13 334';
j:=length(s);
i:=0;
while i<j do
begin
ShowMessage(Copy(s, 1, Pos(' ', s) - 1));
i:=pos(' ',s)+1;
s :=Copy(s, i, Length(s));
end;
end;procedure Tform1.onT1Timer(Sender:Tobject);
var
i,j:integer;
begin
j:=2;
i:=j*1000;
showmessage(inttostr(i));
end;
{constructor TForm1.Create;
begin
t1:=TTimer.Create(form1);
t1.Enabled:=true;
t1.Interval:=2000;
t1.OnTimer:=onT1Timer;end; }destructor Tform1.Destroy;
begin
t1.Free;
end;procedure TForm1.FormCreate(Sender: TObject);
begin
t1:=TTimer.Create(form1);
t1.Enabled:=true;
t1.Interval:=1000;
t1.OnTimer:=onT1Timer;
end;end.
t1.Interval:=2000;
t1.OnTimer:=onT1Timer; //顺序不妥t1.OnTimer:=onT1Timer;
t1.Interval:=2000;
t1.Enabled:=true; //....oktry again