Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Drucken: Rechnungen / Lieferscheine
xxMUROxx
myCSharp.de - Member

Avatar #avatar-3236.jpg


Dabei seit:
Beiträge: 1.552
Herkunft: Südtirol/Italien

Themenstarter:

Drucken: Rechnungen / Lieferscheine

beantworten | zitieren | melden

Hallo,

ich beschäftige mich momentan mit dem Drucken und möchte eine Fixed Page das ich per Code erstelle drucken. Funktioniert alles, jedoch möchte ich im Body ein Grid hinzufügen das n-Elemente beinhaltet. Diese Elemente sind variabel hoch. Dadurch muss ich ausrechnen ob das zu hinzufügende Element noch auf der Seite Platz hat. Wie komme ich auf die Höhe des hinzugefügten Elements?

Zugriff aufs lineElement gibt folgende Werte:
ActualHeight = 0
Height=NaN

Ich hoffe ich habe es nicht zu kompliziert erklärt. Hier ein teil des codes

class CustomFixedDocument : FixedDocument
{
    [...]
    public void AddNewDocumentPage()
    {
        FixedPage page = new FixedPage();
            
        page.Width = PrintableDinA4Width;
        page.Height = PrintableDinA4Height;
        page.Margin = PageMargin;
        PageContent page1Content = new PageContent();
        ((IAddChild)page1Content).AddChild(page);
        page1Content.Child.Background = Brushes.Red;
            
        Pages.Add(page1Content);
        SetGrid();
    }
    public void SetGrid()
    {
        Grid g;
        [...]
            if(g.ActualHeight + elementToInsert.ActualHeight < PrintableDinA4Height)
        [...]
        this.Pages[Pages.Count - 1].Child.Children.Add(g);
    }
}

Gruß und Dank
Michael
Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.977

beantworten | zitieren | melden

Und warum nimmst du keinen Report statt alles selbst zu implementieren?
private Nachricht | Beiträge des Benutzers
xxMUROxx
myCSharp.de - Member

Avatar #avatar-3236.jpg


Dabei seit:
Beiträge: 1.552
Herkunft: Südtirol/Italien

Themenstarter:

beantworten | zitieren | melden

Weil es eine Rechnung/Lieferschein werden soll und diese je nach Seite (k)einen Header/Footer und unteschiedelichen Body haben.
Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.977

beantworten | zitieren | melden

Was hat das mit meiner Frage zu tun?
private Nachricht | Beiträge des Benutzers
xxMUROxx
myCSharp.de - Member

Avatar #avatar-3236.jpg


Dabei seit:
Beiträge: 1.552
Herkunft: Südtirol/Italien

Themenstarter:

beantworten | zitieren | melden

Da ich mal einen Report benutzt habe und dabei auf Probleme mit Header/Footer gestoßen bin, habe ich mich auf die andere Weise entschieden.
Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.977

beantworten | zitieren | melden

Achso, weil Du früher mal Probleme mit einem Report hattest, willst Du dir jetzt viel mehr Probleme einhandeln, indem Du alles selber machst?

Nee, ist logisch.

Welches Problem hast Du denn gehabt?
Welches Problem siehst Du für diese Rechnung/Lieferschein?
private Nachricht | Beiträge des Benutzers
xxMUROxx
myCSharp.de - Member

Avatar #avatar-3236.jpg


Dabei seit:
Beiträge: 1.552
Herkunft: Südtirol/Italien

Themenstarter:

beantworten | zitieren | melden

Ich hatte folgendes Problem dass ich z.B wollte dass die Summe der Rechnung am "unteren" Ende der letzten Seite haben will und dass die Rechnung nur ein mal den Adressanten im Header haben sollte. Jedoch war ich nicht imstande das zu bewerkstelligen. Das Problem lag vor allem da mein Auftraggeber die Summe am unteren Ende wollte und nicht dort, wo die Tabelle aufhörte.
btw: ich nahm fyiReporting, aufgrund da es free ist.
Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp
private Nachricht | Beiträge des Benutzers
TomLeech
myCSharp.de - Member



Dabei seit:
Beiträge: 146

beantworten | zitieren | melden

Also ich verwende Crystal Reports, welches mit Visual Studio ja mitgeliefert wird.

Dort sind diese Probleme, die du hattest nicht mal ein Ansatz eines Problems.

Aber eine Frage hätte ich schon:

Was haben Rechnungen / Lieferscheine mit einer Tabellenform zu tun? Bis auf den Detailbereich haben die ja genau 0 gemeinsam.

Berichte haben auch den sehr angenehmen Vorteil, dass man Briefköpfe und ähnliche Dinge, die man für solche Dokumente braucht recht einfach machbar sind, oder schon fertig mitgeliefert werden.

Meine Empfehlung: Investiere mal 2 - 4 Stunden und schau dir Crystal an. Danach denkst du niewieder darüber nach ein Grid als Rechnung auszudrucken.
private Nachricht | Beiträge des Benutzers
FZelle
myCSharp.de - Experte



Dabei seit:
Beiträge: 9.977

beantworten | zitieren | melden

Geht mit dem ReportViewer genauso, nur das man dieses unsäglich Installationsgedöns nicht hat.
private Nachricht | Beiträge des Benutzers
tom-essen
myCSharp.de - Experte

Avatar #avatar-2140.png


Dabei seit:
Beiträge: 1.815
Herkunft: NRW

beantworten | zitieren | melden

Hallo!

Ein - meiner Meinung nach - weiterer Vorteil vom ReportViewer gegenüber den Crystal Reports ist, dass die Report-Datei XML-kompatibel ist.

Crystal Reports haben ein binäres Format, der Viewer bietet aber mehr Möglichkeiten zum Export der Daten.
Nobody is perfect. I'm sad, i'm not nobody
private Nachricht | Beiträge des Benutzers
TomLeech
myCSharp.de - Member



Dabei seit:
Beiträge: 146

beantworten | zitieren | melden

Hab nur Crystal als Beispiel genommen, weil ich mich mit den anderen einfach nie beschäftigt habe, was an

a) Zeitmangel und

b) historisch bedingt

liegt.

Aber ne Rechnung wird ja wohl mit fast allen Tools dieser Art lösbar sein.

Ich trau mich kein Urteil darüber abzugeben, was besser oder schlechter ist, aber Crystal in ein Setup einzubinden ist mittlerweile auch nicht mehr schwer, da es das mittlerweile glaub ich schon als MSI gibt, also keine komischen merge files, die irgendwo versteckt sind und ähnlich seltsame Dinge mehr.

Gib Bescheid, ob du mit nem Report weitergekommen bist.
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #nZo9Gyth4VPDSxGqM4sT.jpg


Dabei seit:
Beiträge: 3.767
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

Hallo Muro,

ich habe Rechnungen und Reports schon mit Crystal, fyi, Report Services und mit eigenen Routinen erstellt.

Für mein Programm benutze ich eigene Routinen und einen eigenen Formular-Generator, da die zahlreichen Anforderungen an einen variablen Rechnungsdruck nicht mit einem Report-Generator abzudecken sind (meine Meinung).

Crystal würde ich nicht nehmen da es extra installiert werden muss und nicht auf allen Rechnern läuft. Beim Stapeldruck von Rechnungen kann es zu einem Memory-Leak kommen.

Der Report Viewer kann das genauso, es gibt bei gotreportviewer sogar ein Beispiel dazu (Invoice-Maker).

In VS2010 kann man sogar RDL2008 und mit ein paar Tricks RDL2010 benutzen, der Kunde kann sich dann seine Rechnungsformulare selbst anpassen.

Zu Deinem Problem im ersten Beitrag : Mit MeasureString(Text, font).Height kannst Du die Höhe der Ausgabe ermitteln.

Grüße Bernd
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von BerndFfm am .
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
private Nachricht | Beiträge des Benutzers
xxMUROxx
myCSharp.de - Member

Avatar #avatar-3236.jpg


Dabei seit:
Beiträge: 1.552
Herkunft: Südtirol/Italien

Themenstarter:

beantworten | zitieren | melden

Hallo,

ich schulde euch noch einen Post bezüglich wie ich es gelöst habe.
Ich mir eine eigene Klasse erzeugt die alles managed.
Dazu wird jetzt berechnet ob ein neues Item der Rechnung noch auf der Seite platz hat oder nicht.

Bin auch BerndFfm's Meinung:
Zitat von BerndFfm
da die zahlreichen Anforderungen an einen variablen Rechnungsdruck nicht mit einem Report-Generator abzudecken sind

Anbei ein Screenshot wie es aussieht.

Gruß Michael
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von xxMUROxx am .
Attachments
Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp
private Nachricht | Beiträge des Benutzers
Timur Zanagar
myCSharp.de - Member

Avatar #avatar-3412.jpg


Dabei seit:
Beiträge: 1.457

beantworten | zitieren | melden

Hallo xxMUROxx,

Das sieht doch gut aus. Gibt es auch die Klasse ;-) *fg*
private Nachricht | Beiträge des Benutzers
BerndFfm
myCSharp.de - Team

Avatar #nZo9Gyth4VPDSxGqM4sT.jpg


Dabei seit:
Beiträge: 3.767
Herkunft: Frankfurt a.M.

beantworten | zitieren | melden

Sieht Klasse aus !

Geht das auch mehrsprachig ? ;-)

Grüße Bernd
Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3
private Nachricht | Beiträge des Benutzers
xxMUROxx
myCSharp.de - Member

Avatar #avatar-3236.jpg


Dabei seit:
Beiträge: 1.552
Herkunft: Südtirol/Italien

Themenstarter:

beantworten | zitieren | melden

@Timur, ja gäbe es schon, ist aber ziemlich auf das aktuelle Projekt angepasst. Wenn Interesse bestände wäre ich auch bereit es etwas für die Allgemeinheit umzuändern. (Früher oder später werde ich das sowieso machen)

@BerndFfm, die Tabelle(Header,Spalten),Footer,Header muss man sich selbst definieren. Desswegen ist es zu jeder Sprache kompatibel
Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp
private Nachricht | Beiträge des Benutzers
userid12529
myCSharp.de - Member



Dabei seit:
Beiträge: 208

beantworten | zitieren | melden

Eventuell ist hier auch MigraDoc (in Kombination mit PDFsharp) interessant: PDFsharp/MigraDoc

Gibt sogar ein Beispiel für eine Rechnung: http://www.pdfsharp.net/wiki/Invoice-sample.ashx

Grüße,
Andreas
private Nachricht | Beiträge des Benutzers
F.Z.
myCSharp.de - Member



Dabei seit:
Beiträge: 155

beantworten | zitieren | melden

Hallo xxMUROxx,

saubere Arbeit , wäre schön wenn du uns eine Klasse zur Verfügung stellen würdest
[offtopic]
Zitat von xxMUROxx
Desswegen ist es zu jeder Sprache kompatibel :D
Es handelt sich ja schließlich nicht um Wegweiser [/offtopic]
"We better hurry up and start coding, there are going to be a lot of bugs to fix."
private Nachricht | Beiträge des Benutzers
xxMUROxx
myCSharp.de - Member

Avatar #avatar-3236.jpg


Dabei seit:
Beiträge: 1.552
Herkunft: Südtirol/Italien

Themenstarter:

beantworten | zitieren | melden

Zitat
saubere Arbeit , wäre schön wenn du uns eine Klasse zur Verfügung stellen würdest
Dankeschön!
Werde ich machen, sobald ich sie etwas angepasst habe. Ich werde mich in den nächsten Wochen diesbezüglich in diesem Thema nochmals melden.

[offtopic]
Zitat
Es handelt sich ja schließlich nicht um Wegweiser

[/offtopic]
Dieser Beitrag wurde 1 mal editiert, zum letzten Mal von xxMUROxx am .
Mein Blog
Meine WPF-Druckbibliothek: auf Wordpress, myCSharp

Moderationshinweis von michlG (26.08.2010 - 21:41)

Habe die DLL in das Projekte Forum verschoben..
Siehe: DLL zum Drucken von Rechnungen / Lieferscheinen

private Nachricht | Beiträge des Benutzers