웹에서의 버튼 조작을 델파이로 갖어와서 델파이에서 처리를 하는데 TWebBrowser 의
StatusTextchange 이벤트를 이용하는 것과
웹에 있는 Javascript function 을 실행하는 것입니다.
홈페이지에는 아래와 같은 스크립트가 들어 있습니다.
<head> <script language="javascript"> function closewin(num){ window.status='close'; window.status=''; window.close(); } </script> </head> ....... <from> <input id="idtext" name="idtext" type="text" /> <input 0="" id="idimage" name="idimahe" onclick="closewin()" src="images/images.jpg" style="cursor: hand;" type="image" /> <input id="idsubmit" name="idsubmit" type="submit" /> </from>폼에 WebBrowser 와 Editor, button 3개를 올려 놓고
procedure TForm4.Button1Click(Sender: TObject); var iDoc: IHTMLDocument2; iWin: iHTMLwindow2; ifunc: string; begin WebBrowser1.Document.QueryInterface(IHTMLDocument2, iDoc); WebBrowser1.Document.QueryInterface(IHTMLWindow2, iWin); ifunc:= 'closewin()'; try iwin.execScript(ifunc, 'JavaScript'); finally end; end; procedure TForm4.Button2Click(Sender: TObject); begin WebBrowser1.Navigate(http://localhost/test.html'); end; procedure TForm4.Button3Click(Sender: TObject); var Obj,Doc : OleVariant; begin Obj:= 0; // 필요하면 IDispatch(TTTestCode.Create); 방법으로 Dispatch인터페이스로 형변환한다... // HTML Script는 Dispatch인터페이스만 지원한다. // Script 인터페이스를 얻고... Doc:=IHTMLDocument2(WebBrowser1.Document).Script; // Script의 SetObject함수를 호출한다...(이함수는 HTML의 JavaScript함수이다) Doc.closewin(obj); end; procedure TForm4.WebBrowser1StatusTextChange(ASender: TObject; const Text: WideString); var iStr: string; begin iStr:= Text; if istr= 'close' then begin close; end; end;
웹에서 이미지를 크릭하면 프로그램이 종료합니다.
프로그램에서 버튼3를 크릭하면 웹에 있는 스크립트를 실행하고, 즉 이미지를 크릭한 것과 같은 현상, 그 결과로서 프로그램을 종료 합니다.
다른 스크립트를 실행 시킬 수 있고, 다른 동작을 할수 있겠지요.
예를 들어 특정 버튼의 결과에 특정 디비에서 자료를 읽어와 Html을 만들고 그웹을 뿌려줄 수 있겠지요.