Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Druckausgabe einer mehrzeiligen TextBox.

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
28.07.2010, 12:57 Uhr
Hochhaus



Hallo allerseits !

Ich bin Anfänger in Visual C++ und benötige Hilfe. (Ein für Profis triviales Problem) Wie drucke ich den Inhalt einer mehrzeiligen TextBox aus ?

In meinem schlauen Buch "Jetzt lerne ich Visual C++ 2008" fehlt ein entsprechendes Kapitel leider.

Kann mir jemand ein paar Zeilen Code dazu geben ? Der Anwender müsste den Druckvorgang - wie unter Windows üblich - bestätigen bzw. abbrechen können.


Vielen Dank für die Hilfe !


Hochhaus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
28.07.2010, 18:19 Uhr
Tommix



Hallo,
ist das ein MFC-Projekt oder C++/CLI? Da kann ich morgen für beides was raussuchen.
Wobei für Fall 2 "Nimm C#" die richtge Antwort wäre.
- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
28.07.2010, 18:32 Uhr
~Hochhaus
Gast



Zitat von Tommix:
Hallo,
ist das ein MFC-Projekt oder C++/CLI? Da kann ich morgen für beides was raussuchen.
Wobei für Fall 2 "Nimm C#" die richtge Antwort wäre.
- Tommix



Für Visual C++ 2008 (Visual Studio).

Herzlicher Gruss,


Hochhaus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.07.2010, 09:06 Uhr
Tommix



Ich meine den Projekt-Typ. Es gibt verschiedene Bibliotheken, die Textboxen zur Verfügung stellen. Wenn Du nicht sicher bist, zeig mal ein Stück Code.
- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.07.2010, 12:10 Uhr
Hochhaus




Zitat von Tommix:
Ich meine den Projekt-Typ. Es gibt verschiedene Bibliotheken, die Textboxen zur Verfügung stellen. Wenn Du nicht sicher bist, zeig mal ein Stück Code.
- Tommix


Code:

#pragma once


namespace Texteditor {

using namespace System;
using namespace System::ComponentModel;
using namespace System::Collections;
using namespace System::Windows::Forms;
using namespace System:ata;
using namespace System:rawing;
using namespace System::IO;
using namespace System::Text;



/// Form1 : Hauptformular für die Anwendung


public ref class Form1 : public System::Windows::Forms::Form
{
String ^dateiname;


public:
Form1(void)
{
InitializeComponent();

etc.

Gruss, Hochhaus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.07.2010, 13:02 Uhr
Tommix



Das ist C++/CLI. Im Prinzip läuft das so:

C++:
System::Drawing::Printing::PrintDocument^ docToPrint;

void button1_Click(System::Object^, System::EventArgs^)
{
    docToPrint = gcnew System::Drawing::Printing::PrintDocument;
    docToPrint->PrintPage += gcnew System::Drawing::Printing::PrintPageEventHandler(this, &Form1::document_PrintPage);

    PrintDialog1->AllowPrintToFile = true;
    PrintDialog1->AllowSomePages = true;
    PrintDialog1->ShowHelp = true;
    PrintDialog1->UseEXDialog = true;

    PrintDialog1->Document = docToPrint;

    System::Windows::Forms::DialogResult result = PrintDialog1->ShowDialog();

    if (result == System::Windows::Forms::DialogResult::OK )
    {
        docToPrint->Print();
    }
}

void document_PrintPage(System::Object^, System::Drawing::Printing::PrintPageEventArgs^ e )
{
    System::Drawing::Font^ printFont = gcnew System::Drawing::Font("Arial", 8, System::Drawing::FontStyle::Regular );

    float y = 0;
            
    for each (String^ line in textBox1->Lines)
    {
        e->Graphics->DrawString(line, printFont, System::Drawing::Brushes::Black, 0, y);
        y += e->Graphics->MeasureString(line, printFont).Height;
    }
}    


textBox1 enthält den Text, button1_Click ist der Handler des "Drucken"-Knopfes. Den Font kannst Du natürlich auch wählbar machen.
- Tommix

[Edit]
Achso, den PrintDialog, das Dokument und noch weiteres findest Du in der Toolbox mit den Steuerelementen undter "Drucken". Einfach auf das Form ziehen.
[/Edit]

Dieser Post wurde am 29.07.2010 um 13:07 Uhr von Tommix editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
29.07.2010, 13:21 Uhr
Hochhaus




Zitat von Tommix:
Das ist C++/CLI. Im Prinzip läuft das so:
...
Achso, den PrintDialog, das Dokument und noch weiteres findest Du in der Toolbox mit den Steuerelementen undter "Drucken". Einfach auf das Form ziehen.
[/Edit]


Danke !! Hat mir sehr geholfen. Ich bin eben noch Anfänger auf diesem Gebiet ...
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
29.07.2010, 14:46 Uhr
Hochhaus



Es funktioniert super !

Bloss noch ein Problem: Wie sende ich einen Seitenvorschub ? Ich bräuchte noch diese einzige Zeile Code. Wie man die Zeilen zählt etc., das weiss ich schon.

Gruss, Hochhaus
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
29.07.2010, 16:35 Uhr
Tommix



Du brauchst nur e->HasMorePages im rechten Moment auf true setzen. Hier
http://msdn.microsoft.com/de-de/library/system.drawing.printing.printdocument.aspx?ppud=4
ist ein schöneres Beispiel als meins. Überhaupt ist das MSDN die Informationsquelle.
- Tommix
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
30.07.2010, 08:21 Uhr
Hochhaus




Zitat von Tommix:
Du brauchst nur e->HasMorePages im rechten Moment auf true setzen. Hier
http://msdn.microsoft.com/de-de/library/system.drawing.printing.printdocument.aspx?ppud=4
ist ein schöneres Beispiel als meins. Überhaupt ist das MSDN die Informationsquelle.
- Tommix


Der Seitenumbruch funktioniert leider nicht. Was mache ich falsch oder ungeschickt ? Ich benütze untenstehenden Code. (grösstenteils von Dir)


C++:
void document_PrintPage(System::Object^, System::Drawing::Printing::PrintPageEventArgs ^e)
         {
          System::Drawing::Font^ printFont = gcnew System::Drawing::Font("Courier New",
          12, System::Drawing::FontStyle::Regular );

          float y = 50.0; int zz = 1;

          for each (String^ line in textbox1->Lines)
          {
              ++zz;
              if (zz % 55 == 0)
      {e->HasMorePages = true; y = 50.0;}
     e->Graphics->DrawString(line, printFont, System::Drawing::Brushes::Black,
              50.0, y);
     y += e->Graphics->MeasureString(line, printFont).Height;
     e->HasMorePages = false;
          }
         }


Vielen Dank für die Hilfe !

Dieser Post wurde am 30.07.2010 um 11:35 Uhr von FloSoft editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: