타이머를 동적 생성한 후 이벤트에 인자를 넣는 건데
타이머의 번호(index1)와 구별인자(index2)를 이벤트내에서 처리 할려구합니다.
꼭 타이머는 아니더라도(다른 VCL의 경우도) 방법이 있는지요?
Componet의 태그를 쓰는 방법은 알고 있는거염...
고수님... 꼭 도와주세여..... ㅠ.ㅠ;;
밑에 처럼 해봤는데 전혀 안되더라구여...
public
procedure OnMyTimer(Sender: TObject; index1, index2 : integer);
var
MyTimer : Array[1..8] of TTimer;
implementation
procedure TForm1.OnMyTimer(Sender: TObject; index1, index2 : integer);
var
aa : integer;
begin
aa := index1;
// 처리 내용
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i : integer;
begin
for i := 1 to 8 do
begin
MyTimer[i] := TTimer.Create(Self);
MyTimer[i].OnTimer := OnMyTimer(MyTimer[i],i,1);
end;
end;
Tag를 쓰는 방법을 아신다면 Tag를 쓰세요. Tag는 32비트정수입니다. 형변환만 하시면
어떤형의 변수든지 다 들어갈 수 있으니까요. 님의 경우는 레코드를 이용해서 태그에다 넣어주시면 되겠네요...
type
PMyRec = ^TMyRec;
TMyRec = record
Index1, Index2: Integer;
end;
procedure TForm1.OnMyTimer(Sender: TObject);
var
aa : integer;
begin
aa := PMyRec(TTimer(Sender).Tag).Index1;
// 처리 내용
end;
procedure TForm1.FormCreate(Sender: TObject);
var
i : integer;
P: PMyRec;
begin
for i := 1 to 8 do
begin
MyTimer[i] := TTimer.Create(Self);
MyTimer[i].OnTimer := OnMyTimer;
New(P);
P.Index1 := i;
P.Index := 1;
MyTimer[i].Tag := Integer(P);
// 이객체 해제할때 Tag에 설정된 포인터를 먼저 해제해주세요...
// Dispose(PMyRec(MyTimer[i].Tag));
end;
end;
초보여염 wrote:
> 타이머를 동적 생성한 후 이벤트에 인자를 넣는 건데
> 타이머의 번호(index1)와 구별인자(index2)를 이벤트내에서 처리 할려구합니다.
> 꼭 타이머는 아니더라도(다른 VCL의 경우도) 방법이 있는지요?
> Componet의 태그를 쓰는 방법은 알고 있는거염...
> 고수님... 꼭 도와주세여..... ㅠ.ㅠ;;
>
> 밑에 처럼 해봤는데 전혀 안되더라구여...
>
> public
> procedure OnMyTimer(Sender: TObject; index1, index2 : integer);
>
> var
> MyTimer : Array[1..8] of TTimer;
> implementation
>
> procedure TForm1.OnMyTimer(Sender: TObject; index1, index2 : integer);
> var
> aa : integer;
> begin
> aa := index1;
> // 처리 내용
> end;
>
> procedure TForm1.FormCreate(Sender: TObject);
> var
> i : integer;
> begin
> for i := 1 to 8 do
> begin
> MyTimer[i] := TTimer.Create(Self);
> MyTimer[i].OnTimer := OnMyTimer(MyTimer[i],i,1);
> end;
> end;
>