procedure Tformmain.tmr2Timer(Sender: TObject);
var
  query:TADOQuery;
  i,j: TDateTime;
begin
  Query := TADOQuery.Create(nil);
  Query.Connection := dm.ADOConnection1 ;
  Query.SQL.Add('select memotime from memo');
  query.Open;
  while not query.Eof do
    begin
      i:=now;
      j:=query.Fields[0].Value;
      if (j>now)and (j<i+3) then
        begin
          messageForm.Label1.Caption := '这三天有你要提示的信息请查看!';
          messageForm.show;
        end;
      query.Next;
    end;
end;
为什么关了以后还是跳出来呢?
各位高手帮个忙看看。谢谢了!!!

解决方案 »

  1.   

    不明白你的意思。。你是关闭什么,然后什么跳出来。。是messageForm跳出来吗?
      

  2.   

    你的timer设置的多久,你是每天判断一次,还是程序启动的时候判断还是什么时候呢?
      

  3.   

    是在程序启动的时候进行判断的。我关闭的是messageForm这个窗口。 timer设置的是2秒种。memotime是一个时间类型是 datetime。
      

  4.   

    while not query.Eof do
    begin
    i:=now;
    j:=query.Fields[0].Value;
    if (j>now)and (j<i+3) then
    begin
    messageForm.Label1.Caption := '这三天有你要提示的信息请查看!';
    messageForm.show;
    break; //<-------------
    end;
    query.Next;
      

  5.   

    timer设置2秒种,间隔两秒就会去判断一次,也就是两秒会提示你一次。
    你可以设置全局布尔变量 bool,用来判断提示过了没,if bool = false (即没有提示过)then 
    begin
      Query := TADOQuery.Create(nil);
      Query.Connection := dm.ADOConnection1 ;
      Query.SQL.Add('select memotime from memo');
      query.Open;
      while not query.Eof do
        begin
          i:=now;
          j:=query.Fields[0].Value;
          if (j>now)and (j<i+3) then
            begin
              messageForm.Label1.Caption := '这三天有你要提示的信息请查看!';
              messageForm.show;
            end;
          query.Next;
        end;
     bool := true ; //*****
    end ;