比如我要在edit.txt上显示启动timer后的剩余时间,要怎样获取呢?

解决方案 »

  1.   

    var
      Form1: TForm1;
      time1,time2:Ttime;implementation{$R *.dfm}procedure TForm1.Timer1Timer(Sender: TObject);
    begin
        time1:=time1-time2;
        edit1.Text:=timetostr(time1-time2);
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
    time2:=strtotime('0:0:1');
    time1:=strtotime('23:59:59');
    end;end.
      

  2.   

    timer只不过是每隔一段时间执行一段代码,并没有什么剩余时间一说
      

  3.   

    就是说,我要显示隔多长时间显示一段代码。
    如,我定义为10分钟,现在我要在edit.tex上显示离执行这段代码还有多长时间,9  8 这样倒计时
      

  4.   

    chenjun631(小菜)不对啊,怎么不显示?
      

  5.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, ExtCtrls, StdCtrls;type
      TForm1 = class(TForm)
        Timer1: TTimer;
        Timer2: TTimer;
        Edit1: TEdit;
        procedure FormCreate(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
        procedure Timer2Timer(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      time1,time2:Ttime;
    implementation{$R *.dfm}procedure TForm1.FormCreate(Sender: TObject);
    begin
    time2:=strtotime('00:00:01');
    time1:=strtotime('00:01:00');
    edit1.Text:=('00:01:00');
    timer1.Enabled:=false;
    timer2.Enabled:=false;
    timer1.Interval:=1000;
    timer2.Interval:=60000;
    timer1.Enabled:=true;
    timer2.Enabled:=true;
    end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
        time1:=time1-time2;
        edit1.Text:=timetostr(time1-time2);
    end;procedure TForm1.Timer2Timer(Sender: TObject);
    begin
    timer1.Enabled:=false;
    timer2.Enabled:=false;
    showmessage('1分钟到了!');
    end;end.
      

  6.   

    如果时间不是1分钟,而是在edit2.text中输入的,要怎么转换一下?
      

  7.   

    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, ExtCtrls;type
      TForm1 = class(TForm)
        Timer1: TTimer;
        Timer2: TTimer;
        Edit1: TEdit;
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure Timer2Timer(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);
      private
        { Private declarations }
        Function IntervaltoDateTime(Interval : LONGLONG) :TDateTime;  //将time1的毫秒转换为时间格式,但不能超过23:59:59,否则丢失
      public
        { Public declarations }
      end;var
      Form1: TForm1;
      startime :TDateTime;
      lentime  :TDateTime;implementation{$R *.dfm}Function TForm1.IntervaltoDateTime(Interval : LONGLONG) :TDateTime;
    var
            hour,min,second,midtime :integer;
            Ischeck :Boolean;
    begin
            Ischeck := Interval div 1000 >0 ;
            if Not Ischeck then Result := StrToDateTime('00:00:00');
            midtime := Interval div 1000;
            second := midtime mod 60;
            midtime := midtime div 60;
            min := midtime mod 60;
            midtime := midtime div 60;
            if midtime <24 then hour := midtime
            else    hour := 23;
            Result := StrToDateTime(inttostr(hour)+':'+IntToStr(min)+':'+IntToStr(second));
    end;
    procedure TForm1.Button1Click(Sender: TObject);
    begin
            startime := Now;
            lentime := IntervaltoDateTime(Timer1.Interval);
            Timer1.Enabled := True;   //开启定时
            Timer2.Enabled := True;   //开启到记时显示
    end;procedure TForm1.Timer2Timer(Sender: TObject);
    var
            dectime :TDateTime;
    begin
            dectime :=lentime -(Now - startime)  ;
            Edit1.Text := TimeToStr(dectime);end;procedure TForm1.Timer1Timer(Sender: TObject);
    begin
            startime := Now;     //重新初始化新的定时
            lentime := IntervaltoDateTime(Timer1.Interval);
    end;end.
      

  8.   

    既然你是隔一段时间执行一次额话,你可以试试在timer触发的事件里面用总时间减去timer的internal时间。
    设置两个全局变量,
    var
      LastTime:Double;
      I:Integer;在执行timer前先把总的时间值赋给LastTime,然后I:=0;
    然后在timer的事件里面写代码:
    begin
      LastTime:=LastTime-I*Internal;
      Inc(I);
      Edit1.Caption:=FloatToStr(LastTime);
    end;
      

  9.   

    是不是我没有说清楚啊
    是这样的
    我现在有一个timer,timer1.interval:=strtoint(edit1.text)
    现在我希望程序执行的时候在edit2.text上显示timer1的倒计时
      

  10.   

    用2个TIMER。用另外一个TIMER来计算一个单位时间(如分,秒)。
    只要知道了第一个TIMER的间隔。取出来,然后做一个计数器。每隔一个单位时间(由第二个TIMER来控制),自减一。然后显示(这个代码也写在第二个TIMER中)。这样说的清楚了吧。代码应该不难的吧
      

  11.   

    将TIMER的时间间隔设为足够小,如1000,然后用一全局变量,在TIMER时间中控制这个变量每次减1(或加1)来实现计数。
      

  12.   

    我的方法不是很清楚了吗>????????????你加个编辑框, 设定timer1的时间间,在点button1,不就可以有效果,老大,你看来没有啊??????????????