Den Inhalt eines Editfeldes ausdrucken....



  • Hi!
    Ich lasse mit meiner Anwendung einen Text drucken:

    void CDlgPrintDlg::OnOK()
     {
     // TODO: Zusätzliche Prüfung hier einfügen
    
     // Ein CPrintDialog-Objekt konstruieren
     CPrintDialog dlgPrint(FALSE,PD_ALLPAGES,this);
    
     if (dlgPrint.DoModal()==IDOK)
     {
     // Den Drucker-DC vom Dialogfeld mit einem
     // CDC-Objekt verbinden
     CDC dcPrint;
     dcPrint.Attach(dlgPrint.GetPrinterDC());
    
     // Eine DOCINFO-Struktur erzeugen und füllen
     DOCINFO myPrintJob;
     myPrintJob.cbSize = sizeof(myPrintJob);
     myPrintJob.lpszDocName = "MeinDruckAuftrag";
     myPrintJob.lpszOutput = NULL;
     myPrintJob.lpszDatatype = NULL;
     myPrintJob.fwType = NULL;
    
     // Ausdruck des Dokuments starten
     if (dcPrint.StartDoc(&myPrintJob)>=0)
     {
     // Eine Seite beginnen
     dcPrint.StartPage();
    
     // Zeichnen beginnen
     dcPrint.TextOut(0,0,"Mein kleiner Druckauftrag");
    
     // Seite auswerfen
     dcPrint.EndPage();
    
     // Dokument schließen
     dcPrint.EndDoc();
     }
    
     // Druckergerätekontext löschen
     dcPrint.DeleteDC();
     }
    
     // Mit Standardverarbeitung von OnOK fortfahren
     CDialog::OnOK();
     }
    

    Die Zeile dcPrint.TextOut(0,0, "Mein kleiner Druckauftrag"); ist die entsrpechende stelle.
    Der Drucker druckt mir diesen Text auf ein Blatt Papier aus. Geht cool! Wow! ja,. aber...

    Wie bringe ich es hin, damit derDrucker mit den Inhalt eines Editfeldes m_strAusgabe ausdruckt??

    Ich habs so versucht:

    dcPrint.TextOut(0,0, m_strAusgabe);
    

    aber OHNE erfolg!!

    Das einzige was ich hiermit ausgespuckt bekomme, ist ein weisses, unbedruktes, leeres blatt!!

    Kann mir da eventuell einer helfen?
    danke`!

    mfg
    Programmer

    [ Dieser Beitrag wurde am 02.11.2002 um 09:20 Uhr von Programmer85 editiert. ]



  • Der Inhalt eines Editfeldes hat nichts mit dem Inhalt der Membervariable zu dem Editfeld zu tun.

    Wenn du etwas in eine Editfeld schreibst brauchst du noch die Funktion
    UpdateData(TRUE/FALSE)

    um die Daten auszutauschen.

    FALSE schreibt von member des Edit in das Editfeld und TRUE von Editfeld in die Member. (Verwechsle die beiden immer. Hoffe es war jetzt richtig)

    Also vor TextOut noch UpdateData aufrufen.



  • Ok. funzt! thx! 😉



  • Funzt, aber net richtig!!! 😉

    Wenn ich mehrzeilige Sachen hab zum Beispiel

    1
    2
    3.Zeiele
    ENENEDED34242

    oder so, dann druckt der anstatt das obige so wies ist, einfach nur

    1[][]2[]3.Zeilee[][][]EMNDNENE23213[]

    und und und... also alles auf EINE zeile, anstatt mehrzeilig... obwohl, das eDitfeld auf MULTILINE eingestellt ist... komisch!! 😉



  • Ist ja klar.
    In einem Editfeld mit Multiline wird der Zeilenumbruch ausgewertet und auch angezeigt.

    Die Variable hat aber nur eine Zeile.
    Also solltest du ein Listview nehmen oder den Zeilenumbruch beim Drucken auswerten und eine Neue Zeile Drucken



  • Könntest auch DrawText nehmen für Multiline.



  • Und äh,, wie stell ich das an?
    DrawText(m_strAusgabe.GetLength());
    dcPrint.TextOut(0,0, DrawText) ;

    ??



  • @Unix-Tom: Jo, werde hier weitermachen... hauptsächlich ging es hier aber um das Drucken des EditInhaltes, aber nicht um das Zeilenproblem... 😉



  • Das ist korrekt aber wenn du ein Multiline hast dann steht im CString das ganze in einer Zeile drin und die druckst du mit einem Textout aus. Unabhängig von den Zeilentrennzeichen. Somiot hast du auch nur einen Zeile.



  • hmm... das heisst, wenn ich multiline vor dem TextOut deaktivieren lasse, und NACH dem Druckvorgang wieder aktivieren lasse, meinste, dass könnte dann eventuell hinhauen???

    Denn der User muss ja vor dem Drucken noch den Text eingeben können...
    PS: Wie deaktiviert / aktiviert man eigentlich MULTILINE ??



  • Nei das bringt nichts da hier der Text auch nur in einem CString steht und dieses druckst du mit einem TextOut aus.
    Somit hast du auch nur einen Zeile gedruckt.
    Du brauchst 2 TextOut`s.

    CSting first;
    CString second;
    CString third;

    first = "test test1";
    Jetzt parsen und "test" in second und "test1" in third schreiben.

    Textout von second
    Cursor in neue Zeile
    TextOut von third


Anmelden zum Antworten