Linienstrke im Druck

Hallo zusammen!

Da ich nicht sicher bin, ob ich mein Anliegen angemessen auf Englisch ausdrücken kann, werde ich es diesmal lieber auf Deutsch versuchen…

Ich schreibe gerade eine Desktop-App (für MacOS und Windows), mit der ich in der Schule meine Kurse verwalten kann. Das Programm speichert hauptsächlich Schülerdaten, Kursinhalte und Noten, die nach bestimmten Schlüsseln verrechnet werden, in einer Datenbank (das Ganze natürlich passwortgeschützt und verschlüsselt). Das klappt auch alles problemlos.

Nun arbeite ich gerade an einer Druckausgabe der Halbjahresnoten; dabei möchte ich die Tabelle der entsprechenden Seite in der Kursmappe als Grafik millimetergenau “nachbauen”, sodass ich zum Halbjahr nur die Liste auszudrucken und in die Kursmappe kleben muss. An sich würde auch das funktionieren, aber ich habe das Problem, dass die Linien selbst bei einer penwidth/penhight von 1 viel zu stark sind (und bei 0 ist natürlich gar keine Linie zu sehen; ein Wert zwischen 0 und 1 funktioniert auch nicht). Ich habe im Forum zwar einen Thread zu dieser Problematik gefunden, aber der hat bei mir zu keiner Lösung geführt.

Das Grundproblem ist vermutlich, dass die ganze Drucksache für mich noch ziemlich neu und zugegebenermaßen undurchsichtig ist. Vermutlich ließe sich das von mir gewünschte Ergebnis auch mit einem Report erzielen, aber damit habe ich mich noch gar nicht beschäftigt und finde irgendwie auch keinen Ansatz/Zugang dazu.

Ich habe folgenden Code im Action-Event des Druckbuttons:

[code]Dim g As Graphics
Dim ps As New PrinterSetup

ps.MaxHorizontalResolution = -1
ps.MaxVerticalResolution = -1
g = OpenPrinterDialog(Nil, Self)

If g <> Nil Then
druckeNoten(g, ps)
End If[/code]

In der Methode druckeNoten steht nun erst einmal testweise nur das Folgende

g.PenWidth = 1 g.PenHeight = 1 g.DrawRect(100,100,200,200)

Weiß vielleicht jemand, wie ich den Code verändern muss, damit ich beim Ausdruck eine möglichst dünne Linie erhalte? (Momentan ist die Linie etwa einen halben Millimeter stark, was viel zu viel ist.) Wenn ich dieses Problem gelöst habe, wird der Rest ein Kinderspiel sein.
(Auf Plugins möchte ich übrigens nicht zurückgreifen, da ich reiner Freizeitprogrammierer bin und mit der Xojo-Lizenz mein Budgetrahmen für dieses Hobby bereits ausgeschöpft ist.)

Vielen Dank im Voraus! :slight_smile:
Jens

Hi Jens,

schau mal, Ulrich ein sehr gutes Tutorial zur Nutzung von Reports geschrieben. Im Body-Bereich würdest Du dann die Noten ausgeben, im Header vermutlich die Schülerdaten und im Footer vermutlich die schriftliche Einschätzung. Die Seitenbreite des Reports musst Du in Inch angeben, von daher vorher über z.B. Google die Maße der DIN A4 Seite in Inch umrechnen! Und ein Videotutorial findest Du hier.

Grüße

Herzlichen Dank für die Hinweise!

Auf den ersten Blick erschien es mir wesentlich unkomplizierter, eine Grafik zu erstellen, als mit Reports zu arbeiten. Aber vielleicht sollte ich mich tatsächlich mal in die Report-Geschichte einarbeiten, auch wenn mich das ein paar Tage kosten wird – vermutlich kann ich das auch später für andere Programme nutzen…

Gruß Jens

Unabhngig davon, dass ich mich mittelfristig einmal mit Reports auseinandersetzen muss, habe ich das Problem gelst, das darin bestand, dass meine Zeichnenmethode das PrinterSetup bzw. die darin festgelegte Auflsung nicht bernommen hatte. Ich habe nun meiner Druckklasse ein PrinterSetup-Attribut hinzugefgt, das die Auflsung speichert, sodass meine Zeichnenmethode darauf zugreifen kann. Der Code fr den Druckbutton sieht nun so aus:

[code]Dim g As Graphics
ps = New PrinterSetup // ps ist ein Attribut vom Typ PrinterSetup

ps.MaxHorizontalResolution = 300
ps.MaxVerticalResolution = 300

g = OpenPrinterDialog(ps)
If g <> Nil Then
druckeNoten(g) // die Methode bernimmt das Zeichnen der Grafik
End If[/code]

Nun bekomme ich auch die gewnschten dnnen Linien

Gru Jens