반응형

1. Delphi에서 WebBrowser을 이용하여 popup을 띄우기


//새창을 띄울경우 원하는폼에 팝업을 띄울수 있다.

procedure TfrmMain.WebBrowser1NewWindow2(ASender: TObject;

  var ppDisp: IDispatch; var Cancel: WordBool);

var

     Form2: TForm1;

begin

     Form2 := TfrmNotice.Create( nil );

     ppDisp := Form2.WebBrowser1.DefaultInterface;

     Form2.Show;

end;



1-1. Delphi에서 WebBrowser을 이용하여 popup을 띄운후 닫히는 시점알기


   1) HTML 에서  window.close();를 찾아내어 

     window.status='close';를 적용한다.


     ...

     .....

    <script language="javascript">

      function XXXXXXXX
     {
         window.status='close';
         window.close();
     }
    </script>

     .....

     ...


   2) Delphi 에서 WebBrowser 의  StatusTextChange event에 작성한다.

procedure TfrmNotice.WebBrowser1StatusTextChange(ASender: TObject;  const Text: WideString);

var

     sWindowResult : string;

begin

     if sWindowResult = 'close' then

     begin

Close

end;

end;


 cf)  특정pc에서 작동이 잘 안된다..

      아래 WebBrowser1WindowClosing에다 작업하는것이 훨씬 수월함



1-2. Delphi에서 WebBrowser을 이용하여 popup을 띄운후 닫히는 시점알기


procedure TfrmZipHelp.WebBrowser1WindowClosing(ASender: TObject;IsChildWindow: WordBool; var Cancel: WordBool);

begin

//주소 자료 끌어오는 코딩 작업한다.

end;



ps. WebBrowser1 강제죵료하기

procedure ParentNotify(var Msg: TMessage); message WM_PARENTNOTIFY;


implementation of message handler:


procedure TMyForm.ParentNotify(Var Msg: TMessage);

begin

  if (msg.WParamLo = WM_DESTROY) and (msg.LParam = WebBrowser1.Handle) then close;

end;


--------------------------------------------------------------------------------------

2. Delphi에서 WebBrowser을 이용하여 popup을 띄우기


   1) html에서 아래와 같이 name 설정이 되어 있어야 한다.

<input type="button" name='btn' value="주소검색" onclick="goPopup();">


   2) Delphi 에서 WebBrowser에서  name='btn' 로 설정된 값을 찾아 click event를 실행한다.

procedure TfrmMain.WebBrowser1DocumentComplete(ASender: TObject;

  const pDisp: IDispatch; const URL: OleVariant);

var

     i : integer;

begin

    for i := 0 to WebBrowser1.OleObject.document.body.getelementsbytagname('INPUT').Length - 1 do

    begin

        if (WebBrowser1.OleObject.document.body.getelementsbytagname('INPUT').Item(i).NAME = 'btn') then           begin

            WebBrowser1.OleObject.document.body.getelementsbytagname('INPUT').Item(i).Click;

            break;

        end;

    end;

end;


반응형

+ Recent posts