不需要太复杂的,功能简单没关系,只要基本没bug,能实现基本功能即可,
要delphi的,
分不够可以另开帖子再加

解决方案 »

  1.   

    我做了一个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
    .
      

  2.   

    只有子窗体一次还发不完。//Child.pas
    unit Child;interfaceuses
      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;implementationuses
      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.
      

  3.   

    我想要一份可以吗?[email protected]谢谢!