Druckfunktion für Dialogfelder



  • Moin!

    Ich habe eine MDI-Anwendung, in deren Child-Fenster sich Dialogfelder befinden.
    Nun möchte ich einige Inhalte zu Papier bringen.
    Die vorgefertigte MFC-Druckfunktion hat mir im ersten Ansatz nur weiße Blätter gebracht, dies wunderte mich auch nicht weiter.
    Nun kann ich in der Funktion OnPrint() das Papier schwarz machen. Ich kann Texte und geometrische Figuren ausgeben (DrawText(), Rectangle() usw.)

    Was mich daran stört, ist daß ich im Prinzip alles von Hand programmieren muß und mich dabei noch mit Koordinatensystemen etc. rumärgere.
    Dies macht auch zukünftige Änderungen nicht gerade gut pflegbar.
    Gibt es eine Möglichkeit, das gewünschte Ergebnis im Ressourcen-Editor zusammenzustellen, ähnlich wie ein Dialogfeld, mit Platzhaltern für die darzustellenden Werte?

    Btw: kann es sein, daß die Suchfunktion in diesem Forum irgendwie buggy ist?

    Matze



  • MatzeHH schrieb:

    Btw: kann es sein, daß die Suchfunktion in diesem Forum irgendwie buggy ist?

    Ja, die ist buggy. Nimm Google. 😉

    Zu deiner Frage kann ich eigentlich nur sagen, dass mir sowas nicht bekannt ist.
    Evtl. kann man nen Screenshot machen und den drucken. Dazu habe ich hier afair schon was gesehen. 😕



  • Ist ja klar, dass per default nicht viel rauskommt. Woher will dein Anwendungsgerüst wissen, was du drucken willst. Normalerweise wird ja die OnDraw dafür verwendet, Ausgaben sowohl auf dem Bildschirm als auch auf dem Papier darzustellen. Mit anderen Worten heißt das: alles was du drucken willst solltest du in der OnDraw implementieren. Es ist unüblich z.B. das Zeichnen geometrischer Figuren und das Ausgeben von Texten in die vom Anwendungsgerüst bereitgestellten Druckfunktionen reinzupacken.
    Mir ist nicht bekannt, dass man aus den Ressourcen was ziehen kann. Sicher kannst du Bitmaps laden oder aus der Stringtable was auslesen. Aber eventuell gibts da was bei www.codeproject.com


  • Mod

    Du kannst auch weitergehen und bei www.codeproject.com kleine Listen-Generatoren finden.
    Oder Du greifst zu großen Komponenten wie List&Label oder Crystal Reports!



  • Danke schonmal für die Antworten!

    AndyDD schrieb:

    Ist ja klar, dass per default nicht viel rauskommt. Woher will dein Anwendungsgerüst wissen, was du drucken willst.

    In meinem jugendlichen Leichtsinn habe ich mir vorgestellt, daß ich eine Maske grafisch erstellen kann und Platzhalter für die zu druckenden Variablen verwende. So ähnlich wie man auch ein Dialogfeld zusammenstellt. Vergleichbar mit den Berichten in MS Access.

    Normalerweise wird ja die OnDraw dafür verwendet, Ausgaben sowohl auf dem Bildschirm als auch auf dem Papier darzustellen. Mit anderen Worten heißt das: alles was du drucken willst solltest du in der OnDraw implementieren. Es ist unüblich z.B. das Zeichnen geometrischer Figuren und das Ausgeben von Texten in die vom Anwendungsgerüst bereitgestellten Druckfunktionen reinzupacken.

    Japp, soweit bekannt. Nun bestehen meine Child-Fenster aber ausschließlich aus Dialogfeldern mit mehreren Reitern. Daher brauche ich OnDraw eigentlich nicht und kann das, was ich drucken möchte direkt in OnPrint schreiben. Da mir dort auch ein Zeiger auf den Gerätekontext zur Vefügung steht, sind die benötigten Befehle identisch. Letztlich spielt das aber keine Rolle, da die Problematik in OnDraw die gleiche wäre.

    Mir ist nicht bekannt, dass man aus den Ressourcen was ziehen kann.

    Das ist natürlich sehr schade

    Oder Du greifst zu großen Komponenten wie List&Label oder Crystal Reports!

    List&Label kenne ich nicht, aber Chrystal Reports stünde mir zur Verfügung. Ich kenne mich damit zwar nicht aus, könnte mich aber einarbeiten. Ginge denn damit das von mir Gewünschte? Ist auf dem PC des Anwenders eine zusätzliche Komponente erforderlich?

    Matze



  • Hast du das schon gemacht?

    Martin Richter schrieb:

    Du kannst auch weitergehen und bei www.codeproject.com kleine Listen-Generatoren finden.

    😉

    Ich verwende List&Label. Das funktioniert ähnlich wie Berichte in Access.
    Allerdings solltest du (sofern du niemanden kennst, der das schon kann) entweder einen teuren (aber guten) Entwicklerkurs einplanen - oder die Finger von der Software lassen. 🙄
    Man braucht beim User dann nur einige Dlls, die man eben mit ausliefert. Keine weitere zu installierende Software.

    Leider kenne ich Crystal Reports nicht, kann also nicht vergleichen.
    Falls du mehr zu L&L wissen willst, frag. 🙂


  • Mod

    [quote="estartu"]Hast du das schon gemacht?

    Martin Richter schrieb:

    Du kannst auch weitergehen und bei www.codeproject.com kleine Listen-Generatoren finden.

    😉

    Neinst Du einen von dort verwendet? Ja. Ich habe auf diesem Code eine ganze Klassen Reihe aufgebaut, die mittlerweile CListCtrl, CTreeViews und so weiter locker drucken kann.
    http://www.codeproject.com/printing/printingmadeeasy.asp

    Ich habe den Code sehr stark angepasst und manipuliert. Aber der Grundgedanke dieses Codes hat mir gefallen.



  • Martin Richter schrieb:

    estartu schrieb:

    Hast du das schon gemacht?

    Martin Richter schrieb:

    Du kannst auch weitergehen und bei www.codeproject.com kleine Listen-Generatoren finden.

    😉

    Neinst Du einen von dort verwendet? Ja.

    Oh, ich meinte eigentlich Matze... 🙂
    Aber nun hat er was konkretes zum Angucken. 😃


Anmelden zum Antworten