Q&A

  • 컴포넌트 동적생성 후 Event에서 동적으로 생성한 컴포넌트별로 다른 동작을 하려면...?
현재 Aysnc Pro를 써서 Serial 통신 프로그램을 개발하고 있습니다.
그런데 Serial 통신 Component를 동적으로 생성하거든요.
거기서 특정 Event를 Procedure랑 연결을 했는데 Event에 연결할 수 있는 Procedule는 파라메터가 있으면 안되더라구요.
그런데 각 컴포넌트마다 같은 Event에서 다르게 동작해야 할 필요가 있습니다.
어떻게 처리를 해야 하는지...
좋은 방법 있으면 알려주시기 바랍니다.
1  COMMENTS
  • Profile
    이중철 2004.08.26 02:34
    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;

    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;