如何用鼠标拖动页面中的连接就能打开一个新窗口浏览?像myie2那样。
还有如何获取收藏夹中的内容并添加到mainmenu中?谢谢!!!
还有如何获取收藏夹中的内容并添加到mainmenu中?谢谢!!!
解决方案 »
- 有没有支持PNG的button,有hot 、down 、up加载PNG图片的功能?
- [TTS相关]如何使用科大讯飞TTS(iReader2.0)开发简单文语转换项目
- 显示图片一部分!
- Delphi6中如何得知一个函数或过程在哪些地方被调用了?
- 在Dbgrid中增加记录~~~~~~~~~~``
- 請問關于delphi5.0與access2000數據庫的使用BDE方式的連接問題﹐爭議很多...
- 格式化字符串
- ★★★讨论一下,一个编程高手,掌握英语是否必须★★★
- midas高手请进?????
- 初学Delphi,请高手开书单,或传授点心得,多谢
- 求购无时间限制的录音程序原代码
- 把今天的日期NOW,DATE插入到TABLE表的“日期”字段,用INSERT INTO 该怎样写?
THTMLDocumentEvent = procedure (Sender: TObject; const pEvtObj:
IHTMLEventObj) of object; THTMLDocument = class(TOleServer)
private
FIntf: IHTMLDocument2;
FOnClick: THTMLDocumentEvent;
FOnMouseMove: THTMLDocumentEvent;
function GetDefaultInterface: IHTMLDocument2;
protected
procedure InitServerData; override;
procedure InvokeEvent(DispID: TDispID; var Params: TVariantArray); override;
public
constructor Create(AOwner: TComponent); override;
destructor Destroy; override;
procedure Connect; override;
procedure ConnectTo(svrIntf: IHTMLDocument2);
procedure Disconnect; override;
property DefaultInterface: IHTMLDocument2 read GetDefaultInterface;
published
property OnClick: THTMLDocumentEvent read FOnClick write FOnClick;
property OnMouseMove: THTMLDocumentEvent read FOnMouseMove write
FOnMouseMove;
end;{
******************************** THTMLDocument *********************************
}
constructor THTMLDocument.Create(AOwner: TComponent);
begin
inherited Create(AOwner);
end;destructor THTMLDocument.Destroy;
begin
inherited Destroy;
end;procedure THTMLDocument.Connect;
var
punk: IUnknown;
begin
if FIntf = nil then
begin
punk := GetServer;
ConnectEvents(punk);
FIntf:= punk as IHTMLDocument2;
end;
end;procedure THTMLDocument.ConnectTo(svrIntf: IHTMLDocument2);
begin
Disconnect;
FIntf := svrIntf;
ConnectEvents(FIntf);
end;procedure THTMLDocument.Disconnect;
begin
if FIntf <> nil then
begin
DisconnectEvents(FIntf);
FIntf := nil;
end;
end;function THTMLDocument.GetDefaultInterface: IHTMLDocument2;
begin
if FIntf = nil then
Connect;
Assert(FIntf <> nil, 'DefaultInterface is NULL. Component is not connected to Server. You must call ''Connect'' or ''ConnectTo'' before this operation');
Result := FIntf;
end;procedure THTMLDocument.InitServerData;
const
CServerData: TServerData = (
ClassID: '{25336920-03F9-11CF-8FD0-00AA00686F13}';
IntfIID: '{332C4425-26CB-11D0-B483-00C04FD90119}';
EventIID: '{3050F613-98B5-11CF-BB82-00AA00BDCE0B}';
LicenseKey: nil;
Version: 500);
begin
ServerData := @CServerData;
end;procedure THTMLDocument.InvokeEvent(DispID: TDispID; var Params: TVariantArray);
var
pDisp: IDispatch;
pEventObj: IHTMLEventObj;
begin
if DispID = -1 then Exit;
pDisp := Params[0];
if pDisp.QueryInterface(IHTMLEventObj, pEventObj) <> 0 then Exit;
case DispID of
-1: Exit; // DISPID_UNKNOWN
-600: if Assigned(FOnClick) then
FOnClick(Self, pEventObj);
-606: if Assigned(FOnMouseMove) then
FOnMouseMove(Self, pEventObj);
end;
end;
这个类在我自己的计算机上调试都正常(一台是 2000,一台是 XP,IE都是 6.0),而且已经在程序里使用了。有个网友说在 IE 5.0 不行,会提示出错,确实我自己没有试过。关于这个类的编写,大家可以定义 TWebBrowser,其中的类:TInternetExplorer,就很类似,我就是参考这个写出来的。使用办法就是(我已经把这个类编译成组件了):WebBrowser1.Navigate('about:blank');
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
HTMLDocument1.ConnectTo(ITHMLDocument2(WebBrowser1.Document));
//注:只要连接一次就可以了,以后就会把所有的事件都关联上了。