vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
sevDataGrid - Gönnen Sie Ihrem SQL-Kommando diesen krönenden Abschluß!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

Visual-Basic Einsteiger
MSHTML.HTMLDocument *erstellen* incl. Head Element / Div Element / Tabelle 
Autor: woerny
Datum: 31.07.18 12:10

Hallo @ all,

ich möchte eine HtmlSeite (lokal) in einem IE-Control abbilden.
Mit dem folgendem Beisppiel Code funktioniert das soweit.
Sub testMSHTML_VBA()
 
    Dim iRow As Integer, jCol As Integer
    Dim objDocument     As MSHTML.HTMLDocument
    Set objDocument = objWebbrowser.Document
 
    'call WebbrowserLeeren
                      objWebbrowser.Document.Clear
 
    Dim objTable        As MSHTML.HTMLTable
    Set objTable = objDocument.createElement("Table")
                   objDocument.Body.appendChild objTable
        objTable.Style.borderCollapse = "collapse"
 
 
        Dim objRow          As MSHTML.HTMLTableRow
        Dim objCell         As MSHTML.HTMLTableCell
 
    For iRow = 1 To 3
        Set objRow = objTable.insertRow
        For jCol = 1 To 3
            Set objCell = objRow.insertCell
                objCell.Style.verticalAlign = "top"
                objCell.innerHTML = "<p>Zeile " & iRow & ", Spalte " & jCol & "</p>"
                objCell.Style.BorderColor = "#cccccc"
                objCell.Style.BorderStyle = "solid"
                objCell.Style.BorderWidth = "1px"
                objCell.Style.padding = "5px"
                '------------------------------------------------
                    If (iRow + jCol) Mod 2 = 0 Then
                        objCell.Style.backgroundColor = "#eeeeee"
                        objCell.Style.FontWeight = "bold"
                    End If
                '------------------------------------------------
                objCell.Style.fontFamily = "Calibri"
                objCell.Style.FontSize = "10pt"
                objCell.Style.Color = "#ff0000"
        Next jCol
    Next iRow
End Sub
Da ich aber eine umfangreiche Tabelle darstellen möchte,
würde ich gerne auf eine externe CSS referenzieren und weitere Einstellungen im HEAD'er ergänzen.

Darüber hinaus, müsste ich den ein oder anderen DIV-Container erstellen.

Wäre vielleicht einer von euch so nett, mich hierbei zu unterstützen,
oder evtl. mir einen Link zur Verfügung zu stellen, wie ich mir das selbst erschliessen könnte.

Wie kann ich einen Head Element einbauen?
z.b:
<head>
  <meta http-equiv="content-type" content="text/html; charset=ISO-8859-1">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" type="text/css" href="./Daten/myDefault.css" />
</head>
wie kann ich ein DIV Element einbauen?
<td id="F1"><div class="tooltip">  <span class="tooltiptext">mein _
  Hinweis</span></div></td>
Vielen Dank
LG
Werner



Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MSHTML.HTMLDocument *erstellen* incl. Head Element / Div Element / Tabelle 
Autor: Souffleurlos
Datum: 31.07.18 18:06

Hallo woerny,

wenn die HTML-Datei auf dem Rechner existiert, warum nicht Webbrowser1.Navigate "file:// .... etc.
Eine Webside mit den HTML-Controls zu bauen wird wahrscheinlich aus Sicherheitsgründen nicht wirklich funktionieren.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MSHTML.HTMLDocument *erstellen* incl. Head Element / Div Element / Tabelle 
Autor: woerny
Datum: 31.07.18 23:50

Hallo Souffleurlos,

das bringt mich leider gar nicht weiter.
Inzwischen bin ich etwas weiter, aber immer noch nicht am Ziel.

Private Sub createHTMLDoc()
    Dim objDocument As MSHTML.HTMLDocument
    Dim objHead As MSHTML.HTMLHeadElement
    Dim objLink As MSHTML.HTMLLinkElement
 
    Dim objTable As MSHTML.HTMLTable
    Dim objRow As MSHTML.HTMLTableRow
    Dim objCell As MSHTML.HTMLTableCell
 
    Dim i As Integer, j As Integer
    Dim intCount As Integer
 
    Dim objCellWrapper As clsCellWrapper
    Set colCells = New Collection
    Set objDocument = objWebbrowser.Document
 
    objWebbrowser.Document.Clear
    Set objHead = objDocument.createElement("head")
                  objDocument.head.appendChild objHead
 
    Set objLink = objDocument.createElement("link")
        objLink.setAttribute "rel", "stylesheet"
        objLink.setAttribute "type", "text/css"
        objLink.setAttribute "href", ".Daten/myDefault.css"
 
        objDocument.head.appendChild objLink
 
 
    Set objTable = objDocument.createElement("Table")
                   objDocument.body.appendChild objTable
        objTable.Style.borderCollapse = "collapse"
 
    Set objRow = objTable.insertRow
            For j = 1 To 8
                intCount = intCount + 1
 
            Set objCell = objRow.insertCell
            With objCell
                 .setAttribute "id", "kwBU" & i & j
                 .innerText = intCount
            End With
 
            Set objCellWrapper = New clsCellWrapper
            With objCellWrapper
                Set .Cell = objCell
            End With
 
            colCells.Add objCellWrapper
 
        Next j
 
 
    Set objRow = objTable.insertRow
            For j = 1 To 7
                intCount = intCount + 1
            Set objCell = objRow.insertCell
            With objCell
                .setAttribute "id", "kwBG" & i & j
                .innerText = intCount
            End With
 
            Set objCellWrapper = New clsCellWrapper
 
            With objCellWrapper
                Set .Cell = objCell
            End With
            colCells.Add objCellWrapper
        Next j
End Sub
Jetzt wird "Head" erzeugt, aber leider nicht korrekt.
<HEAD></HEAD><LINK rel=stylesheet type=text/css href=".Daten/myDefault.css">
- Head erzeugt und geschlossen
- dann der LINK
- Setzung der " Gänsefüsschen " falsch

Gruß
Werner



Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MSHTML.HTMLDocument *erstellen* incl. Head Element / Div Element / Tabelle 
Autor: Souffleurlos
Datum: 01.08.18 18:12

Hallo Woerny,
dann noch konkreter: Baue eine Datei mit normaler HTML-Syntax und überlasse die DOM-Erstellung dem Browser. Der kann das sicher viel besser als du. Diese HTML ist eine normale Textdatei mit HTM Suffix. Diese Datei bauen ist extrem einfacher, als mit DOM Step by Step die Elemente einbauen. Ich kenne niemand, der das je gemacht hat.

Es sei denn: Du baust einen HTML-Editor.

Beitrag wurde zuletzt am 01.08.18 um 18:14:10 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MSHTML.HTMLDocument *erstellen* incl. Head Element / Div Element / Tabelle 
Autor: Franki
Datum: 03.08.18 02:39

Hallo Werner,
meiner Meinung nach bist du da auf dem falschen Weg.
Ich baue auch in diversen Anwendungen HTML Seiten, aber immer nur als reine Textdatei zuerst die alles enthält was wichtig ist. (HTML, ASP, PHP, was auch immer) Natürlich ist der Code dynamisch z.B. Tabellen usw.

Ob mein Code stimmt teste ich ganz unabhängig zuerst mit diversen Browsern die mir wichtig sind indem ich in den Browser die erstellte Datei lokal aufrufe. Dann kann ich z.B. auch kontrollieren, ob die CSS richtig eingebunden wird.

Alles was in Sachen DOM Manipulation durch Useraktivitäten erledigt werden muss mache ich mit JavaScript, was auch durch meine VB Anwendung geschrieben wird. (Ist ja auch nur eine Textdatei)

Und wenn es sich wirklich um eine Art HTML Editor handeln sollte bzw. um einzelne Bereiche die Manipuliert werden sollen, dann baue ich das Grundgerüst wie oben beschrieben und teste dann Schritt für Schritt die einzelnen Manipulationen am DOM. Aber <tag>..</tag> braucht man da eigentlich nicht zu verändern.

Beschreibe doch mal etwas genauer warum du das so machst wie du es beschrieben hast.

Gruß
Frank
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MSHTML.HTMLDocument *erstellen* incl. Head Element / Div Element / Tabelle 
Autor: woerny
Datum: 03.08.18 12:46

Hallo Franki,

wahrscheinlich habe ich am Anfang die "falsche" Abzweigung genommen und bin inzwischen tatsächlich auf dem Holzweg!

Ich will keinen html Editor bauen - eigenlich will ich "nur" eine Personalübersicht abbilden.
Wenn ich in Zeile-X / Spalte-Y klicke soll ein Event ausgelöst werden, was an dem Tag zu dem Mitarbeiter erfasst ist. bzw. ein neues Event per anderem Form in die DB schreiben.

Die html Seite wird schon generiert und abgebildet. So wie Ihr es besprieben war auch mein Erster Weg. Eine Html Seite mit meta-Tag auf eine ausgelagerte css.
Auf dieser Seite habe ich / lasse ich beim generieren der html, jeder Celle einen css per ID zuweisen.
Also z.B.: Text = U, dann bekommt die Zelle die ID="U". Im CSS habe ich dann meine wünsche bzgl. Farbe/ Rahmen ... hinterlegt.
Für jede andere ID/Vorkommnisse entsprechend.

Soweit so einfach - ABER, ich habe kein Klick Ereigniss, kein Kontext Menü auf dem WEB Control in der Tabelle!

Will z.B.: ein Mitarbeiter einen U erfassen, wollte ich / benötige ich auf das Klick Ereignis ein Form, Zeile = Mitartbeiter Spalte = Datum.
Bei meiner Recherche wie ich das umsetzten kann, bin ich auf eine Interessante Idee gestoßen.

Hier wird unter zuhilfenahme einer Class und Collection, beim schreiben der Tabelle, alle Information in der Class gespeichert.
Dieses Object ist dann mit htmlDocument erzeugt. Zu jedem Klick eine eine Zeile / Spalte wird mir das ausgegeben, was beim schreiben des Object's von interesse ist. Also zunächst einfach msgBox: Zeile Spalte.

Klappt auch Super - aber ohne meine Design, da ich den Link auf das CSS in den MetaTag nicht hinbekomme.

Wahrscheinlich kann ich ganz einfach das Klick/Kontext Menü mit Java einbauen? (kenn ich mich aber überhaupt nicht aus) und bekomme per Java Zeile / Spalte zurück und kann damit weiter arbeiten???!!!!

So stehe ich hier am Anfang meiner Forumsfrage?!



Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MSHTML.HTMLDocument *erstellen* incl. Head Element / Div Element / Tabelle 
Autor: Franki
Datum: 05.08.18 02:48

woerny schrieb:
Zitat:


Soweit so einfach ABER, ich habe kein Klick
Ereigniss, kein Kontext Menü auf dem WEB Control in der
Tabelle!


Mal ganz grob gesagt, CSS ist für die optische Gestaltung da, JavaScript für die Funktionalität. Am Anfang sollte das reichen denn zu bringst da etwas durcheinander.

Ein Ereignis (Click z.B.) kannst du wie folgt zuweisen:
var einzelbelegplus = document.getElementById('belegplus');
    einzelbelegplus.addEventListener('click', belegaddition);
Und dann kannst du auf das Ereignis auch reagieren:

        function belegaddition() {
    	alert("Hier deine Meldung auf die du im weitern Code reagieren kannst...");
	}		  	}
Wenn es sich um eine reine HTML Seite handelt, kannst du nur entweder per JavaScript (NICHT JAVA) reagieren, oder du verwendest serverseitige Scriptsprachen wie ASP / ASP.NET, PHP usw. Da hast du andere Möglichkeiten die aber einen Server brauchen der das auch unterstützt.

CSS Alleine ermöglicht zwar auch eine gewisse Interaktivität in Sachen Ereignissen die der User so machen kann, aber auf der Sicheren Seite bist du wenn du JavaScript verwendest, da kannst du gezielter und besser auf Ereignisse und Eigenschaften zugreifen...

Gruß
Frank

Beitrag wurde zuletzt am 05.08.18 um 03:02:48 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: MSHTML.HTMLDocument *erstellen* incl. Head Element / Div Element / Tabelle 
Autor: W. Wolf
Datum: 20.08.18 14:10

Hallo,

versuche mal:

Dim Style As HTMLStyleElement
    Set Style = mDocument.createElement("style")
    Style.Type = "text/css"
    Style.styleSheet.cssText = "hier alle möglichen Style-Angaben, ggf. aus" & _
      "einer Datei geladen"
    With mDocument.GetElementsByTagName("head")(0)
        .appendChild Style
    End With
Gruß
W. Wolf
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel