用TWebBrowser嘛!
procedure TForm1.FormCreate(Sender: TObject);
var
   Path:String;
begin
   Path:=ExtractFilePath(Application.ExeName)+'index.htm';
   WebBrowser1.Navigate(WideString(Path));
end;

解决方案 »

  1.   

    谢谢你,但是,我想你还没有明白我的意思。
    我的要求是,这些html代码要嵌入到我的exe文件之中发布,而不是作为一个外部文件而在运行时读取。
      

  2.   

    把任何外部资源加入到exe文件中的最简单方法,是把这个资源作为流防到.dfm文件中。在《delphi4开发指南》和《Delphi5开发人员大全》中有一个TDdgWaveFile控件,稍微修改一下可以把任何资源放到.dfm中,例如wave,midi,bitmap,Text等等。
    你如果需要的话,我可以把该控件和实现方法告诉你。
      

  3.   

    谢谢hyper2k,如果能告诉我实现细节,那就太好了。我觉得也是这样的过程:
    开发期间,将html文件作为资源读入到dfm之中,运行时,将这个资源提取出来,送给WebBrowser对象。但是,具体如何实现呢?
      

  4.   

    先把html编译成res文件在DELPHI中用{$your.res}然后用流来显示.
      

  5.   

    那就像wzs(兔子)说的做成资源嘛!
      

  6.   

    那就像wzs(兔子)说的做成资源
      

  7.   

    各位高人,请你们说得详细点。
    我觉得目前主要的难点是两点:
    首先,如何将一个html文件做成资源,合并到dfm或dcu之中?Delphi和VC的资源编辑器,好像只能处理位图、字符串等。这个问题,还是麻烦hyper2k,请把那个什么控件和实现方法给我,好吗?
    还有,如何在运行时,让WebBrowser控件打开这个资源?因为,该控件按常规,是打开url或者磁盘文件的。如何用资源来代替文件?
      

  8.   

    哎,这么个问题,问了很多遍了,为什么不搜索一下呢?
    很简单,先把Html文件作为一个资源编译进入可执行文件即可。
    具体步骤:
    1.建立一个资源描述文件:resource.rc;//用文本编辑器编辑就可以了
    内容为:htmlfile RT_RCDATA Filename.html //请相应更改文件名
    2.在命令行下用brcc32 resource.rc生成resource.res文件
    3.在Project文件中用{$ resource.res}添加资源。
    4.重新生成html文件代码:
    var
    htmlres:tresourcestream;
    begin
    htmlres:=TResourceStream.Create(hinstance,'SourceCode','RT_RCDATA');//Load 
    htmlres.SaveToFile(path+OUTFILENAME); //输入文件,建立临时文件
    htmlres.Free;
    end;
    明白了吗?
    实际上,这是建立一个临时文件,然后再Navigate这个临时文件即可。
    程序退出的时候,删除临时文件即可。
      

  9.   

    谢谢Kingron,俺要的就是这样的解答。
      

  10.   

    问题已经解决,谢谢Kingron等各位高手。但是,我还是有疑问。
    我在form中嵌入一个WebBrowser之后,编译没有问题。但是一旦执行,就出来一个报错对话框,说什么未执行CoInitialize。一开始我是一头雾水。测试着开一个空的Project,放一个WebBrowser,就没这个错了,功能很正常呀?
    于是查msdn,到是查到了。说是程序调用ole功能之前,必须先调用这个函数。于是死马当活马医,直接在Application.CreateForm之前,直接调用这个函数。编译不通过,说该函数未定义。于是再参照msdn的申明,写成delphi的格式,终于通过,WebBrowser也正常了。后来参照msdn的建议,改为CoInitializeEx,具体是这样的:
    function CoInitializeEx(pvReserved:Longint;dwCoInit:Longword):HRESULT;
      stdcall;external 'ole32.dll' name 'CoInitializeEx';所以,哪位能告诉我,为什么一般的程序不用调用该函数,而我这个却需要?CoInitializeEx的本质是什么?