求多窗口浏览器源代码,只要能实现最基本的功能即可。

shirong 2003-04-12 11:15:40
不需要太复杂的,功能简单没关系,只要基本没bug,能实现基本功能即可,
要delphi的,
分不够可以另开帖子再加
...全文
71 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
gdljf 2003-04-17
  • 打赏
  • 举报
回复
我想要一份可以吗?

gdljf@21cn.com

谢谢!
DavidBone 2003-04-17
  • 打赏
  • 举报
回复
up
短歌如风 2003-04-12
  • 打赏
  • 举报
回复
只有子窗体一次还发不完。

//Child.pas
unit Child;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, OleCtrls, SHDocVw, StdCtrls, ExtCtrls,ActiveX, SyncObjs;

type
TChildForm = class(TForm)
pnlURL: TPanel;
cmbURL: TComboBox;
Browser: TWebBrowser;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormCreate(Sender: TObject);
procedure BrowserBeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
procedure BrowserNewWindow2(Sender: TObject; var ppDisp: IDispatch;
var Cancel: WordBool);
procedure cmbURLKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure BrowserStatusTextChange(Sender: TObject;
const Text: WideString);
procedure BrowserTitleChange(Sender: TObject; const Text: WideString);
procedure BrowserProgressChange(Sender: TObject; Progress,
ProgressMax: Integer);
procedure BrowserCommandStateChange(Sender: TObject; Command: Integer;
Enable: WordBool);
procedure FormActivate(Sender: TObject);
private
{ Private declarations }
Title:String;
public
BackEnabled:Boolean;
ForwardEnabled:Boolean;
StopEnabled:Boolean;
FOleInPlaceActiveObject: IOleInPlaceActiveObject;
procedure GotoURL(AURL:String);
{ Public declarations }
end;

var
ChildForm: TChildForm;

implementation

uses
Main;
{$R *.dfm}

procedure TChildForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Action := caFree;
MainForm.DelChild(self);
if MainForm.MDIChildCount <= 1 then
TChildForm.Create(Mainform);
end;
function BrowserProc(hwndMe:HWND;msg,wParam,lParam:Cardinal):Cardinal;stdcall;
begin
if msg = WM_DESTROY then
PostMessage(Windows.GetParent(hwndMe),WM_CLOSE,0,0);
Result := CallWindowProc(Pointer(GetProp(hwndMe,'OldProc')),hwndMe,msg,wParam,lParam);
end;
procedure TChildForm.FormCreate(Sender: TObject);
begin
MainForm.AddChild(self);
cmbURL.Width:=pnlURL.Width;
StopEnabled := false;
BackEnabled := false;
ForwardEnabled := false;
Title := Caption;
SetProp(Browser.Handle,'OldProc',GetWindowLong(Browser.Handle,GWL_WNDPROC));
SetWindowLong(Browser.Handle,GWL_WNDPROC,Cardinal(@BrowserProc));
Browser.Navigate('about:blank');
end;

procedure TChildForm.GotoURL(AURL: String);
begin
Browser.Navigate(AURL);
end;

procedure TChildForm.BrowserBeforeNavigate2(Sender: TObject;
const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
Headers: OleVariant; var Cancel: WordBool);
begin
Cancel := not MainForm.IsURLAllowed(URL);
end;

procedure TChildForm.BrowserNewWindow2(Sender: TObject;
var ppDisp: IDispatch; var Cancel: WordBool);
begin
ppDisp := TChildForm.Create(MainForm).Browser.Application;
end;

procedure TChildForm.cmbURLKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
var
doc:OleVariant;
begin
if Key = VK_RETURN then
begin
if cmbURL.Items.IndexOf(cmbURL.Text) = -1 then
cmbURL.Items.Add(cmbURL.Text);
if CompareText(Copy(cmbURL.Text,1,11),'javascript:')= 0 then
begin
if Browser.Document <> nil then
begin
doc := Browser.Document;
doc.parentWindow.execScript(Copy(cmbURL.Text,12,32767));
end;
end
else
GotoURL(cmbURL.Text);
end;
end;

procedure TChildForm.BrowserStatusTextChange(Sender: TObject;
const Text: WideString);
begin
if MainForm.ActiveMDIChild = self then
MainForm.stbMain.SimpleText := text
end;

procedure TChildForm.BrowserTitleChange(Sender: TObject;
const Text: WideString);
begin
Title := Text;
Caption := Text;
MainForm.ChildCaption(self);
if Browser.Document <> nil then
cmbURL.Text := Browser.LocationURL;
end;

procedure TChildForm.BrowserProgressChange(Sender: TObject; Progress,
ProgressMax: Integer);
begin
if ProgressMax <> 0 then
begin
if Progress > ProgressMax then
Caption := Title +':Waiting...'
else
Caption := Title +':' + IntToStr(Progress * 100 div ProgressMax) +'%';
end
else
begin
Caption := Title;
end;
end;


procedure TChildForm.BrowserCommandStateChange(Sender: TObject;
Command: Integer; Enable: WordBool);
begin
case Command of
-1: StopEnabled := Enable;
1 : ForwardEnabled := Enable;
2 : BackEnabled := Enable;
end;
end;

procedure TChildForm.FormActivate(Sender: TObject);
begin
MainForm.ChildActive(self);
end;

end.
短歌如风 2003-04-12
  • 打赏
  • 举报
回复
我做了一个MDI的浏览程序,下面是子窗体代码。
由于文件比较多,只贴出了子窗体的代码。你要的话我把全部代码通过Email发给你好了。
子窗体:
//Child.dfm
object ChildForm: TChildForm
Left = 349
Top = 250
Width = 483
Height = 383
ActiveControl = Browser
AlphaBlend = True
AlphaBlendValue = 128
Caption = '新网页'
Color = clBtnFace
TransparentColor = True
TransparentColorValue = clBtnFace
Font.Charset = GB2312_CHARSET
Font.Color = clWindowText
Font.Height = -12
Font.Name = '宋体'
Font.Style = []
FormStyle = fsMDIChild
Icon.Data = {
0000010002002020100000000000E80200002600000010101000000000002801
00000E0300002800000020000000400000000100040000000000800200000000
0000000000000000000000000000000000000000800000800000008080008000
0000800080008080000080808000C0C0C0000000FF0000FF000000FFFF00FF00
0000FF00FF00FFFF0000FFFFFF00000000000000000000000000000000000000
0000033333333000000000000000000000033BBBBBBBBBB33300000000000000
003FFBB3333300003333000000000000003BF33BBBBBBB330033000000000000
00033FFB33300003330000000000000000000333FBBB33300000000000000000
0000000030333000000000000000000000000000000300000000000000000000
000000033300000000000000000000000000033BB33333300000000000000000
00033BB3000000033000000000000000003BBB00556665500330000000000000
03FB307776555666603300000000000000330778768865665503300000000000
0000782D7EEEE6556650300000000000000672D2277ED8E65757030000000000
00062D222EEDEE22657703000000000000DEEDEEEEDEDE222577503000000000
00DEDE7EEDEEED228656503000000000006DEE7EDEEEE2D2D265603000000000
006DAEEDFEFEE22D22856030000000000067AEDF7FEFE2D27285603000000000
00DADE8EF7FEFD227E66503300000000006AADEFEF7F7EEAA77650B300000000
0006A7EEFEF7FEAAAD8603B3000000000006DEDEE77F77AADA760B3000000000
00006EE7DEEEEEDDA870BB3000000000000006DEEDEEEDEA7703B30000000000
00000066EEDDDEE6603FB30000000000000000006D666DD0003F300000000000
0000000000000000000300000000FF8003FFFE0000FFFC00007FFC00007FFC00
007FFE0000FFFF8003FFFFF01FFFFFFC7FFFFFE01FFFFF8007FFFE0001FFFC00
00FFF800007FFC00003FFE00003FFE00001FFE00001FFC00000FFC00000FFC00
000FFC00000FFC00000FFC00000FFC00000FFE00000FFE00001FFF00001FFF80
003FFFC0003FFFF01C7FFFFFFEFF280000001000000020000000010004000000
0000C00000000000000000000000000000000000000000000000000080000080
00000080800080000000800080008080000080808000C0C0C0000000FF0000FF
000000FFFF00FF000000FF00FF00FFFF0000FFFFFF0000000000000000000003
FB3333330000000033BB33000000000000333000000000000003000000000000
03333000000000003B30033000000003B06660330000000302EE8D033000000D
EEDED270300000067EEDE56030000006DEDFD67083000006ADFFE5D0B3000000
6EDEED60B300000006EDD60B30000000008668330000F00F0000E0070000F00F
0000FC3F0000FE7F0000F81F0000F00F0000E0070000E0030000E0030000E003
0000E0030000E0030000F0030000F8070000FC0F0000}
KeyPreview = True
OldCreateOrder = False
Position = poDefault
Visible = True
WindowState = wsMaximized
OnActivate = FormActivate
OnClose = FormClose
OnCreate = FormCreate
PixelsPerInch = 96
TextHeight = 12
object pnlURL: TPanel
Left = 0
Top = 0
Width = 475
Height = 20
Align = alTop
AutoSize = True
BevelOuter = bvNone
Locked = True
TabOrder = 0
DesignSize = (
475
20)
object cmbURL: TComboBox
Left = 0
Top = 0
Width = 475
Height = 20
Anchors = [akLeft, akTop, akRight]
ItemHeight = 12
TabOrder = 0
OnKeyDown = cmbURLKeyDown
end
end
object Browser: TWebBrowser
Left = 0
Top = 20
Width = 475
Height = 336
Align = alClient
DragMode = dmAutomatic
TabOrder = 1
OnStatusTextChange = BrowserStatusTextChange
OnProgressChange = BrowserProgressChange
OnCommandStateChange = BrowserCommandStateChange
OnTitleChange = BrowserTitleChange
OnBeforeNavigate2 = BrowserBeforeNavigate2
OnNewWindow2 = BrowserNewWindow2
ControlData = {
4C00000018310000BA2200000000000000000000000000000000000000000000
000000004C000000000000000000000001000000E0D057007335CF11AE690800
2B2E126208000000000000004C0000000114020000000000C000000000000046
8000000000000000000000000000000000000000000000000000000000000000
00000000000000000100000000000000000000000000000000000000}
end
end
.

5,388

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧