想用D7做个电子书,这个电子书类似于chm文档,我想把很多htm文件合成到一个exe里,工具栏上有“前进”“后退”“刷新”“查找”“更改字体”“更换背景”等功能按钮,记录文件关闭时位置,下次打开直接定位到关闭之前的位置。
问题是:不知可否实现?如何编程实现将很多htm文件合成到一个exe里?需要用到那些控件?其它的功能如何实现?请高手不吝指教。
问题是:不知可否实现?如何编程实现将很多htm文件合成到一个exe里?需要用到那些控件?其它的功能如何实现?请高手不吝指教。
解决方案 »
- 为什么结果不相同,两个字符串?
- 散分
- DBGridEh 如何加一个类似复选框的列
- 有谁用delphi中的spcomm做过串口通讯?有的话,给我发一份,顺便问一下,接受超时如何处理,还有如何控制串口的开与关,急!!!!!!!!!!!
- 手手问题:两个数据库做一个表的数据同步
- 转换大小写的小问题,有分
- 请问再程序中怎么让Edit中显示的字符串换行???急急急!!
- 用Excel直接编写程序好,还是再用一种其它数据库代替Excel好?
- delphi7的安装序列号是什么啊?送分……
- 轻松得到100分!!!!!!!!!
- 帮忙看一下,哪里错了?
- 请高手指点,idFtpServer做ftp服务器,怎么获取目前连接的client的ip地址信息?
如果htm文件有很多图片就不行了吧?
其实也行,就是把图片也编译到资源文件里 : )
1.TWebBrowser可以实现定位到htm中的某一行吗?因为我想退出时记忆上次阅读的位置,再一次打开的时候,直接定位。
2.因为我想只生成一个exe文件和一个设置文件,能不能不生成临时的htm文件,而直接再TWebBrowser中显示出来?就是类似于CHM或者专门生成exe电子书的那种。
扩展名是什么.mht的那种文件不知道行不行
//======================
MHT叫“web单一文件”。顾名思义,就是把网页中包含得图片,CSS文件以及HTML文件全部放到一个MHT文件里面。而且浏览器可以直接读取得
以下引用:
《《《《《《《《《《《
do2008:程序运行后,把exe的资源,用TMemoryStrem读取出来,然后另存为一个临时的html文件,再用TWebBrowser打开显示即可;
》》》》》》》》》》》
有个问题:我不想生成任何临时html文件,全在内存中处理可以实现吗?还可以用TWebBrowser打开显示吗?
帖子我看了,但是我复制到程序中,有出错提示:
[Error] Unit1.pas(95): Undeclared identifier: 'IPersistStreamInit'
[Error] Unit1.pas(137): Undeclared identifier: 'IStream'
请教如何定义IPersistStreamInit、IStream?以下引用那段代码:
//get html 源码
function GetHTMLCode(WB: IWebbrowser2; ACode: TStrings): Boolean;
var
ps: IPersistStreamInit;
s: string;
ss: TStringStream;
sa: IStream;
begin
ps := WB.document as IPersistStreamInit;
s := '';
ss := TStringStream.Create(s);
try
sa := TStreamAdapter.Create(ss, soReference) as IStream;
Result := Succeeded(ps.Save(sa, Bool(True)));
if Result then ACode.Add(ss.Datastring);
finally
ss.Free;
end;
end;//webbrowser 载入html源码
procedure WB_LoadHTML(WebBrowser: TWebBrowser; HTMLCode: string);
var
sl: TStringList;
ms: TMemoryStream;
begin
if Assigned(WebBrowser.Document) then
begin
sl := TStringList.Create;
try
ms := TMemoryStream.Create;
try
sl.Text := HTMLCode;
sl.SaveToStream(ms);
ms.Seek(0, 0);
(WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
finally
ms.Free;
end;
finally
sl.Free;
end;
end;
end;
ActiveX;
//引用这个单元就可以了