Bilder innerhalb Access mit echtem Zoom

By , 30. November 2008

Im Beitrag „Bilder in Access“ hatte ich es ja kurz angesprochen wie man einen echten Bilderzoom realisieren kann. Ich hab mir heute mal 1,5 Stunden Zeit genommen und das mal ausprobiert was für mich in der Theorie schon klar war.

Also, man suche ein freies JavaScript für einen Bilderzoom das einem gefällt, und „bastelt“ damit per Output-Stream eine HTML-Datei, die man per Webbrowser-Control anzeigen lassen kann.
Siehe dazu der Beitrag über das Webbrowser-Control.

Hier mal ein kurzer Blick in den VBA-Code:

Open CurrentProject.Path & "\index.html" For Output As #1
Print #1, "<!DOCTYPE HTML PUBLIC " & Chr(34) & "-//W3C//DTD HTML 4.0 Transitional//EN" & Chr(34) & ">"
Print #1, "<!-- saved from url=(0013)about:internet -->"
Print #1, "<html>"
Print #1, "<head>"
Print #1, "<script language=" & Chr(34) & "JavaScript1.2" & Chr(34) & ">"
Print #1, "var zoomfactor=0.05; //Enter factor (0.05=5%)"
Print #1, "function zoomhelper(){"
Print #1, "    if (parseInt(whatcache.style.width)>10&&parseInt(whatcache.style.height)>10){"
Print #1, "        whatcache.style.width = parseInt(whatcache.style.width) + parseInt(whatcache.style.width) * zoomfactor * prefix"
Print #1, "        whatcache.style.height = parseInt(whatcache.style.height) + parseInt(whatcache.style.height) * zoomfactor * prefix"
Print #1, "    }"
Print #1, "}"

Bei JavaScript ist peinlich genau auf die korrekte Schreibweise zu achten, kein Fehler wird einem dabei verziehen. Vorallem bei der Groß-/Kleinschreibung – JavaScript erfordert immer Kleinschreibung der Schlüsselwörter. Also ein style.Width funktioniert schon nicht mehr, richtig wäre hier style.width.

Für meinen Bilderzoom habe ich das Script von javascriptkit.com verwendet, welches man hier bekommt: http://www.javascriptkit.com/script/script2/imagezoom.shtml

Weiterhin wichtig ist die Ermittlung der Bildgröße Breite/Höhe in Pixeln.
Dazu dieser Code, der breite und höhe in globale Variablen schreibt:

Private Sub getPictureProperties(bild As String)
    Dim H As Double
    Dim W As Double
    Dim verhaeltnis As Double
    W = LoadPicture(CurrentProject.Path & "\" & bild).Width
    H = LoadPicture(CurrentProject.Path & "\" & bild).Height
    W = (W * 96) / 2540
    H = (H * 96) / 2540
    breite = Round(W, 0)
    hoehe = Round(H, 0)
End Sub

Obiger Code geht aber nur mit jpg, gif und bmp Bildern.
Jetzt fehlt noch ein bisschen Drum herum, eine Tabelle mit den Bild-Informationen und ein Formular mit dem Webbrowser-Steuerelement.

Wer jetzt aber an der Umsetzung scheitert, der kann von mir meine Test-Anwendung mit ein Paar Bildern kostenlos bekommen. Einfach per Email anfragen.

AV 2008

OfficeFolders theme by Themocracy