delphi2007 教程

delphi2007 教程

首页 新随笔 联系 聚合 管理
  1013 Posts :: 0 Stories :: 28 Comments :: 0 Trackbacks
用过TWEBBROWSER的请进来,高分求救 VCL组件开发及应用
http://www.delphi2007.net/DelphiVCL/html/delphi_20061222111048196.html
用TWEBBROWSER做了一个浏览器,调用本机的两个网页文件  
  网页中有大量的JAVESCRIP脚本,  
  在来回切换时出现三种错误,这三种错误不经常出,但总有,  
        一个是MSHTML。DLL异常  
   
    二是弹出一个对话框,标题为“实时调试”  
     最上方是:“请选择一个调试器”  
     下面是一个列表框,标题为“可能的调试器”  
     列表框中有一个“新实例Mircosoft   script   editor”  
            下方是一个复选框,内容是将当前的调试器设为默认调试器,对后最下方是,是否希望用选定的调试器进行调试然后是按钮  
   
        三是 出现一个对话框,从英文看是告诉我在调试状态下  
   
    第一个问题是测试时在所有机器上都会出现  
    第二个问题和第三个问题,在有的机器上不出现,  
    第三个问题出现后,会直接关闭程序  
   
  开发环境 D7 XP   
  网页   javascrip,加MP7是由工具软件生成的  
  请高手解决

关注中...

//   有没有初始化Ole?    
  //   全当路过  
   
  uses   ActiveX;  
   
  //...  
   
  initialization  
      OleInitialize(nil);  
   
  finalization  
      OleUninitialize;  
   
  end.  
 

http://support.microsoft.com/default.aspx/kb/261003

伴水清清和蒋晟,我其它的问题都是看你们的回复解决的,就想着你们了  
  我试试先,不过那个网页我看来之后,还没有找到思路,可否详细点

自顶一下

webBrowser.Silent:=true?

剪兄也来了,还没看到小河  
  剪兄,我这个不是脚本运行错误的问题,  
 

:)

up

再顶一下,帮顶有分啊

再次声明,帮顶有分

没有看到你的网页脚本  
  你叫大家怎么帮你调试?  
   
  至少你要提供一个调试环境

问题没有解决,但已经两天了,我决定结贴,感谢捧场的朋友  
  我将再开一贴,继续求助,  
  伴水兄  
  我的代码是这样  
          我有一个单元,定义了一个类,这个类从数据库中读出参数,生成实例,然后在界面上生成按钮  
          每个按钮对应这个类的一个实例  
          点击一个按钮则会打开相应的网页,这些网页都是存在本地的,是由软件生成的MP7课件  
          包含视频和PPT,并由网页中的javaSCRIPt   脚本负责视频和PPT的播放,同步问题,  
          网页内的脚本是由软件生成的,而且单独播放一个是没有问题的  
          问题都出在我不停的按按钮的时候,也就是我打开一个网页之后,马上又打开一个网页  
          我想是WEBBROWSER调入了新的网页,但原网页中的脚本没有释放干净,或者还在运行,造成了冲突,所以出现了这个问题  
          主要代码如下,  
          unit   define;  
   
  //  
            TPowerCtl   =   class(TObject)  
      private  
          but:   Boolean;  
          Fobj:   Tcontrol;  
          FCtlInfo:   TCtlFieldINfo;  
          oldx:   Integer;  
          oldy:   Integer;  
          procedure   objClick(Sender:Tobject);  
          procedure   objenter(sender:Tobject);  
   
  procedure   TPowerCtl.objClick(Sender:Tobject);  
  var  
      i:integer;  
      doc:IHTMLDOCUMENT2;  
  //   temp:integer;  
  begin  
    //   temp:=0;  
      For   i:=0   to   TControl(sender).Parent.ControlCount-1   do  
      begin  
   
          if   TControl(TControl(sender).Parent.Controls[i]).Tag   =9999   then     //网页控件的TAG  
          begin  
              while     TWebBrowser(TControl(sender).Parent.Controls[i]).ReadyState   <>4     do  
                Application.ProcessMessages;//   完成后再执行  
   
              TWebBrowser(TControl(sender).Parent.Controls[i]).Stop   ;  
   
              doc:=TWebBrowser(TControl(sender).Parent.Controls[i]).document   as   IhtmlDOCument2;  
              doc.close   ;  
              doc.clear   ;  
   
              TWebBrowser(TControl(sender).Parent.Controls[i]).Navigate(MainPath+self.FCtlInfo.FINdexPage);         //调入相应的网页  
   
              doc._Release;  
          end;  
      end;  
   
   
  end;  
   
  由主窗体调用这个单元,  
  在这个单元的初始化事件中初始化了OLE控件//这点我有疑问,到底在那初始化好  
                                                                    //     WEB是办面上固定的,是否应当写在PRJ的初始化事件  
                                                                    //或是主窗体单元的初始化事件中  
   
           
           
 

各位兄台,如果有办法,请到新贴中回复,解决一定再给分,谢谢

posted on 2008-11-18 14:27 delphi2007 阅读(156) 评论(0)  编辑 收藏 引用
只有注册用户登录后才能发表评论。