怎样把数据库内的数据生成动态网页?(100分)

  • 主题发起人 主题发起人 xiaojun2000
  • 开始时间 开始时间
X

xiaojun2000

Unregistered / Unconfirmed
GUEST, unregistred user!
我想动态的生成TWebBrowser的Html文件的内容,
而不是把一个已有的.htm文件赋值给它。应当怎样办?

我试过以下代码:
procedure Tform1.ShowHTML(src:string;iebrw:TEmbeddedWB);
var
vv: Variant;
HTMLDocument: IHTMLDocument2;
tmpStr,tmpfilepath:string;
// listStr:Tstringlist;
begin
//直接写到浏览器里。
vv := VarArrayCreate([0,0],varVariant);
vv[0] := src;
try
ieBrw.Navigate('about:blank');
HTMLDocument := iebrw.Document as IHTMLDocument2;
HTMLDocument.write(PSafeArray(TVarData(vv).VArray));
HTMLDocument.charset:= 'gb2312';
HTMLDocument.close;
except
statusbar1.Panels[0].Text:='写浏览器出错';
end;
end;

结果都是跳至<<<写浏览器出错>>>这行,这是为什么呢?

谢谢
 
没有富翁愿意帮忙吗?
 
cakk.delphibbs.com里面左轻候的浏览器里面有的,可以直接拿来借鉴。
http://202.96.70.228/cakk/delphi/delphibbs/reader/re21ado.zip
 
谢谢,我正在测试
 
现在左轻候的浏览器是3.0的了,
在delphi.mychangshu.com下最新版的吧。
 
hbezwwl:

新版的我也已经下载了,一样没法编译。
 
....
type
THtml = class
Htmstring : Tstringlist;
yourfield : string;
public
procedure creatHtml(yourfield : string);
constructor create;
destructor destory;
end;
var
Html : Thtml;
implementation
uses mainform ;
constructor Thtml.create;
begin
inherited;
Htmstring := TStringlist.Create;
end;
destructor Thtml.destory;
begin
inherited;
Htmstring.free;
end;

procedure Thtml.creathtml(yourfield: string);

begin
Htmstring.Clear;

with Htmstring do
begin
add('<html><head></head><BODY BGCOLOR="#FFFFFF">');
add('<table width="100%" border="0" align="center"> <tr>');
add('<td width="6%" height="193"> </td>');
add('<td width="100%%" height="600">');
add(yourfield);
add('</td></tr></table></body></html>');
end;
filename :=ExtractFilepath(paramstr(0))+ 'html.html';//html.html为一个空的html文件
Htmstring.SaveToFile(filename);
end;
end.
在要显示html时:
html := THtml.create;
html.creatHtml(yourfield );
webbrowser1.Navigate(Html.filename);
 
bronzestar:

但是我不想另存文件,能否有其它方法呢?
 
现在左轻候的浏览器是3.0的了,
在delphi.mychangshu.com下最新版的吧。

编译的错误位置:

vv := VarArrayCreate([0, 0], varVariant);
 
procedure sethtml(const webbrowser:
twebbrowser; const html: string);
var
stream: istream;
hhtmltext: hglobal;
psi: ipersiststreaminit;
begin
if not assigned(webbrowser.document) then exit;

hhtmltext := globalalloc(gptr, length(html) + 1);
if 0 = hhtmltext then raiselastwin32error;

copymemory(pointer(hhtmltext),
pchar(html), length(html));

olecheck(createstreamonhglobal
(hhtmltext, true, stream));
try
olecheck(webbrowser.document.
queryinterface(ipersiststreaminit, psi));
try
olecheck(psi.initnew);
olecheck(psi.load(stream));
finally
psi := nil;
end;
finally
stream := nil;
end;
end;

 
D_LOVER:
在此行没法编译,我是否少了什么东东呢?
olecheck(createstreamonhglobal(hhtmltext, true, stream));

谢谢
 
此行运行出错:

HTMLDocument.write(PSafeArray(TVarData(vv).VArray))

左轻候的也有这个问题

谢谢
 
我自己已经解决这个问题了,在于没有初始化。

谢谢各位的帮助
 
Uses
Activex,axctrls,comobj
 
D_LOVER:

Uses
Activex,axctrls,comobj

问题不在这儿,应在窗体打开时就初始化;
 
后退
顶部