<HTML>
<OBJECT
classid="clsid:4935FEFC-966B-4CFC-B7AC-F12E03F4AE29"
codebase="AAAAA.ocx#version=1,0,15,0"
width=894
height=575
align=center
hspace=0
vspace=0
>
<PARAM NAME="ServerDBIP" VALUE="111.111.111.111">
<PARAM NAME="Login" VALUE="aaa">
<PARAM NAME="DatabaseName" VALUE="bbb">
</OBJECT>
</HTML>
위와 같이 htm 소스를 수정을 했구요...
Type Library를 이용해서 Property 등록을 했습니다.
ActiveXForm을 Create하는 함수에서는 파라메타를 못읽더군요.
폼 생성과 파라메타를 읽는 타이밍 문제라는 얘기가 있어서,
폼 생성시 타이머를 돌렸습니다. 2초 뒤에 파라메타를 읽었는데,( ShowMessage(FServerDBIP) ; )...
파라메타를 읽을 때도 있고, 못읽을 때도 있습니다.
새로 프로젝트를 생성해서 폼 생성만 한 뒤 파라메타를 읽으면 잘 되다가...
새로 소스를 추가하면 안됩니다. 한번 안되면 소스를 폼 생성만 하도록 수정을 한 뒤에도(처음 잘 될때의 소스) 파라메타를 읽지 못합니다.
왜 그런건지... 되면 되는거도 안되면 안되어야 할텐데... 왜 파라메타를 읽다가 못읽는지요...
꼭 답변 부탁드립니다. 이것때문에 며칠째 고생입니다.
감사합니다.
Form.Create에서 가져 오셔도 되던가욤?? 그게 되는진 모르겠지만,
다음과 같은 방식을 사용해 보십시오..
일단..
타입라이브러리에서 추가 해 주신다음 등록을 해 주셨는지요..
타입라이브러리에서 추가 후에 윗줄 버튼들중에 보시면
Register Type Library 버튼이 있습니다. 이 버튼을 클릭 해 주시면
등록 되었다는 메세지와 함께
본문에 다음과 같이 추가 됩니다.
== 예제로 참고 하세요 ==
unit ActiveFormImpl1;
{$WARN SYMBOL_PLATFORM OFF}
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ActiveX, AxCtrls, ActiveFormProj1_TLB, StdVcl;
type
TActiveFormX = class(TActiveForm, IActiveFormX)
private
{ Private declarations }
FEvents: IActiveFormXEvents;
...
...
...
...
protected
{ Protected declarations }
procedure DefinePropertyPages(DefinePropertyPage: TDefinePropertyPage); override;
procedure EventSinkChanged(const EventSink: IUnknown); override;
...
...
...
...
function Get_Property1: Integer; safecall;
procedure Set_Property1(Value: Integer); safecall;
===================================================================
바로 윗 부분에 다음과 같이 추가 되고, 소스코드에 역시 펑션과, 프로시져
가 자동으로 생성이 됩니다.
이 펑션과 프로시져를 이용하셔서 파라메터 값을 가져 올 수 있습니다.
가져오는 예는 다음과 같습니다.
function TActiveFormX.Get_Property1:WideString;
begin
Result:= csMain.Address;
end;
procedure TActiveFormX.Set_Property1(Const Value:WideString);
begin
csMain.Address:= Value;
If csMain.Port <> 0 then csMain.Open;
end;
참고로 procedure TActiveFormX.Set_Property1(Const Value:WideString);
프로시져에서 데이터를 가져 올 수 있습니다. 저기 보이시는
Value 가 파라메터 값을 가지고 있는거죠. 즉 html param에서 지정된
값을 의미 합니다.
그럼! 즐코 되세요!