Q&A

  • dll에서 Timer 이벤트...
dll을 만들었는데요..
동적으로 Timer 컴포넌트를 만들었습니다.

procedure song();
begin
  timer1:= TTimer.create(application);
  timer1.Interval:=1000;
  timer1.enabled:=true;  
end;

근데 폼이 있으면 Timer 이벤트가 발생하면
아래와 같은 이벤트가 호출되잖아요...
procedure TForm1.Timer1Timer(Sender: TObject);

근데 폼이 없을땐 어떻게 저 이벤트를 호출하나요?
너무 초보라서...
죄송합니다.

자세히 좀 알려주세요...
4  COMMENTS
  • Profile
    구창민 2003.02.27 03:03
    안녕하세요~ 구창민입니다~

    동적으로 타이머를 만드셨으면

    프로시져도 동적으로 만들어 주심 되겠지요..

    먼저 폼의 public 에 함수 선언부를 기술하구여

      public
        { Public declarations }
        Timer : TTimer;
        procedure TimerProc(Sender : TObject);

    그리고

    implementation

    아래에 함수 본체를 만드세요.

    예를 들면,

    procedure TForm1.Timerproc(Sender : TObject);
    begin
      Caption := DateTimeToStr(Now);
    end;

    머 이렇게여..

    그리고는 아까 말씀하신 그 song() 함수 아래에

    요렇게 쓰심 됩니다.

    Timer.OnTimer := TimerProc;

    그럼 ~ 항상 즐거운 프로그래밍 하시길~




  • Profile
    김민수 2003.02.27 18:06
    답변 감사합니다.
    근데요 에러가 나네요...
    메소드 설정하는 라인에서...(Timer.OnTimer := TimerProc;)
    에러 메시지는...

    Incompatible Type 'method pointer and regular procuder'

    도와주세요...

  • Profile
    구창민 2003.02.27 21:31
    에공..^_^

    님이 동적으로 만드신 타이머의 이름이 Timer1 이니까

    Timer1.OnTimer := TimerProc 를 해야져.. ^_^;

    아래 그냥 간단한 예제를 올릴께여..

    보시고 해보세여.. 그럼~ 즐거운 프로그래밍 하시구여~

    unit Unit1;

    interface

    uses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls;

    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
        procedure FormCreate(Sender: TObject);
        procedure FormDestroy(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        Timer : TTimer;
        procedure TimerProc(Sender : TObject);
      end;

    var
      Form1: TForm1;

    implementation

    {$R *.DFM}

    procedure TForm1.TimerProc(Sender : TObject);
    begin
      Caption := DateTimeToStr(Now);
    end;

    procedure TForm1.FormCreate(Sender : TObject);
    begin
      Timer             := TTimer.Create(self);
      Timer.interval    := 1000;
      Timer.enabled     := False;
      Timer.OnTimer     := TimerProc;
    end;


    procedure TForm1.Button1Click(Sender : TObject);
    begin
      Timer.Enabled := True;
    end;


    procedure TForm1.FormDestroy(Sender: TObject);
    begin
      Timer.Free;
      Timer := nil;
    end;

    end.

  • Profile
    맑은물 2003.02.27 02:55


    똑같습니다.
    없으면 만들어 버리면 되죠 ^^
    procedure TForm1.Timer1Timer(Sender: TObject);
    begin
      하고 싶으신 작업!!!
    end;