哪们大虾请指教,
怎样在控制台中加控件,比如说Timer控件,并且写timer的ontimer事件程序。
另外请问哪有关于delphi控制台的资料或例程。

解决方案 »

  1.   

    var
       gTimer: TTimer;begin
       ......
       gTimer:= TTimer.Create(Nil);
       gTimer.OnTime:= 你的时间处理函数;
       try
           .....
       finally
           gTimer.Free;
       end;
       ......
    end.
      

  2.   

    我是这样写的可是在执行 gTimer.ontime=过程名时,提示出错。提示(35): Incompatible types: 'method pointer and regular procedure'。
      

  3.   

    ontime的过程名定义格式为procedure timeEvent(sender: TObject);
    gTimer.OnTime:=timeEvent;
      

  4.   

    如上面所说,我的时间事件过程定义格式也是如此,有错。我以前写过这样的类似程序,但是现在写的是一个控制台程序,没有窗体的单元文件,所以也不能在写Timer的过程时事先声明。
      

  5.   

    我怀疑timer控件在console模式下可以用么?
      

  6.   

    TTimer不能用在Console里,
    你自己做一个定时器就行了!
      

  7.   

    怎么做啊。从TTimer继承?还是用API(好像有一个可以获得系统运行时间的API函数,但不知道是哪一个)?或者干脆用循环?请glassesboy详细说一下。
      

  8.   

    也可以阿
    program ProjectTimer;{$APPTYPE CONSOLE}uses
      SysUtils, ExtCtrls, Messages, Windows;type
      TMyTimer = class
      private
        FTimer: TTimer;
        procedure OnTimer(Sender: TObject);
      public
        constructor Create;
        destructor Destroy; override;
      end;
    { TMyTimer }constructor TMyTimer.Create;
    begin
      FTimer := TTimer.Create(nil);
      FTimer.OnTimer := OnTimer;
      FTimer.Interval := 500;
    end;destructor TMyTimer.Destroy;
    begin
      FTimer.Free;
      inherited;
    end;procedure TMyTimer.OnTimer(Sender: TObject);
    begin
      WriteLn('Hello');
    end;var
      msg: tagMsg;
      FMyTimer: TMyTimer;
    begin
      FMyTimer := TMyTimer.Create;
      while GetMessage(msg, 0, 0, 0) do
      begin
        if GetKeyState(VK_ESCAPE) < 0 then
          break;
        DispatchMessage(msg);
      end;
      FMyTimer.Free;
    end.
      

  9.   

    http://www.delphibbs.com/delphibbs/dispq.asp?lid=329335
      

  10.   

    方法一:
    var
       gTimer: TTimer;begin
       ......
       gTimer:= TTimer.Create(Nil);
       gTimer.OnTime:= 你的时间处理函数,指向一个类的成员函数。
       try
           .....
       finally
           gTimer.Free;
       end;
       ......
    end.方法二:
       SetTimer(Handle,ID,1000,@Proc)
       KillTimer(ID)
    Proc原形为:
    procedure Proc(hwnd:THandle;uMsg:UINT;idEvent:UINT;dwTime:DWORD);stdcall;
      

  11.   

    多谢各位。问题基本上已得到解决。但是小弟还想问一下 jiadrun(MustBeSuccess),请问方法一中,由于是写一个控制台程序,所以怎么去写一个类成员函数,是不是还得自定义一个类?