컴포넌트 동적생성 후 Event에서 동적으로 생성한 컴포넌트별로 다른 동작을 하려면...?
현재 Aysnc Pro를 써서 Serial 통신 프로그램을 개발하고 있습니다.
그런데 Serial 통신 Component를 동적으로 생성하거든요.
거기서 특정 Event를 Procedure랑 연결을 했는데 Event에 연결할 수 있는 Procedule는 파라메터가 있으면 안되더라구요.
그런데 각 컴포넌트마다 같은 Event에서 다르게 동작해야 할 필요가 있습니다.
어떻게 처리를 해야 하는지...
좋은 방법 있으면 알려주시기 바랍니다.
Procedure ....(Var Sender : TObject....)
begin
case TvaComm(Sender).tag of
....
end;
위의 예처럼 Object마다 구별(원하는)할 수 있는 정보가 있다면
이런식으로 분기하면 되겠고요
만약 그것 가지고는 알 수 가 없다면
TvaCustomComm = class(TvaComm)
Private
Data : Pointer;
end;
이런식으로 TvaComm에서 상속해서 원하는 구별할수 있는
Property를 넣어서 만들어서 쓰면 되겠죠
예);
Type
TMachineInfo = record
Name : string;
Serial : stirng;
.....
end;
TvaCustomComm = class(TvaComm)
Private
Data : Pointer;
end;
Implement
...
Procedure TForm1.SetSerialinfo;
var i : integer;
begin
for i := 0 to high(mMachine ) do
begin
with TvaCustomComm.Create do
begin
data := @mMachine[i];
someevent := UserEvent;
........
end;
end;
end;
이벤트 처리할때
Procedure TForm1.UserEvent(Var Sender : TObject....)
begin
if TMachineInfo(TvaComm(Sender).data^).name = 'some' then
....
end;
현재 Aysnc Pro를 써서 Serial 통신 프로그램을 개발하고 있습니다. 그런데 Serial 통신 Component를 동적으로 생성하거든요. 거기서 특정 Event를 Procedure랑 연결을 했는데 Event에 연결할 수 있는 Procedule는 파라메터가 있으면 안되...
이중철
•
2004.08.26 02:34
Procedure ....(Var Sender : TObject....)
begin
case TvaComm(Sender).tag of
&nbs...
begin
case TvaComm(Sender).tag of
....
end;
위의 예처럼 Object마다 구별(원하는)할 수 있는 정보가 있다면
이런식으로 분기하면 되겠고요
만약 그것 가지고는 알 수 가 없다면
TvaCustomComm = class(TvaComm)
Private
Data : Pointer;
end;
이런식으로 TvaComm에서 상속해서 원하는 구별할수 있는
Property를 넣어서 만들어서 쓰면 되겠죠
예);
Type
TMachineInfo = record
Name : string;
Serial : stirng;
.....
end;
TvaCustomComm = class(TvaComm)
Private
Data : Pointer;
end;
TForm1 = class(TForm)
....
Private
mMachine : array of TMachineInfo;
end;
Implement
...
Procedure TForm1.SetSerialinfo;
var i : integer;
begin
for i := 0 to high(mMachine ) do
begin
with TvaCustomComm.Create do
begin
data := @mMachine[i];
someevent := UserEvent;
........
end;
end;
end;
이벤트 처리할때
Procedure TForm1.UserEvent(Var Sender : TObject....)
begin
if TMachineInfo(TvaComm(Sender).data^).name = 'some' then
....
end;