Q&A

  • ActiveX, 파라미터...?? 꼭 봐주세요 ㅜ.ㅜ
<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) ; )...
파라메타를 읽을 때도 있고, 못읽을 때도 있습니다.
새로 프로젝트를 생성해서 폼 생성만 한 뒤 파라메타를 읽으면 잘 되다가...
새로 소스를 추가하면 안됩니다. 한번 안되면 소스를 폼 생성만 하도록 수정을 한 뒤에도(처음 잘 될때의 소스) 파라메타를 읽지 못합니다.
왜 그런건지... 되면 되는거도 안되면 안되어야 할텐데... 왜 파라메타를 읽다가 못읽는지요...
꼭 답변 부탁드립니다. 이것때문에 며칠째 고생입니다.
감사합니다.
1  COMMENTS
  • Profile
    Mr. Ziker 2002.02.26 01:44
    안녕하세욤!


    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에서 지정된
    값을 의미 합니다.

    그럼! 즐코 되세요!