2011년 3월 15일 화요일

delphi 2007에서 Web Deployed 활성화 시키기

Delphi 2005부터인가 Web Deployed가 사라 졌습니다.
진장. Web Deployed가 사라져서 HTML을 일일이 만들어야 합니다.

찾아보니. http://cc.codegear.com/Item.aspx?id=23942 에 올라 왔더군요.
Web Deployed를 할수 있는 BPL 입니다. 첨부파일로 따로 첨부 하였습니다.

등록은 Component->InstallComponent를 선택해서 Add를 눌러 다운 받아 압축을 푼 BPL을 선택하고 설치합니다.

그리고 Porject메뉴에 Web Deployed가 추가 되었음을 확인 할 수 있습니다.

=====================================================================

ActiveX 만드는 방법은 아래와 같습니다.

자 준비가 됬으니 이제 Delphi 2007에서 ActiveX Form을 만들어 봅시다.
우선, 메뉴에서 New->Other를 선택 합니다.


위 그림처럼 ActiveX Library를 선택 합니다.
다시 메뉴의 New->Other를 선택하고 ActiveX를 보면 아래 그림처럼 ActiveX Form을 선택 가능합니다.

조금 많이 귀찮습니다. 왜냐고 묻지 마십시요. 저도 자세한 사항은 안읽어 봐서 모릅니다. 솔직히 귀찮습니다.
하여간,ActiveX Form을 만들고 나면, 아래 화면이 나타납니다.

Delphi7등에서는 View->Type Library등을 봐야 나타나는 화면이 먼저 뜹니다. 약간의 베려입니다.
ActiveX를 만들때 자바나 HTML Script등에서 값을 주고 받지 않으려면 이부분은 넘어갑니다.
자세한 부분은 후반부에 넣겠습니다.

일단 화면에 ActiveFormImpl 을 선택 합니다.
전 Button, Label, Memo를 올려두고 저장을 합니다. 반드시 저장하는것은 아니지만 되도록 저장하는것이 좋습니다. Web Deployed에 의해 HTML이 만들어지는 폴더도 정해야 하므로 되도록 저장하시면 좋습니다.
저장을 하시고 컴파일을 합니다. 당연히 OCX가 만들어 지므로 실행은 안됩니다.

단 여기서 TLB.pas 화일이 안만들어 지시는 분들이 간혹 있습니다.
이런분들은 TLB를 만들어 주면 되므로..


그림처럼 Register Type Library를 실행하면, TLB화일이 만들어집니다.

이제 잘 만들어졌는지 내용을 확인하는 작업이 남았습니다.
우선 Project->Web Deployed Option을 선택하고, 나타나는 화면에서 HTML저장 폴더와 OCX가 있는 위치를 지정합니다.
Target URL은 대충 입력하셔도 됩니다.
여기서 주의할것은 이 BPL을 만드신분이 뭔가 의도적으로 한일인지 모르겠지만, Browse를 누르면, 폴더 창이 아니라 화일 선택 창이 나타납니다. 모 전 디렉토리를 적어 넣었습니다. 화일명을 넣어도 되는지는 확인 안해 봤습니다.


자 이제 Project의 Web Deployed를 눌러 HTML을 생성합니다.
이제 만들어진 HTML을 더블클릭하면, 짜짠.. But 그러나 ActiveX는 안나타나고 x 표시만 나타납니다.
ActivceX가 등록되지 않았기 때문입니다.
Run->Register ActiveX Server를 눌러 만들어진 OCX를 Register에 등록합니다.
반대로 UnRegister는 등록을 해제합니다.


다시 짜잔.. HTML을 눌러보면, ActiveX가 잘 나타납니다.
그런데, 원하시는 크기가 아니죠? HTML을 적당히 수정하시면 됩니다.

자 이제 다 만들어지고 잘되었는데, 한번 수정하고 HTML을 눌러 일일이 실행하시기 귀찮죠?
델마당에 가시면 홍환민님이 적어주신 내용이 있습니다.
"델파이에서 ActiveX 디버깅하기" 로 검색하시면 됩니다.
대충 정리하면, 아래 그림처럼 하시면 됩니다.
Projec->Option에서 Include Remote Debug Symbols를 선택하고 OK누르 신뒤 Run->Parameter를 두번째그림처럼 입력 하시면 됩니다.



자...이제 HTML에서 ActiveX로 데이타를 전달하는 방법을 알아보도록 하겠습니다.

우선 View->Type Library를 선택하시거나, TBL Tab을 선택 합니다.
여기서는 간단하게 일단 Property를 만들고 값을 넘기는 부분을 보도록 하겠습니다.
좌측에 이름을 입력합니다. 원하시는 이름으로 입력합니다.
우측에서 Type을 선택 합니다.
long은 Integer, BSTR 은 WideString, Double 은 Double, DATE 는 TDateTime형등으로 변환된다.
나는 long또는 BSTR을 주로 사용한다.
일단 프로퍼티를 만들면, 소스가 생성된다. 하단에 위치한 소스에 적당히
function TActiveFormX.Get_Sample_001: WideString;
begin


end;
procedure TActiveFormX.Set_Sample_001(const Value: WideString);
begin

end;

위와 같이 생성된 곳에 적당히 코딩을 하시고...
HTML에서는 아래와 같이 호출합니다.

vspace=0
id="Test_ActiveX" <-- 이름을 반드시 지정합니다.
>
</OBJECT>
</p>
<Script>
Test_ActiveX.Sample001 = "http://www.f1esc.com"
</Script>
위처럼 수정하시고 실행하시면 sample001이 전달 됩니다.
참고 되시기 바랍니다.

댓글 없음:

댓글 쓰기