| |
Visual-Basic EinsteigerRe: 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. | |
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
| |
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. | |
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 | |
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?!
| |
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. | |
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 | |
| 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 |
|
|
sevISDN 1.0
Überwachung aller eingehender Anrufe!
Die DLL erkennt alle über die CAPI-Schnittstelle eingehenden Anrufe und teilt Ihnen sogar mit, aus welchem Ortsbereich der Anruf stammt. Weitere Highlights: Online-Rufident, Erkennung der Anrufbehandlung u.v.m. Weitere InfosTipp des Monats März 2024 Dieter OtterUTF-8 Konvertierung von Dateien und StringsVB6 selbst verfügt über keine Funktionen zur UTF-8 Konvertierung von Daten. Mit Hilfe des ADODB.Stream-Objekts lassen sich diese fehlenden Funktionen aber schnell nachrüsten. Neu! sevEingabe 3.0
Einfach stark!
Ein einziges Eingabe-Control für alle benötigten Eingabetypen und -formate, inkl. Kalender-, Taschenrechner und Floskelfunktion, mehrspaltige ComboBox mit DB-Anbindung, ImageComboBox u.v.m. Weitere Infos
|