Am 22.03.2015 10:18, schrieb Wolfgang Bußmann:
>
>
> Da ich mit Javascript nicht direkt auf eine mdb Datei zugreifen kann,
> habe ich mir gedacht, was soll's, erzeuge eine komplette Kopie als
> Sqlite Datei. Die Daten lese ich über XMLHttpRequest mit einen Timer
> periodisch ein. Mit der Sql.js Bibliothek kann ich die Daten dann über
> spezielle Select Befehle öffnen und die Daten im Javascript Code weiter
> für die HTML-Seite verarbeiten. Einen Server brauche ich hierfür nicht.
>
"Server" klingt in diesem Fall auch viel zu "übertrieben". In
Wirklichkeit handelt es sich um ein lokales cWebServer Objekt, welches
als Teil der eigenen Anwendungen an einem beliebigen Socket horcht und
hier die Web-Kit Anfragen beantwortet. Server und Client bilden also
eine Einheit, sind beide Teil des gleichen Programms. Alternativ kann
dieser Server genauso die Anfragen eines lokalen Browsers beantworten.
Natürlich kann man das auch auf Anfragen außerhalb der eigenen
Netzwerkkarte erweitern. Dafür muss nur die eigene Firewall ihr Ok für
den gewählten Port geben.
> Das funktioniert auch bereits alles relativ gut. Das Problem hierbei
> ist, dass das Erzeugen der Sqlite Datei einen Moment dauert, den ich
> nicht gebrauchen kann. Weiterhin muss die HTML Datei im gleichen
> Verzeichnis wie die Sqlite Datei liegen. Ein höheres Verzeichnis
> akzeptieren die Browser aus Sicherheitsgründen nicht.
>
Du spricht wohl eine temporäre Sqlite direkt aus dem HTML5-Browser an?
Deshalb auch diese spürbare Verzögerung. Das muss nicht sein, wenn du
die Browser-Komponente über TCP mit JSON-Daten fütterst. Dafür braucht
es kein HTML5 und kein Sqlite. Entsprechend kann auch WEBKit ordentlich
damit umgehen. Andererseits spricht auch nichts gegen eine HTML5-fähige
Engine, wie z.B. das IE-Browser-Control (in meinem Beispiel kann das
über das Menü "Call VB" und "Show App in Webbrowser" getestet werden).
Den Umweg über die SQLite-Datei würde ich daher dringend vermeiden.
[...]
>
> Für einen ersten "Server"-Einstieg habe ich daher versucht, Wolfgang's
> "ExtBrowser" Beispiel zu testen. Leider bekomme ich es trotz intensiver
> Versuche einfach nicht ans laufen. Mit fehlen wahrscheinlich einige
> "Grundkenntnisse"?
Mein Beispiel liefert Daten aus einer Access-DB über JSON an den Webkit,
welcher mal über eine VB-Form, mal über eine Cairo-Form geladen wird.
Habe das allerdings bisher noch nicht in der Kombination mit RC5
getestet. Meine Anwendungen basieren auf RC4.
>
> Als erstes habe ich alle vbRichClient4 Verweise auf vbRichClient5
> geändert. Die vbRichClient5 ist selbstverständlich registriert. Das
> Programm startet einwandfrei.
>
Ok, das habe ich gerade auch gemacht. Projektverweis auf vbRichclient5
und im Code alle vbRichclient4 durch vbRichclient5 ersetzt und
gespeichert. Bei mir hat's beim ersten Start dann auch geknallt, keine
Ahnung warum. Habe das Ganze wiederholt und den Fehler nicht mehr
reproduzieren können.
> Wähle ich dann das "alternative" Cairo-Formular bekomme ich folgende
> Fehlermeldung:
> Laufzeitfehler ...
> WebKit.dll not loaded, please call initWebtKittdll beforehand (with the
> correct path).
>
Normalerweise braucht man den Aufruf der Methode InitWebKitDll nicht,
wenn die Pfadstrukturen korrekt sind. Kannst es ja mal damit versuchen:
'in der Klasse cwBrowser
If WebKit Is Nothing Then
Set WebKit = New_c.WebKit
WebKit.InitWebKitDll "C:\RC5\WebKitCairo\" 'Pfad anpassen
End If
'und in der WebKitHost.ctl
Private Sub UserControl_Initialize()
Set oWebKit = New_c.WebKit
oWebKit.InitWebKitDll "C:\RC5\WebKitCairo\" 'Pfad anpassen
oWebKit.InitializeView UserControl.hWnd
End Sub
Geschadet hat das bei mir nicht. Starte mal mit Strg+F5, bzw. mal mit F8
durch den Startcode tippeln, wenn es weiterhin kracht.
Alternativ kannst du recht einfach das IE-Browser Control in der VB-Form
Variante einsetzen. Damit brauchst du WebKit gar nicht mehr, kannst die
WebKitHost.ctl ganz aus dem Projekt werfen.
Der Code in der VB-Form wäre dann folgender:
Private Sub Form_Load()
Move (Screen.Width-ScaleWidth)\2, (Screen.Height-ScaleHeight)\2
Show
WebBrowser1.Navigate2 STARTURL & "?RunLocal=true"
End Sub
Private Sub Form_Resize()
WebBrowser1.Move 0, 0, ScaleWidth, ScaleHeight
End Sub
Kannst auch das Laden der internen Browser ganz unterbinden und dafür
deinen Haus-Browser auf
http://127.0.0.1:8080/nwind/nwind.html ansetzen.
Dafür das Browser-Control von der Form entfernen, ebenso den Code.
In der mMain dann:
'F_VB.STARTURL = AppServer.LocalUrl & "/" & STARTURL
F_VB.show
>
> Wolfgang benutzt in der Demo eine Ext-JS Bibliothek die bei
> kommerziellem Einsatz etwas kostet. Dieses kommt für mich leider nicht
> in Frage.
ExtJS ist einfach nur geil, andererseits aber auch nur ein JS-Framework
unter vielen. Die Töchter anderer Müttern sehen auch gut aus. Vielleicht
brauchst du aber auch kein Framework. Im Prinzip musst du nur die
AJAX-Sachen vernünftig umsetzen, alles andere ist eh nur DOM-Knete.
>
> Wo liegt mein Fehler? Steht der "Wald" im Weg? Könnt Ihr mir nochmals
> "unter die Arme greifen"?
>
Hoffen wir's ;-)
Schönen Gruß
W. Wolf