Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi String in TWebBrowser laden??? (https://www.delphipraxis.net/30799-string-twebbrowser-laden.html)

romber 29. Sep 2004 13:58


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!

Dax 29. Sep 2004 14:00

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.

Aenogym 29. Sep 2004 14:02

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:
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;
Aenogym

edit: prozedurheader geändert - war zu spezifisch ;)

romber 29. Sep 2004 14:10

Re: String in TWebBrowser laden???
 
Danke. Und was muss ich usen, um auf IHTMLTxtRange zu kommen???

DerAndereMicha 29. Sep 2004 14:24

Re: String in TWebBrowser laden???
 
Hab mal irgendwo folgenden Quelltext gefunden :

Delphi-Quellcode:
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;
Mußt nur Deinen String in nen Stream schreiben, das wirste aber sicher allein hinbekommen :-)

himitsu 29. Sep 2004 15:00

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;

Aenogym 29. Sep 2004 15:32

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

DerAndereMicha 30. Sep 2004 07:29

Re: String in TWebBrowser laden???
 
Zitat:

Wenn sich jeder immer nur bei Dem bedanken würde, dessen Hilfe die
angenehmste war, wird er bald auf Hilfe verzichten müssen...

himitsu 30. Sep 2004 07:58

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)

retnyg 3. Mai 2006 12:54

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;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:31 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz