Die Community zu .NET und Classic VB.
Menü

VB 5/6-Tipp 0380: Direktes Eingeben eines Strings in den Webrowser

 von 

Beschreibung 

Um den Umstand des Erstellens einer temporären Datei zur Anzeige dynamisch generierter HTML-Seiten zu vermeiden, kann sich dieses Tips bedient werden. Es kann ein String mit HTML-Formatierungen direkt in den Browser übertragen werden.

Schwierigkeitsgrad:

Schwierigkeitsgrad 1

Verwendete API-Aufrufe:

keine

Download:

Download des Beispielprojektes [3 KB]

'Dieser Quellcode stammt von http://www.activevb.de
'und kann frei verwendet werden. Für eventuelle Schäden
'wird nicht gehaftet.

'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum.
'Ansonsten viel Spaß und Erfolg mit diesem Source!

'------------- Anfang Projektdatei Project1.vbp -------------
' Die Komponente 'Microsoft Internet Controls (shdocvw.dll)' wird benötigt.
' Es muss ein Verweis auf 'Microsoft HTML Object Library' gesetzt werden.

'--------- Anfang Formular "Form1" alias Form1.frm  ---------
' Steuerelement: Textfeld "Text1"
' Steuerelement: Webbrowsercontrol "WebBrowser1"
' Steuerelement: Beschriftungsfeld "Label1"

Option Explicit

Private Sub Form_Load()
    WebBrowser1.Navigate2 "about:blank"
End Sub

Private Sub Text1_Change()
    WebBrowser1.Document.body.innerHTML = MakeNiceHTML(Text1.Text)
End Sub

Private Function MakeNiceHTML(Text As String) As String
    Dim x As Integer, s As Byte
    Dim c As Integer, cc As String
    Dim aa As String

    s = 1
    c = 32
    For x = 1 To Len(Text)
        c = c + 16
        If c > 255 Then c = 32
        cc = Hex(c)
        
        s = s + 1
        If s > 6 Then s = 2
        aa = aa & "<font size=" & s & " color=#" & cc & "0000>" _
                & Mid$(Text, x, 1) & "</font>"
    Next x
    
    MakeNiceHTML = aa
End Function
'---------- Ende Formular "Form1" alias Form1.frm  ----------
'-------------- Ende Projektdatei Project1.vbp --------------

Tipp-Kompatibilität:

Windows/VB-VersionWin32sWin95Win98WinMEWinNT4Win2000WinXP
VB4
VB5
VB6

Hat dieser Tipp auf Ihrem Betriebsystem und mit Ihrer VB-Version funktioniert?

Ja, funktioniert!

Nein, funktioniert nicht bei mir!

VB-Version:

Windows-Version:

Ihre Meinung  

Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.

Archivierte Nutzerkommentare 

Klicken Sie diesen Text an, wenn Sie die 9 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.

Kommentar von Interrogans am 08.05.2007 um 19:17

Funktioniert.
Man muss halt vorher das "about:blank" machen und das andere da...
passt!

Kommentar von ben am 30.03.2006 um 18:55

ehm bei frames...jedes element einer html-seite hat eine id bzw. einen namen. die kann man mit document.framename oder so aufrufen...(das hab ich jetz aus dem stegreif, sieh mal auf einer html seite nach.)

Kommentar von moLTe am 30.03.2006 um 13:30

Hallo,

an die bei denen es nicht funktioniert:

macht ihr auch das WebBrowser1.Navigate2 "about:blank"?
Ohne das funzt es nämlich nicht. Probiert es aus.

mfg
moLTe

Kommentar von beni am 24.02.2006 um 04:06

der body.innerhtml fehler gibt es, weil der browser noch beschäftigt ist. wenn man vorher das da:

Do While WebBrowser.Busy Or WebBrowser.ReadyState <> READYSTATE_COMPLETE
DoEvents
Loop


reinschreibt um zu warten, dann gehts

(zu björn)

Kommentar von beni am 24.02.2006 um 04:02

vb6 winXP
Webbrowser1.Document gibt es aber mit
-...body.innerHTML gibt es den fehler 91...aber bei debug und weiter kommt es dann doch in der form.

[edit]
fehler 91:
object variable or with block variable not set

was kann ich da tun?

Kommentar von beni am 24.02.2006 um 03:49

vb6 winXP
Webbrowser1.Document gibt es aber mit
-...body.innerHTML gibt es den fehler 91...aber bei debug und weiter kommt es dann doch in der form.

was kann ich da tun?

Kommentar von Björn Lange am 09.10.2003 um 19:48

WebBrowser1.Document.body.innerHTML = HTML
kann nicht funktionieren, da Eigenschaft .Document.body.innerHTML nicht vorhanden oder weil .Document schreibgeschützt ist. Ich beziehe mich hier auf den WebBrowser, den ich aus Microsoft Internet Controls(SHDOCVW.DLL) in das Formular eingebaut habe. Oder ist WebBrowser etwas anderes? Oder liegt es daran, daß ich das WebBrowser-Steuerelement von einem Formular aus aufrufe?

Ciao Björn

Kommentar von Robert am 14.02.2002 um 15:07

Leider funktioniert diese Methode nicht einwandfrei. Ich bekomme zb. Fehler wenn ich nachdem ich einen String übergeben habe, eine Website in dem selbigen Browser aufrufe und dann wieder einen String aufrufe, Fehler beim Darstellen des Strings. Komischerweiser ignoriert der Browser auch die bodybg anweisung. Um den Browser wieder zu "entladen" muß man dann wohl wieder erst about:blanc an den Browser übergeben. Dann wird die Sache aber wieder sehr langsam, falls man z.b. Webadressen aus einer Liste schnell hintereinander anzeigen will.
Ich glaube, Passi in Deinem Falle wirst Du sicher nicht drum herum kommen eine Datei in Browser zu laden. Zu mindestens aber müsstest Du Dir einen String zusammenbauen der eben die Framset-Anweisung für die zu Ladenden Seiten an den Broser übergibt.

Kommentar von passi am 14.07.2001 um 22:35

Wie kann ich etwas in frames schreiben? WICHTIG!