보내주신 소스로 아래와 같이 만들었는데도
[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.