![]() |
String in TWebBrowser laden???
Hallo!!!
Ich habe in einem String die selbsgenerierte Quellcode einer Web-Seite. Kann ich die Quellcode irgendwie direkt aus dem Sttring in eine TWebBrowser laden, ohne diese Code in einer Datei auf der Festplatte zu speichern? Danke! |
Re: String in TWebBrowser laden???
Soweit ich weiss leider nicht.
Aber du könntest eine Temporäre Datei erstellen, die nach dem Ladevorgang gelöscht wird. |
Re: String in TWebBrowser laden???
hi,
also ich habe es so mal so gelöst: 1. per webbrowser1.navigate('about:blank'); eine leere seite aufrufen 2. mit folgendem code HTML in das dokument hinzufügen:
Delphi-Quellcode:
Aenogym
procedure AddHTML(HTML: string);
var range: IHTMLTxtRange; begin Range := ((WebBrowser1.Document as IHTMLDocument2).body as IHTMLBodyElement).createTextRange; Range.collapse(False); Range.pasteHTML(html); //folgendes ist optional. es bewirkt, dass automatisch nach unten gescrollt wird OleVariant(WebBrowser1.Document as IHTMLDocument2).Body.ScrollTop := MaxInt; end; edit: prozedurheader geändert - war zu spezifisch ;) |
Re: String in TWebBrowser laden???
Danke. Und was muss ich usen, um auf IHTMLTxtRange zu kommen???
|
Re: String in TWebBrowser laden???
Hab mal irgendwo folgenden Quelltext gefunden :
Delphi-Quellcode:
Mußt nur Deinen String in nen Stream schreiben, das wirste aber sicher allein hinbekommen :-)
procedure LoadStream(WebBrowser: TWebBrowser; Stream: TStream);
var PersistStreamInit: IPersistStreamInit; StreamAdapter: IStream; MemoryStream: TMemoryStream; begin WebBrowser.Navigate('about:blank'); repeat Application.ProcessMessages; Sleep(0); until WebBrowser.ReadyState = READYSTATE_COMPLETE; if WebBrowser.Document.QueryInterface(IPersistStreamInit, PersistStreamInit) = S_OK then begin if PersistStreamInit.InitNew = S_OK then begin MemoryStream:= TMemoryStream.Create; try MemoryStream.CopyFrom(Stream, 0); MemoryStream.Position:= 0; except MemoryStream.Free; raise; end; StreamAdapter:= TStreamAdapter.Create(MemoryStream, soOwned); PersistStreamInit.Load(StreamAdapter); end; end; end; |
Re: String in TWebBrowser laden???
Bei mir läuft das so auch ganz gut.
Delphi-Quellcode:
If WebBrowser1.Document = nil Then WebBrowser1.Navigate('about:blank');
OleVariant(WebBrowser1.Document as IHTMLDocument2).Clear; OleVariant(WebBrowser1.Document as IHTMLDocument2).Write(DeinString); OleVariant(WebBrowser1.Document as IHTMLDocument2).Close; |
Re: String in TWebBrowser laden???
hi,
ich würd himitsu's weg nehmen, der ist eindeutig kürzer ;) (danke, himi, werd ich gleich in mein programm bauen :thumb: ) Aenogym |
Re: String in TWebBrowser laden???
Zitat:
|
Re: String in TWebBrowser laden???
Och nicht trauchig sein anderer Micha,
dafür hab ich ja auch meinen Variante selber, mit Hilfe dutzender Webseiten (komischer Weise überwiegend Asiatischer :gruebel: ), zusammengebastelt und dann noch auf dieses hier vereinfacht/runteroptimiert (da stecken fast 2 Wochen harte Arbeit drin) :mrgreen: [add] Aenogym's Vorschlag ist vorallem größer, weil dort der Code an 'nen vorhandenen Code angehängt und dann auch noch runtergescrollt wird. Und bei mir wird nicht gescrollt und ein eventuell vorhandener Code wird gelöscht/überschrieben (durch's Clear) |
Re: String in TWebBrowser laden???
ist zwar ein altes thema, aber mit einem frameset scheint das ganze nicht zu funktionieren...
hast du ne ahnung warum ?
Delphi-Quellcode:
const newframeset = '<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN > <META http-equiv= Content-Type content= text/html; charset=iso-8859-1 > '#13 + #10'<HTML> <HEAD> <TITLE>test</TITLE> '#13 + #10'</HEAD> '#13 + #10'<FRAMESET BORDER= 0 COLS= 191,609,* > '#13#10' <FRAME NAME= navigation ID= navigation FRAMEBORDER= 0 NORESIZE= NORESIZE SCROLLING= NO SRC= %s > '#13 + #10' <FRAMESET BORDER= 0 ROWS= 60,* > '#13 + #10' <FRAME NAME= statusbar ID= statusbar FRAMEBORDER= 0 NORESIZE= NORESIZE SCROLLING= NO SRC= %s >'#13 + #10 + ' <FRAME NAME= mainframe ID= mainframe FRAMEBORDER= 0 NORESIZE= NORESIZE SCROLLING= NO SRC= %s >'#13 + #10' </FRAMESET> '#13 + #10' <NOFRAMES> Ihr Browser kann diese Seite leider nicht anzeigen. </NOFRAMES>'#13 + #10'</FRAMESET> '#13 + #10'</HTML> '; frame1 = 'test.html'; frame2 = 'test.html'; frame3 = 'test.html'; newhtml := format( newframeset, [frame1 , frame2 , frame3]); olevariant(webbrowser1.document as IHTMLDocument2).clear; olevariant(webbrowser1.document as IHTMLDocument2).write(newhtml); olevariant(webbrowser1.document as IHTMLDocument2).close; |
Re: String in TWebBrowser laden???
Gib mal bei den Dateien die komplette URL/Verzeichnisse mit an ... eventuell findet er ja nur diese Dateien nicht.
|
Re: String in TWebBrowser laden???
ich hab da bei mir absolute pfade... mit document.write geths nicht, nur wenn ichs als htm auf der festpladde speischer und dann hinnavigier gez
|
Re: String in TWebBrowser laden???
Hallo,
wenn Du base zum HTML-FrameString hinzufügst, funktioniert es damit:
Delphi-Quellcode:
kA ob das mit document.write funktioniert :gruebel:, ich hab es nicht getestet.
procedure TForm1.LoadHTMLString(WebBrowser: TWebBrowser; HTMLCode: String);
var sl: TStringList; ms: TMemoryStream; flag : Olevariant; begin WebBrowser.Navigate('about:blank', flag,flag,flag,flag); while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do Application.ProcessMessages; 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; procedure TForm1.Button1Click(Sender: TObject); var frame1, frame2, frame3, base, //<------ ! ! newhtml :String; const newframeset = '<!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN >'+#13#10 +'<META http-equiv= Content-Type content= text/html; charset=iso-8859-1 >'+#13#10 +'<HTML> <HEAD> <TITLE>test</TITLE>'+#13#10 +'</HEAD><base href="%s">'+#13#10 //<------ ! ! +'<FRAMESET BORDER= 1 COLS= 191,609,* >'+#13#10 +' <FRAME NAME= navigation ID= navigation FRAMEBORDER= 1 NORESIZE= NORESIZE SCROLLING= NO SRC= %s >'+#13#10 +' <FRAMESET BORDER= 1 ROWS= 60,* > '+#13#10 +' <FRAME NAME= statusbar ID= statusbar FRAMEBORDER= 1 NORESIZE= NORESIZE SCROLLING= NO SRC= %s >'+#13#10 +' <FRAME NAME= mainframe ID= mainframe FRAMEBORDER= 1 NORESIZE= NORESIZE SCROLLING= NO SRC= %s >'+#13#10 +' </FRAMESET>'+#13#10 +' <NOFRAMES> Ihr Browser kann diese Seite leider nicht anzeigen. </NOFRAMES>'+#13#10 +'</FRAMESET>'+#13#10 +'</HTML> '; begin frame1 := 'test.html'; frame2 := 'test.html'; frame3 := 'test.html'; base := ExtractFilePath(ParamStr(0));//<------ ! ! newhtml := format( newframeset, [base,frame1,frame2,frame3]); LoadHTMLString(WebBrowser1,newhtml); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:56 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz