PrintJoe - die PrintLibrary, noch einfacher gehts nicht

    • Beta
    • Closed Source

    Es gibt 74 Antworten in diesem Thema. Der letzte Beitrag () ist von Vainamo V.

      PrintJoe - die PrintLibrary, noch einfacher gehts nicht

      Name des Programms:
      PrintJoe - die einfache Print-Libary (Version 2.0)

      Beschreibung:
      PrintJoe ist eine kleine DLL mit der man über wenige einfache Befehle umfangreiche Formulare zum Drucken erstellen kann. Sie ist unglaublich einfach zu verwenden und dabei sehr flexibel.
      Gerade zum Erstellen von Formularen und Dokumenten eignet sie sich. Mit dem integrierten Preview-Fenster lassen sich die Dokumente komfortabel anzeigen und drucken.

      Dies ist bereits Version 3 mit vielen neuen und vielen verbesserten Funktionen!!!


      Ich nutze den Code bereits seit längerem und habe sie jetzt in eine DLL zusammengefasst.

      Screenshot(s):
      Siehe Anhang

      Verwendete Programmiersprache:
      Visual Basic .NET (IDE: VB 2010 Express)
      Option Strict On verwendet!!!

      Systemanforderungen:
      z.B. .NET Framework 4.0 (wird noch runtergeschraubt)

      Download:
      Siehe Anhang

      Lizenz/Weitergabe:
      Freeware, kein Einkompilieren, Vermerk im Impressum wäre schön

      Verwendung:
      Ihr müsst einen Verweis auf die DLL setzen und natürlich PJ im Programmcode importieren.

      Ansonsten ist die DLL recht selbsterklärend:

      es gibt drei Klassen:
      - Elements
      das ist die Klasse mit der man neue Elemente in ein Dokument hinzufügen kann
      - Functions
      Hilfsfunktionen zum einfacheren Arbeiten mir Fonts und Colors
      - Document
      hier erfolgt die Arbeit mit dem Dokument

      Es gibt folgende Dokumentarten:
      AddHeader - Einfügen einer Überschrift in 6 Größenstufen, Textart und Farbe bestimmbar
      AddText - Einfügen eines normalen Text, größe, Farbe und Schriftart bestimmbar
      AddTextBreake - Einfügen von Leerzeilen
      AddLine - Einfügen einer Trennline
      AddTableArea - Starten und Beenden eines Tabellenbereiches und Festlegung der Größe, Form Farbe des Textes und des Borders
      AddTableHeader - Einfügen eines Tabellenkopfes mittels eines Arrays
      AddTableContent - Einfügen einer Tabellenzeile mittels eines Arrays
      AddImage - Einfügen eines Bildes mit einstellbarer Größe, Postition und Rahmen
      AddBackGroundImage - Einfügen eines Hintergrundbildes

      Funktionen:
      GetColorCode - wandelt eine Drawing.Color -Farbe in einen String um, zum Verwenden innerhalb der Fontcolor-Eigenschaften
      GetFontName - wandelt eine Drawing.Font- Schriftart in einen String um, zum Verwenden bei den Font-Eigenschaften
      Achtung: System.Drawing importieren!

      Arbeit mit den Dokumenten:
      StartNew- Starten eines neuen Dokumentes und löschen des Alten
      Show- Anzeigen des erstellten Dokumentes im eigenen Fenster
      Export - Exportiert das Dokument in Excel, Word oder eine Htm-File


      Code Beispiele:
      Weggefallen, da Beispielprojekt hinzugefügt!


      [b]Anmerkung[/b]
      Das ist meine ERSTE eigene Lib. Bitte seid also etwas zärter zu mir! Kontruktive Kritik nehme ich mir aber sehr gern an!!!

      Neues in Version 3:
      - Deutlich verbesserte Text- und Tabellen-Darstellung
      - Export-Funktion in Word, Excel und Html
      - Neues, besseres Print-Preview-Fenster
      - Weitestgehende Abkopellung vom Webbrowser
      - Verschlankung und Verbesserung des Programm-Codes und der Benutzerfreundlichkeit
      Bilder
      • Unbenannt.png

        46,92 kB, 1.304×768, 2.183 mal angesehen
      • Unbenannt.JPG

        140,94 kB, 1.511×1.036, 2.021 mal angesehen
      Dateien

      Dieser Beitrag wurde bereits 15 mal editiert, zuletzt von „VanDerLars“ ()

      Jo, das ist gut. Kopfzeile, Tabelle, Bild...
      So wie ich es bräuchte. Schlicht aber nützlich. Ich hab's noch nicht getestet, wenig Zeit. Aber gebe Dir auf alle Fälle noch ein Feedback.

      :thumbsup:

      PS: sind eventuell noch andere Ausgabeformate geplant? Ich denke da an PDF (in Textform)
      übersehen vor lauter Eifer

      mfg OnkelR
      Es kommt noch ein BackgroundImage.
      Wegen dem PDF-Export muss ich noch sehen, wie ich das mache, bis dahin müsstet Ihr euch noch mit einem PDF-Drucker aushelfen...
      Also Farben als String zu übergeben geht ja mal gar nicht, was ist wenn ich die Farbe #452353 darstellen will die keinen Stringnamen hat? Also schonmal besser den Parameter vom Typ Color zu machen. Ebenso die Font, würd ich auch als Font Typ übergeben. Kusive und Fett als Enum und als Überladung, so dass man bei nicht verwendung nicht immer false, false angeben muss.
      Was sind Breake deutscher Plural von Break?
      Hey Dodo:
      Du kannst die Farbe #452353 auch gern als String übergeben!
      Da die Weiterverarbeitung einen String bei Color und Font benötigt, kann ich das leider nicht ändern, was ich machen kann ist eine Funktion oder eine Fontliste integrieren.
      Kursiv und Fett sind Optional und standardmäßig auf False gesezt, du musst also nur True angeben, wenn du die wirklich haben willst.

      Den Rechtschreibefehler korrigiere ich natürlich

      Danke für die Hinweise.
      Hey,

      VanDerLars schrieb:

      Da die Weiterverarbeitung einen String bei Color und Font benötigt, kann ich das leider nicht ändern

      imho ist es die Aufgabe einer solchen Funktion, einen übergebenen Typ intern so umzuwandeln, um damit weiterarbeiten zu können.

      Schlussfolgere ich richtig, dass es sich hierbei um ein quasi zweckentfremdetes Webbrowser-Control handelt?

      Gruß, Manschula
      Hi,

      was beim anschauen des Beispiels auffällt ist die relativ seltsame Syntax / Bezeichnung deiner Properties / Klasse ,...
      Was ich erwarten würde wenn ich eine Lib nutze die mir so eine Funktion zu verfügung steht wäre etwas ala:

      Document.AddHeader(....);
      Document.AddLineBreak();

      oder:
      Document.Header = new Header(....);

      Vielleicht kannst du dir mal den (wie ich finde sehr nützlichen) Link anschauen: Link

      mfg


      Edit:Was DoDo meint ist, das die Farbe eben nicht als String, sondern vom Typ "Color" übergeben werden sollte.
      Hallo Mcdt,
      du hast die recht, die Syntax ist nicht sofort erkenntlich - ich werde die Klassen und Module umbenennen - Version 1.1 folgt bald

      Hallo Manschula,
      auch du hast recht, ich denke ich werde eine Funktion einbauen, die die Color-Attribute in Farbcodes umwandelt, bisher habe ich nur Farbcodes zugelassen.

      Wie gesagt, ist meine Lib, und ich werde sie noch stark ausbauen!
      Danke für euer Feedback!

      VB.NET-Quellcode

      1. 11, "red", "arial", False, False)


      Warum nimmst du das nicht gleich als Font-Datentyp an?
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
      Fände ich aber praktischer ;)

      Und auf welche Weise machst du das nun? Schreibst den Quatsch in eine HTML-Datei bzw. gleich in den Quelltext des Webbrowser-Controls?
      „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

      -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
      Hallo Leute,

      erst einmal ein riesen DANKESCHÖN an die Tester, Ihr habt mir sehr geholfen!
      Version 2 ist fertig.

      Ich habe mir eure Tipps zu Herzen genommen und einiges verändert.
      Vor allem habe ich die Syntax geändert, ist denke jetzt eindeutiger, wenn auch nicht ganz wie Mcdt vorgeschlagen hat.

      Außerdem habe ich mir die Font- und Color- Diskussion noch einmal durch den Kopf gehen lassen und mich entschlossen einen Zwischenweg zu gehen: Ganz nur noch Fonts und Colors zuzulassen und die Strings zu elimieren, konnte ich mich nicht durchringen, es würde ein großes Maß an Flexibilität und Einfachheit verlieren. Das war, was mir selbst bisher so gut gefallen hat.

      Die Bedenken teile ich aber, und habe mit [Functions] eine neue Klasse mit (derzeit) zwei Funktionen hinzugefügt, mit denen man ganz leicht entweder ein Font oder eine Color in das gewünschte Format umwandeln kann. Flexibilität erhalten, Professionalität hergestellt.

      Es wäre toll, wenn Ihr es einmal testet!

      Glück auf!
      Hey,

      VanDerLars schrieb:

      Ganz nur noch Fonts und Colors zuzulassen und die Strings zu elimieren, konnte ich mich nicht durchringen, es würde ein großes Maß an Flexibilität und Einfachheit verlieren.

      ich weiß zwar nicht, was daran 'einfach' und 'flexibel' sein soll, imho macht es aber keinen Sinn, wenn ich einen Font nicht auch direkt als einen solchen übergeben kann/darf.

      Gruß, Manschula
      Mittels der neuen Funktion kann man eine Font als solche übergeben. Mir hat es bisher immer sehr gut gefallen, dass man die Farben als String bezeichnen kann, erspart ein kleinwenig Arbeit (meistens ist es ja eh "black" oder "gray") und ist für VB-Neulinge einfacher.

      Aber da es bisher wohl der größte Kritikpunkt ist, werde ich einfach die Umwandlung von der Lib tätigen lassen, dafür kann ich ja meine Funktionen nehmen und nur noch Fonts und Colors zulassen.
      Ist am Ende auch egal ^^

      Aber warum genau ist es euch so wichtig, dass ich hier nicht mit Strings arbeite - nur für mich zum Verständnis?
      Angenommen du hast einen ColorPicker-Dialog (obs so etwas für Fonts gibt weis ich grad nicht) und wählst eine Farbe aus, die ein Hintergrund haben soll.
      Da das ganze dynamich vom User bestimmt wird welche Farbe er sich aussucht kannst du schonmal keine "konstanten" string nehmen, sondern musst den irgenwie zusammensetzen.
      Da aber jede "*.Color" Eigenschaft eine jeden Controls auch vom Typ "Color" ist kannst du die (aus dem ColorPicker-DLG) gewählte Farbe problemlos an das Control übergeben.

      Wenn du ein Zahlenwert berechnest wandelst du die Zahl ja auch nicht zuerst in einen String, addierst einen weiteren gecasteten String und wandelst das Ergebnis dann in eine Zahl.
      Du rechnest einfach mit 2 Zahlen.

      Das selbe gilt für Strings + Farbwerte.


      Edit: Ach ja, du musst die "String" Methode ja nicht löschen, sondern einach mit einer "*.Color" Methode überladen.

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „mcdt“ ()

      VanDerLars schrieb:

      Aber warum genau ist es euch so wichtig, dass ich hier nicht mit Strings arbeite - nur für mich zum Verständnis?



      Das hat was mit OOP zu tun. Die Farbe ist eben eine Farbe und kein String, also nimmt man den Datentyp für die Farbe. Ein Datum wird auch in ein Datumstyp gepackt und nicht in einen String, eine Zahl wird in ein Integer/Double/Decimal oder sonst was gepackt und nicht in einen String.

      Wieso du hier Strings nimmst ist natürlich klar, weil sie direkt in das HTML Dokument einträgst, wofür natürlich wieder die Farbe als String benötigt wird, aber dies zu erstellen ist aufgabe der Funktion und nicht des Users der die Farbe vorgibt im Programm.

      Aber allgemein ist es extrem schlecht das WebBrowser-Control hierfür zu nehmen.