Kurzeinführung Preview

Das Preview-Kontrollfeld bietet viel mehr Möglichkeiten, als nur eine Vorschau (auf was denn?), wie der Name vermuten lässt: damit könnte man mit etwas gutem Willen ein kleines Zeichenprogramm programmieren! Kreise, Vielecke, Linien, Text: alles ist möglich. Da all diese Methoden in der Online-Hilfe jedoch gut bei den Kontrollfeld-Eigenschaften versteckt sind, musste ich plötzlich selber wieder überlegen, woher ich denn das weiss...

Bevor wir uns allerdings der Programmierung widmen können, muss ich leider erst zu einem weiteren Mysterium etwas ausholen:

Twips

Unter «Wichtige Masseinheiten» scheint in der Online-Hilfe alles über die Twips zu stehen: «567 Twips entsprechen 1 cm.». Alles klar? Mir noch nicht! Nachdem ich aber erkannte, dass alle Methoden, mit welchen sich ein Preview bearbeiten lässt, die Koordinaten etc. in der Einheit Twips verlangen, erfand ich mir meine eigene Erklärung. Twips sind ganz einfach eine Masseinheit für die geräteunabhängige Koordinaten-Definition.

Natürlich scheint es auf den ersten Blick viel einfacher, solche Masse gleich in Pixeln zu definieren. Doch wie wir noch sehen werden, scheint es hier Abweichungen in Abhängigkeit vom verwendeten Betriebssystem zu geben. Doch dazu mehr im zweiten Teil dieses Exkurses: «Exkurs: Preview plattformunabhängig». Zum Anfang genügt es, einfach zur Kenntnis zu nehmen, dass alle nun folgenden Koordinaten-Angaben in Twips zu definieren sind. Also nicht erschrecken, wenn nach der Eingabe eines «100» langen Strichs nicht allzuviel auf dem Bildschirm erscheint: das sind eben 100 Twips und nicht 100 Pixel!

Preview-Grundlagen

In einem Preview-Kontrollfeld etwas anzuzeigen ist auf den ersten Blick gar nicht so einfach: im Entwurf kann ich nichts reinpinseln, auch kann ich nicht einfach eine BMP-Datei als Eigenschaft definieren. Das Vorgehen ist jedoch ziemlich logisch: da weit mehr möglich ist, als die Anzeige einer Graphik, muss die Ausgabe programmiert werden. Und eben diese Routine, die das vornimmt, auszuführen, muss sie einfach im Makro-Dialog mit dem OnPaint-Ereignis des Preview-Elementes verknüpft werden. Diese Routine muss nun alles veranlassen, damit das Preview sinnvoll gefüllt wird:

Sub myPreview_OnPaint()
   ' Schicke für einmal graphische Grüsse 
   myDialog.myPreview.DrawText(100, 100, "Hello Stars!")
End Sub

Natürlich kann auch jede andere Routine auf ein Preview zeichnen, wenn dieses bereits geladen ist. Der Weg über OnPaint bietet jedoch den Vorteil, dass das Preview auch wieder korrekt angezeigt wird, wenn es z.B. mal durch ein anderes Fenster verdeckt wurde.

Achtung: Die DrawPicture()-Methode scheint derzeit leider nur BMP-Dateien zu unterstützen! Support für JPEG, GIF oder andere gängige Graphikformate fehlen meines Wissens komplett.

Für die vielfältigen Möglichkeiten rund um die DrawXXX-Methoden des Previews verweise ich auf die Dokumentation: auf Seite 244ff. befindet sich ein ausführliches Beispiel, welches viele Aspekte abdeckt.

Endlose Fehlermeldungen

Bei der Preview-Programmierung kommt es gerne zu «endlosen» Fehlermeldungen, wenn sich bei der OnPaint-Routine ein Fehler eingeschlichen hat. Das SO bemängelt diesen korrekt. Doch sobald man den Fehlerdialog wieder schliesst, erscheint die Meldung erneut...

Das Problem hierbei ist so logisch wie einfach zu beheben: da nach dem Schliessen der Fehlermeldung gleich wieder ein OnPaint-Ereignis ausgelöst wird, führt die Ausführung der damit verknüpften Routine auch gleich wieder zu dem bemängelten Fehler. Dies lässt sich umgehen, indem man die Fehlermeldung vor dem Schliessen so plaziert., dass es das Preview-Element nicht mehr abdeckt.



Letzte Änderung: 14.04.98
Copyright ©1998 by Michael Herger