님... 답변 감사합니다...
컴파일은 되는데, Register ActiveX Server 메뉴에서 에러가 나네요...
메뉴에서
ActiveX Library -> Active Form
다이얼로그에서
CoClass Name 항목에 aaaaa 넣고,
Include version Information 체크하고,
OK 버튼 클릭.
저장할 때
aaaaa.ridl, aaaaamain.pas, aaaaa_TBL.pas 저장하고,
aaaaaprj.dproj 프로젝트 파일 저장. (aaaaa.dproj 프로젝트 파일명으로는 저장이 안되네요.)
전체 컴파일 하면 잘 됩니다.
Register ActiveX Server 메뉴 실행하면 '지정되지 않은 오류입니다.' 에러 뜨네요...
음...
뭘 잘못했는 지 모르겠네요...
다시 답변 주시면 정말 감사하겠습니다. ^^;;
박지훈.임프 님이 쓰신 글 :
: Register ActiveX Server 메뉴는 델파이 버전마다 이름이 조금씩 다를 뿐이고 그 메뉴가 맞습니다.
: 그런데 그걸 실행했을 때 에러가 난다는 건 액티브X 등록이 실패했다는 건데요. 그건 아예 지금 개발중이신 액티브X 자체가 문제가 있다는 거니까 TOLEControl 클래스가 있고 없고 이전에 더 큰 문제가 소스에 있다는 얘기겠지요. 컴파일은 되시는 건지요? 개발중인 액티브X 소스의 현 상태에서 문제부터 찾으셔야 할 것 같습니다.
:
:
: ji 님이 쓰신 글 :
: : 님... 답변 감사합니다.
: : 근데...
: : 님께서 주신 embarcadero에 가서 보니... 2010 버전과 또 다르네요...
: :
: : Click Run | Register Server
: : 라고 되어 있는데, 2010에서는 Register ActiveX Server 메뉴가 있고,
: : 이 메뉴 실행했더니 '지정되지 않은 오류' 메시지가 뜨네요...
: :
: : Click Component | Import Component
: : 라고 되어 있는것도... 2010에서는 없는건지 못찾는건지... ㅠ_ㅠ
: :
: : 음...
: : 어떻게 해야될 지 모르겠네요.
: : Type Library에서 함수를 만들어서 함수 외형이 코딩되어 있지 않고...
: : 일일이 모두 코딩을 해줘야 되는건지 모르겠네요...
: :
: :
: :
: : 박지훈.임프 님이 쓰신 글 :
: : : 델파이 2009 버전부터 액티브X 컨트롤 코드의 구현 방식이 바뀌었습니다. 2007 버전까지는 TOLEControl 래퍼 클래스를 썼었는데 2009 버전부터는 안쓰죠. 구현 방식이 바뀐 후로 여러 장점들이 생겼는데, 간혹 이 TOLEControl 래퍼 클래스에 코딩을 추가해야 하는 경우가 있어서 곤란하기도 합니다. 이 문제에 대해 엠바카데로에서 대안을 내놓겠다고 했었는데, 아직 해결이 안되고 있습니다.
: : :
: : : 대신 약간의 꽁수를 내놨는데요. 작업중인 프로젝트로 생성한 액티브X를 임포트하라는 것입니다. 그러면 다시 xxx_TLB.pas 파일이 생성되죠. 델파이 2009 이후 버전에서 새 액티브X를 생성할 때의 xxx_TLB.pas에는 TOLEControl 래퍼가 없지만, 기존의 액티브X를 임포트했을 때의 xxx_TLB.pas에는 이전 버전들과 마찬가지로 TOLEControl 래퍼 구현이 추가되기 때문입니다.
: : :
: : : 그러니까, 임포트할 때 생성되는 xxx_TLB.pas 파일을 원래의 xxx_TLB.pas 파일에 덮어씌우시면 됩니다. 두 파일의 차이는 TOLEControl 래퍼 클래스의 존재 여부 뿐입니다.
: : :
: : : 이 방법은 제가 알아낸 것은 아니고, 버그 리포트 69080에 대해 엠바카데로 QA팀에서 알려준 방법입니다.
: : :
http://qc.embarcadero.com/wc/qcmain.aspx?d=69080
: : :
: : : 그럼...
: : :
: : :
: : : ji 님이 쓰신 글 :
: : : : delphi2010으로 ocx를 처음 만들어봅니다.
: : : : 메뉴에서 ActiveX Library 선택하고, Active Form을 선택해서 프로젝트 생성(프로젝트명:PpsTo)은 했습니다.
: : : :
: : : : delphi7에서 _TBL.pas 파일을 보면
: : : : GUID가 생성된 부분(PpsTo = dispinterface 라고 코딩되어 있는 부분) 아래에
: : : : OLE Control Proxy class declaration 이라는 주석이 보이고,
: : : : TPpsToOnKeyPres = proceduere(ASender...) of object;
: : : : 라고 코딩이 되어 있습니다.
: : : : 그리고, type library에서 function을 추가하면
: : : : 이 부분에 추가된 함수가 코딩이 되는 것 같은데,
: : : :
: : : : delphi2010에서는
: : : : OLE Control Proxy class declaration 이라는 주석 부분이 아예 보이지 않습니다.
: : : : PpsTo = dispinterface 라고 코딩되어 있는 부분 아래에 바로
: : : :
: : : : implementation
: : : : uses ComObj;
: : : : end.
: : : :
: : : : 이라고 코딩되어 있습니다.
: : : : InitControlData, CreateControl 등의 함수도 보이지 않습니다.
: : : :
: : : : 원래 그런건지... 아니면 뭔가 잘못 만든건지... 모르겠습니다.
: : : : 어떻게 ocx을 생성해야 되는지
: : : : 답변 부탁드립니다.
: : : : 감사합니다.