Wie drucken?



  • Das Problem ist, dass ich zwar so ungefähr weiß, was ich hinschreiben muss, aber leider noch nichts Konkretes gefunden hab.

    Ich stell mir das ungefähr so vor:

    ...onbuttonclick...
    {
        Printer()->BeginDoc();
            ### hier definieren, was gedruckt wird - nur wie??? ###
        Printer()->EndDoc();
        druckdialog->Execute();
    }
    

    Wie kann ich jetzt den Druckbereich definieren (Ein ganzes RichEdit-Feld namens "diesdruck")? Und stimmt das oben überhaupt? Jedenfalls wird kein Fehler gemeldet...



  • Hmmm, also willst Du erstmal was drucken und anschließend dann auch den Druckerdialog anzeigen, um Einstellungen vorzunehmen *grübel*

    Ansonsten steht ja alles in der Hilfe, wie ich bereits einmal schrieb. Den Quellcode dort kannst Du fast wörtlich übernehmen, um Dein RichEdit auszudrucken:

    TPrinter Prntr = Printer();
      TRect r = Rect(200,200,Prntr->PageWidth – 200,Prntr->PageHeight – 200);
      Prntr->BeginDoc();
      Prntr->Canvas->TextRect(r, 200, 200, Memo1->Lines->Text);
      Prntr->EndDoc();
    


  • Toller Code zum drucken eines RichEdits ....
    🙄



  • bcler schrieb:

    Toller Code zum drucken eines RichEdits ....
    🙄

    Vor Inbetriebnahme des Mundwerks: Gehirn einschalten!!!

    Ich schrieb:

    Den Quellcode dort kannst Du fast wörtlich übernehmen, um Dein RichEdit auszudrucken



  • Leider hast du wohl noch nicht verstanden, worum es hier geht. Den Code kann man noch nicht mal Ansatzweise empfehlen.
    Überleg dir lieber mal was die Methode 'Print' beim RE wohl macht.



  • Print druckt den Inhalt des RichEdit, ohne Möglichkeit, die Druckparameter (Randbreite o.ä.) zu beeinflussen.
    Deshalb ist der Weg über TPrinter durchaus empfehlenswert.

    In Zukunft schnodderige Kommentare bitte immer gleich mit Begründung versehen.
    Und das Zitieren von Beiträgen bitte auf das Notwendigste beschränken. Danke!



  • Randbreite oder ähnliches zu beeinflussen ist hier nicht erfordert.
    Bitte überflüssige Kommentare unterlassen.
    Punkt.



  • Es schadet nie, alternative Lösungsansätze zu kennen, insbesondere, wenn diese zusätzliche Möglichkeiten eröffnen.

    bcler schrieb:

    Bitte überflüssige Kommentare unterlassen.

    Das sollte Leitsatz für dein eigenes Handeln werden.



  • Es schadet nie, alternative Lösungsansätze zu kennen, insbesondere, wenn diese zusätzliche Möglichkeiten eröffnen.

    Achso. Dann kann man auch noch erwähnen, das er das auch mit einem Report wie z.B. QuickReport drucken kann.

    Das sollte Leitsatz für dein eigenes Handeln werden.

    Bitte versuch erst mal dein eigenes Handeln zu analysieren.



  • Habe gerade mal TRichEdit::Print ausprobiert ... wenn das nicht noch ganz viel versteckte Möglichkeiten enthält, die ich in der Kürze übersehen habe, ist das schlicht und ergreifend unbrauchbar.



  • Absolut brauchbar für einen reinen Ausdruck.
    Aber ich rechne dir hoch an, das du dich wenigstens jetzt über dir nicht bekannte Methoden informierst.



  • bcler schrieb:

    Achso. Dann kann man auch noch erwähnen, das er das auch mit einem Report wie z.B. QuickReport drucken kann.

    Das ist ein akzeptabler Vorschlag, sofern die Komponenten vorhanden sind. Insbesondere, wenn der RichEdit-Inhalt dynamisch generiert wird.

    Bzgl. des Handelns: als Moderator fühle ich mich natürlich verpflichtet, zu analysieren, was z.B. das Löschen von OffTopic-Kommentaren bewirkt.
    Ich hoffe, der Wink mit dem Zaunpfahl war verständlich. Wenn nicht, Pech gehabt. 🙂

    Christian:
    Bitte verfall nicht in den gleich Trott. Wenn du einen Vorschlag als unbrauchbar klassifizierst dann schreibe auch, warum genau er deiner Meinung nach unbrauchbar ist.



  • Klar, werd ich in Zukunft machen.

    In diesem Fall lag das vor allem daran, weil das bißchen Beispieltext, welches ich verwendet hatte, ganz mickrig in der äußersten links oberen Ecke zusammengequetscht war und die Zeilenaufteilung gar nicht beachtet wurde (alles stand in einer Zeile).



  • Es geht mir nur um die Auswahl des Druckers im Druckdialog, nicht um die anderen Einstellungen. Wenn man nämlich einfach nur

    diesdruck->Print(Form1->Caption);
    

    schreibt, benutzt der PC immer den Standartdrucker und das soll nicht.



  • tschuldigung,
    ich weiß nicht warum, aber falscher thread...



  • achso, doch nicht,
    hab nur nicht gesehen, dass der thread 2 seiten lang ist!

    naja,
    kann vielleicht mal jemand einen konkreten Vorschlag posten, was ich machen soll?
    wie gesagt will ich das ganze richedit-feld ohne zusätzliche einstellungen drucken, nur halt nicht mit dem standartdrucker.



  • if (PrintDialog1->Execute())
    {
       RichEdit1->Print("RichEdit");
    }
    


  • DANKE!!!

    Jetzt funktionierts!

    Genau so wollte ich das haben!



  • Hallo..
    ich habe folgendes bereits geschrieben, er druckt mir nun drei Seiten aus, aber leider leer.
    Wie definiere ich "was oder welcher Text" mir das Programm drucken soll...
    Ich habe ein Text den ich per Button "Datei laden" einlese.
    Das sollte er mir drucken können.

    Wie stelle ich das an???

    PrintDialog1->Options.Clear();
    PrintDialog1->Options << poPageNums << poSelection;
    PrintDialog1->FromPage = 1;
    PrintDialog1->MinPage = 1;
    PrintDialog1->ToPage = 2;
    PrintDialog1->MaxPage = 3;
    if (PrintDialog1->Execute())
    {
    int Start, Stop;
    // determine the range the user wants to print
    switch (PrintDialog1->PrintRange)
    {
    case prSelection:

    Start = 1;
    Stop = Start;
    break;
    case prPageNums:
    Start = PrintDialog1->FromPage - 1;
    Stop = PrintDialog1->ToPage - 1;
    break;
    default: // prAllPages
    Start = PrintDialog1->MinPage - 1;
    Stop = PrintDialog1->MaxPage - 1;
    break;
    }
    // jetzt den gewnschten Bereich drucken
    Printer()->BeginDoc();
    for (int i = Start; i <= Stop; i++)

    {
    if (i != Stop)
    Printer()->NewPage();
    }
    Printer()->EndDoc();
    }

    Bitte helft mir...


Anmelden zum Antworten