你的记录是不停的添加进去的吗?如果是,每添加一个记录, 就设置一下他的到期时间 比如10秒后到期 procedure TForm1.Button1Click(Sender: TObject); var ti:TDateTime; begin ti:=now()+0.00010; listbox1.Items.add(DateTimeToStr(ti));//记录到期时间 end;procedure TForm1.Timer1Timer(Sender: TObject); var i:integer; begin if listbox1.Count >= 1 then begin for I := 0 to listbox1.Count - 1 do begin if StrToDateTime(Listbox1.Items.Strings[i]) <= now() then //如果记录的时间到期 begin Listbox1.Items.Delete(i); break; end; end; end; end;可以测试一下。 思路:添加记录时,将到期时间算出来,记录在与数据关联的位置。 利用Timer实时检测。时间到期的数据就删除。 Timer1的间隔时间设置为1。精确度不高,可以去找点别的控件或方法。我记得有精确到毫秒的计时方法。
比如10秒后到期
procedure TForm1.Button1Click(Sender: TObject);
var
ti:TDateTime;
begin
ti:=now()+0.00010;
listbox1.Items.add(DateTimeToStr(ti));//记录到期时间
end;procedure TForm1.Timer1Timer(Sender: TObject);
var
i:integer;
begin
if listbox1.Count >= 1 then
begin
for I := 0 to listbox1.Count - 1 do
begin
if StrToDateTime(Listbox1.Items.Strings[i]) <= now() then //如果记录的时间到期
begin
Listbox1.Items.Delete(i);
break;
end;
end;
end;
end;可以测试一下。
思路:添加记录时,将到期时间算出来,记录在与数据关联的位置。
利用Timer实时检测。时间到期的数据就删除。
Timer1的间隔时间设置为1。精确度不高,可以去找点别的控件或方法。我记得有精确到毫秒的计时方法。