델파이 폴더 밑에 Source 폴더에서 OLE2.pas를 찾아보세요.
그 파일을 Lib 폴더에 복사하시면 됩니다.
신철우 님이 쓰신 글 :
: 보내주신 소스로 아래와 같이 만들었는데도
: [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.