Delphi Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
델파이 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
FreePascal/Lazarus
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
델마당
볼랜드포럼 광고 모집

델파이 Q&A
Delphi Programming Q&A
[9964] [재질문]류종택님-webbrowser 엔터키문제로 한달내내 머리가 지끈......
신철우 [schw] 1675 읽음    2004-12-10 16:48
보내주신 소스로 아래와 같이 만들었는데도
[Fatal Error]:File not found 'OLE2.dcu'라고 나오면서 안되네요.
그래서 OLE2를 없애면
[private]
    FOleInPlaceActiveObject: IOleInPlaceActiveObject;
에서 에러나고......

component에 추가해야 할 것이 없는지요?, 좀 도와주세요.
부탁합니다.

[소스]
unit HTraining_U;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls, ComCtrls, DB, MemDS, DBAccess,
  MSAccess, DBGrids, ToolEdit, DBCtrls, Buttons, Label3dB,
  CurrEdit, DBTables, RXCtrls, Printers, RxGIF, Psock,
  OleCtrls, SHDocVw, OLE2;

type
  THTraining_F = class(TForm)
    WebBrowser1: TWebBrowser;

    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure WebBrowser1BeforeNavigate2(Sender: TObject;
      const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
      Headers: OleVariant; var Cancel: WordBool);
    procedure WebBrowser1NavigateComplete2(Sender: TObject;
      const pDisp: IDispatch; var URL: OleVariant);

  private
    { Private declarations }

    FWebHandle : hwnd;
    FOleInPlaceActiveObject: IOleInPlaceActiveObject;
    Procedure MessageLoop(var Msg:TMsg; var Handled:Boolean);

  public
    { Public declarations }

  end;

var
  HTraining_F: THTraining_F;

implementation

uses Common_U, Main_U;

{$R *.dfm}

procedure THTraining_F.MessageLoop(var Msg: TMsg; var Handled: Boolean);
const
  DialogKeys : Set of Byte = [VK_RETURN];
  MSJVMClassName = 'MSAWT_Comp_Class';  // for Java Applets
var
iOIPAO   : IOleInPlaceActiveObject;
Dispatch : IDispatch;
Str      : String;
begin
  // WebBrowser의 도큐멘트 표시 부분의 핸들이 아닌 경우에는 무시
  if Msg.hwnd <> FWebHandle then Exit;

  if ((Msg.Message = WM_KEYDOWN) or (Msg.Message = WM_KEYUP)) and (Msg.wParam in DialogKeys) then
  begin
    Handled:= IsDialogMessage(WebBrowser1.Handle, msg) = True;
    SetLength(Str, MAX_PATH);
    GetClassName(Msg.hwnd, PChar(Str), MAX_PATH);
    SetLength (Str, StrLen (PChar(Str)));
    if (Msg.wParam = VK_DELETE) and (Str = MSJVMClassName) then
    else
      if Handled then
        if FOleInPlaceActiveObject <> Nil then
          FOleInPlaceActiveObject.TranslateAccelerator(Msg)
        else
        begin
          Dispatch := IDispatch(WebBrowser1.Application);
          if Dispatch <> Nil then
          begin
            Dispatch.QueryInterface(IID_IOleInPlaceActiveObject, iOIPAO);
            if iOIPAO <> Nil then
              FOleInPlaceActiveObject := iOIPAO;
          end;
        end;
  end else Handled:= False;
end;

procedure THTraining_F.FormCreate(Sender: TObject);
begin
  self.Left := 125; self.top := 150;

  gp_sysdb_date();

  FWebHandle := 0;
  Application.OnMessage:= MessageLoop;
  WebBrowser1.Navigate('http://www.irumi.ac/intro_update.php?ams_id=' + IntToStr(gv_ams_id));
end;

procedure THTraining_F.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Action := caFree;
end;

procedure THTraining_F.WebBrowser1BeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
//
end;

procedure THTraining_F.WebBrowser1NavigateComplete2(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  if FWebHandle = 0 then Begin
    FWebHandle:= FindWindowEx(WebBrowser1.Handle, 0, 'Shell DocObject View', Nil);
    FWebHandle:= FindWindowEx(FWebHandle, 0, 'Internet Explorer_Server', Nil);
  end;
end;

Initialization
  OleInitialize(Nil);

Finalization
  OleUninitialize;

end.

+ -

관련 글 리스트
9964 [재질문]류종택님-webbrowser 엔터키문제로 한달내내 머리가 지끈...... 신철우 1675 2004/12/10
9965     Re:[재질문]류종택님-webbrowser 엔터키문제로 한달내내 머리가 지끈...... 류종택 2769 2004/12/10
9968         Re:Re:[재질문]류종택님-감사합니다. 신철우 1150 2004/12/13
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.