根本不用那么烦。。直接用time 控件控制时间就可以
你不是要求 延时时间(毫秒级)的同时计算一个变量的值,
当绝对时间到期,变量的值被求出
在 延迟的时候执行 timer事件
timer 事件中写 你计算的数就行了。。
给你个简单的例子。。。。。。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Spin;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
Timer1: TTimer;
SpinEdit1: TSpinEdit;
Label1: TLabel;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
x: integer;
implementation
{$R *.dfm}
procedure TForm1.Timer1Timer(Sender: TObject);
var
i: integer;
begin
i:= Listbox1.ItemIndex;
i:= i+x;
if i=Listbox1.Count-1 then
x:=-1;
if i=0 then
x:=1;
ListBox1.ItemIndex:= i;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
x:=1;
Timer1.Interval:= SpinEdit1.Value;
Timer1.Enabled:= not Timer1.Enabled;
if Timer1.Enabled then
Button1.Caption:= '停止'
else
begin
Button1.Caption:= '开始';
Label1.Caption:= ListBox1.Items.Strings[ListBox1.ItemIndex];
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SpinEdit1.Value:= Timer1.Interval;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
Button1.SetFocus;
end;
end.
我感觉这样就能解决你现在的问题。。根本不用线程也可以