Q&A

  • 동적생성한 클레스의 이벤트가 안먹습니다...
TDAQSocket = class(TClientSocket)
private
  DAQ_ID: integer;
published
  Property OnRecEnd : TOnRecEndEvent  Read FOnRecEnd write FOnRecEnd;
end; ----> 클라이언트 소켓을 상속받아 만든 클래스입니다.
recend라는 이벤트는 메인 폼에서 정의 했습니다.

TfrmMain = class(TForm)
private
  daq: array of TDAQSocket     // 동적으로 생성해서 씁니다.
  procedure OnDAQRecEnd(Sender: TObject; RecCount : integer);
end;
..
procedure TfrmMain.Create(Sender: TObject);
var
  i: integer
begin
  setlength(daq, 10)
  for i = 0 to 9 do
  begin
     daq = TDAQSocket.create(self);
     daq.OnRecEnd = OnDAQRecEnd;
     daq.DAQ_ID = i;
  end;
end;

procedure TfrmMain.OnDAQRecEnd(Sender: TObject; RecCount : integer);
begin
  try
    grdDataInfo.Cells[0, 3] := intTostr(TDAQSocket(Sender).DAQ_ID);
    if TDAQSocket(Sender).Dio_Data = 1 then
      SetData(TAdvStringGrid(FindComponent('BK2020Item_'+IntToStr(TDAQSocket(Sender).DAQ_ID+1))), TDAQSocket(Sender));
  except
  end;
end;   // recend프로시져 구현부입니다.

프로시져에 보면 스트링 그리드도 동적으로 생성했습니다. daq라는 걸 동적생성 시키면 그 숫자 만큼 그리드도 생성됩니다. 그럼 각각의 daq의 recend이벤트가 발생하면 메인의 프로시져로 넘어옵니다. 그럼 그 DAQ_ID에 해당하는 그리드에 데이터를 넣는 것인데 그런데 제가 생성할때 DAQ_ID라는 곳에 각각 구분하기 위한 인덱스를 넣었는데 그게 항상 0만 넘어 옵니다.
이유를 몰라 여기에 올려 봅니다..
1  COMMENTS
  • Profile
    최용일 2004.10.12 07:46
    안녕하세요. 최용일입니다.

    폼의 OnCreate이벤트가 이상한데요. 컴파일 자체가 안될거 같은데...

    아래와 같이 해야 될거 같네요...

    procedure TfrmMain.Create(Sender: TObject);
    var
        i: integer
    begin
        setlength(daq, 10)
        for i = 0 to 9 do
        begin
            daq[i] := TDAQSocket.create(self);
            daq[i].OnRecEnd = OnDAQRecEnd;
            daq[i].DAQ_ID = i;
        end;
    end;

    ^^ 항상 즐코하세요...

    • 강인규
      2004.10.12 19:29
      일반적인 웹호스팅을 받고 계신다면 대개의 경우 보안이나 서버부하의 문제로 포트를 막아놓기 때문에 ...
    • 석주현
      2004.10.12 08:22
      zeos 컴포넌트를 쓰면 쉽게 MySQL을 쓰실 수 있습니다. Zeos 예제에 MySQL 쿼리 결과 보는 프로그램이 ...
    • 우소
    • 2004.10.12 01:56
    • 2 COMMENTS
    • /
    • 0 LIKES
    • 남양원
      2004.10.12 04:58
      자동 설정 가능합니다... 레지스트리 HKEY_LOCAL_MACHINE 밑에서 System\CurrentcontrolSet\Services...
    • Galaxy
      2004.10.12 02:07
      안녕하세요 수고 많습니다. 이렇게 하면 안되나요 제어판에 생긴 윈도우즈 방화벽에서 '에외 탭' 에 ...
    • 김재영
    • 2004.10.12 01:50
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 최용일
      2004.10.12 07:46
      안녕하세요. 최용일입니다. 폼의 OnCreate이벤트가 이상한데요. 컴파일 자체가 안될거 같은데... 아...
    • Galaxy
    • 2004.10.12 00:00
    • 3 COMMENTS
    • /
    • 0 LIKES
    • ㉳㉥ㅗ㉣ㅐ㉧ㅛ
      2004.10.12 00:35
      Chart1.SeriesList.Series[0].Add( 값 , 문자열, clTeeColor ); 하니까 되는데요
    • Galaxy
      2004.10.12 00:56
      답변에 감사 드립니다. 제가 실수을 했습니다. aCompCode가 배열 입니다. 아래 부분의 이전 과정에서 ...
    • ㉳㉥ㅗ㉣ㅐ㉧ㅛ
      2004.10.12 02:12
      배열을 선언할때 Array[1..10] of String; 라구 하면 0부터가 아니구 1부터 선언이 됩니...
    • 정동욱
      2004.10.11 23:55
      1.종이에 도장을 찍어 .스케너,또는 카메라로 bmp파일 을 만든다. 2.Image.Canvas.StretchDraw(...) ...
    • ㉳㉥ㅗ㉣ㅐ㉧ㅛ
      2004.10.12 00:10
      그렇게 하니까 Image에 도장이 보이는데요... 전 걸 도장과 같이 bmp로 저장을 해서 화일변환을 한...
    • 정동욱
      2004.10.12 00:19
      서식 그리기. .... .... Image.Canvas.StretchDraw(...도장); Image.Picture.SaveToFile(f); 이렇...
    • ㉳㉥ㅗ㉣ㅐ㉧ㅛ
      2004.10.12 00:28
      ^^; Image1.Picture.SaveToFile( '2.bmp' ); 이렇게 테스트 했답니다...
    • ㉳㉥ㅗ㉣ㅐ㉧ㅛ
      2004.10.12 00:39
      애구 StretchDraw할때 그냥 Image를 하나 더 써서 했드만 안되네요... var    rect ...
    • 곽충열
      2004.10.14 02:52
      자답이네요. JVCL의 JvGifAnimate 컴포넌트 때문에 그랬네요. 그걸 없애니 되는군요. -_- 그래서 그...
    • 최용일
      2004.10.11 20:33
      안녕하세요. 최용일입니다. 콤보박스의 OnDropDown 이벤트에 아래와 같이 코딩해보세요... procedure...
    • 김재진
      2004.10.11 22:26
      답변갑사합니다. ~ 그런데 코딩한거랑 안한거랑 차이가 없이 스크롤은 움직이지 않네요...
    • 최용일
      2004.10.12 06:17
      안녕하세요. 최용일입니다. 아~ 실수했네요... 그냥 테스트 안하고 올린거라서.... 아래와 같이 해보...
    • 김재진
      2004.10.12 17:24
    • 최용일
      2004.10.11 19:15
      안녕하세요. 최용일입니다. 델파이 5가 제대로 설치가 안되어 있는거 같네요... 델파이 씨디에서 다...
    • 장철만
      2004.10.13 10:07
      감사합니다. 최용길님!  답변내용으로 처리하니 잘됩니다. 감사합니다.
    • 묵호
    • 2004.10.11 18:30
    • 1 COMMENTS
    • /
    • 0 LIKES
    • 정동욱
      2004.10.12 00:04
      1) 델파이는 이미지의 가장자리 색상을 TransparantColor 로 자동 결정 합니다.    고로 ...
    • 최용일
      2004.10.11 19:20
      안녕하세요. 최용일입니다. 차일드윈도우에 같은 Window Class를 가진 컨트롤은 핸들 찾기가 애매한 경...
    • 김범진
      2007.10.12 03:44
      클래스 아톰이 아니고 윈도우 핸들일 겁니다. 이 거로 부르면 용일 님 설명처럼 쉽게 구해집니다. 근데 ...
    • 이규하
    • 2004.10.09 18:38
    • 5 COMMENTS
    • /
    • 0 LIKES
    • 조규춘
      2004.10.10 11:31
      기냥 의견인디요... 이런식으로 하면 어떨까해서요.. (130600 - 060000) / 5 이 값이 바루...
    • 이규하
      2004.10.11 19:30
      그게 10 진수랑, 12 진수랑 차이 때문에요 ... 값이 틀려요 .. 그래서 String 을 시간을 변경 해서 값을 ...
    • 조규춘
      2004.10.11 20:44
      악~~~~~ 급한 맘에 기냥 십진수로 착각해 버렸네요.. ^^ 지송 꾸벅.. 위에 서기원님이 답변한 내용 대로 ...
    • 서기원
      2004.10.11 20:25
      EncodeDate, MinutesBetween을 이용하시는 건 어떨까요? eDate에 130600이 들어있고, sDate에 060000이 ...
    • 이규하
      2004.10.12 10:40
      될것 같다는 냄새가 물씬 남니다..^^; 감샤 함다 .. MinutesBetween(EncodeTime(StrToInt(copy(Base_Time,...
    • 이준희
      2004.10.09 23:05
      안녕하세요. 특정메모리주소라 함은 어떤 것을 말씀하시나요? 가상메모리주소는 아니겠죠? SerialPort...
    • 채팅
      2004.10.09 17:18
      win2000, winxp에서는 직접 드라이버를 제작하지 않는 한 다른 어플이 사용하는 메모리에 대한 접근이 불가...
    • 전명현
    • 2004.10.09 02:40
    • 1 COMMENTS
    • /
    • 0 LIKES
    • ㉳㉥ㅗ㉣ㅐ㉧ㅛ
      2004.10.11 18:12
      건 Test란 데이타베이스 알리어스가 설정되어 있지 않아서 생기는 에러입니다. DB 종류가 먼지는 ...
    • ㉳㉥ㅗ㉣ㅐ㉧ㅛ
      2004.10.09 01:01
      애구...Image로 해서 하니까 되네요....
    • 석주현
      2004.10.09 00:01
      SendMessage(ComboBox1.Handle,CB_SHOWDROPDOWN,true,0); SendMessage(ComboBox1.Handle,CB_SETTOPINDEX...
    • 김재진
      2004.10.11 20:16
      ..
    • 서기원
      2004.10.08 23:27
      질문을 정확하게 이해할 수가 없는데요?..^^;; 어쨌든 제가 이해한 바로는 콤보박스내의 문자열이 긴 경...
    • 김재진
      2004.10.11 20:15