| |
VB.NET - FortgeschritteneSchrifthöhe mit Graphics-Funktion "MeasureString" für Display und Druck | | | Autor: Rainer | Datum: 19.12.17 17:01 |
| Hallo,
ich habe eine Routine geschrieben, mit der Datensätze einer DB-Tabelle gedruckt werden. Vor der Druckausgabe erzeuge ich eine Bildschirmübersicht mit dem Steuerelement "PrintPreviewControl". Diese dient in erster Linie dazu die Seitenanzahl der Dokuments zu ermitteln und damit eine Auswahl der zu druckenden Seiten zu ermöglichen. In der Testphase habe ich mit einer DB-Tabelle, die anhand der von PrintPreviewControl erstellten Übersicht insgesamt 99 Druckseiten ergab, gearbeitet. Als ich versuchte die Seite 99 auszudrucken, erhielt ich eine leere Seite. Erst bei Seite 97 erhielt ich das Ende der Liste gedruckt. Ein Vergleich mit dem Inhalt der DB-Tabelle stellte ich fest: es fehlte kein einziger Datensatz.
Daraufhin prüfte ich die Seite 1 genauer und fand heraus, daß diese im Vergleich zur Bildschirmanzeige zwei Datensätze mehr enthielt.
Zur Herangehensweise beim Aufbau der zu druckenden Datenzeile: mit der Graphics-Funktion "MeasureString" ermittle ich die für die Druckausgabe erforderliche Druckraumhöhe (abhängig von der FONT-Einstellung), prüfe ob dieser Platz auf der Seite noch verfügbar ist und führe den Druck ggf. auf der neuen Seite aus.
Bei der Suche nach der Ursache für die unterschiedliche Datensatzanzahl pro Seite stellte ich fest, daß die Graphics-Funktion für die Zeilenhöhe bei gleicher FONT-Einstellung (Schriftart, Style und Size) für die Darstellung im PrintPreviewControl und in der Druckausführung unterschiedliche Werte berechnet.
Beispiel:
Zeilenhöhe bei Arial, 11, mager für Display 19,478 Grafikpunkte und für den Druck 18,978 Grafikpunkte; das sind beim Druck im Vergleich zur Bildschirmdarstellung 2,566 % weniger Grafikpunkte. Dieser Prozentsatz ist stabil, d.h. er gilt für alle von mir getesteten FONT-Einstellungen. Ich konnte dies aber nur an einem Drucker (Brother MFC-J480 DW) testen. Da es sich bei MeasureString um eine Systemfunktion handelt, würde ich eine druckerabhängige Ursache ausschließen.
Bevor ich nun in meinem Algorithmus einen Korrekturfaktor einführe, möchte ich Euch fragen:
1. Hat jemand von Euch auch diese Diskrepanz festgestellt?
2. Welche anderen Möglichkeiten der Umgehung dieser Diskrepanz kennt Ihr?
3. Habe ich ggf. die Graphics-Funktion falsch verwendet?
In der Hoffnung jemand kann mir weiterhelfen, wünsche ich der Forum-Gemeinde schöne Feiertage.
Rainer. | |
| 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 |
|
|
sevGraph (VB/VBA)
Grafische Auswertungen
Präsentieren Sie Ihre Daten mit wenig Aufwand in grafischer Form. sevGraph unterstützt hierbei Balken-, Linien- und Stapel-Diagramme (Stacked Bars), sowie 2D- und 3D-Tortendiagramme und arbeitet vollständig datenbankunabhängig! Weitere InfosTipp des Monats Access-Tools Vol.1
Über 400 MByte Inhalt
Mehr als 250 Access-Beispiele, 25 Add-Ins und ActiveX-Komponenten, 16 VB-Projekt inkl. Source, mehr als 320 Tipps & Tricks für Access und VB
Nur 24,95 EURWeitere Infos
|
|
|
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
|
|