memo???(100分)

  • 主题发起人 主题发起人 swj
  • 开始时间 开始时间
S

swj

Unregistered / Unconfirmed
GUEST, unregistred user!
我用memo 控件作了一个类似记事本的东西,但只能打开文本文件。打开htm
文件时,打开的是原脚本语言,即html的标记语言都出来了,怎样在memo中
打开txt,htm文件,但不需作成浏览器(打开htm时不需链接)
像readbook,e-book一样
 
Memo好象不能打开Html文件。你可以使用Internet控件组中的WebBrowser控件实现.
因为它也能显示TXT文件
 
使用Memo需要自己编程,或者使用第三方控件。
 
对呀,memo 连颜色,字体大小,类型都没有,
怎么能看html,
用 richedit 也得编程才行,相当于一个小的浏览器。
 
怎样编程实现,
另外,在memo中用finddialog如何查找
 
你看看新的电子小说阅读器的源代码,那里有处理Html标记的程序
你删除了< 和 >之间的东西,然后识别一些特殊的字符串就行了
<>里的东西与网页显示部分的东西无关,或者说是关系比较小
可以说是不可见内容(就象不可见控件一样)
 
其实用richedit也只能实现极少的功能,也就限于font, color, background
等等,就是处理html 标记。(实际上,还有很多东西要考虑)
比方说遇到<font size = 10>skdfjk</font>, 就把<>之间的东西过滤掉,
把SelStart := s 所在的位置,SelLength := 6(根据</font>的位置,
得自己找) SelAttributes.size := 10; 就可以了。

当然这只是一个极其简单的例子,具体的得自己慢慢做。

finddialog 只是提供了一个界面。

在 finddialog 的 onFind 事件中:

aRichEdit.FindText(FindDialog1.FindText);

大概就这样,只是手头没有delphi, 没法测试。
delphi 中的例子好好看看。
 
把html变成普通文本还是很简单的:
s := memo1.text;
while pos('<',s) <> 0 do
begin
sels := pos('<',s);
sele := pos('>',s);
if sele = 0 then break;{没有: '>'}
if sels > sele then break;{这种情况: '>...<'}
delete(s,sels,sele-sels+1);{删除: '<...>'}
end;
memo1.text := s;
 
变成普通文本是简单,但要保持其字体的色泽、大小、位置,却需用RICHEDIT和一对
HTML文本的少量研究和编程实践。
 
有没有什么别的好控件?
 
推荐一个HTML语法解析的控件。
http://vcl.vclxx.com/DELPHI/D32FREE/HTMLPRSR.ZIP
我试过了,比较好用,用其中的TextBetween属性可以轻松的得到HTML中的文本。

如果只是在MEMO中显示HTML文件,直接转为文本即可。
 
多人接受答案了。
 
我觉得你可以使用文件改名的方法来实现,
主要是达到所要求的目的就可以了,
把HTML文件改名为TXT即可打开,
虽然注意不好,但是可以解决一时之急!
 
后退
顶部