Announcement

Collapse
No announcement yet.

Wie kann ich Inhalt bestimmter Textboxen drucken?

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Wie kann ich Inhalt bestimmter Textboxen drucken?

    Ich habe ein einfaches Programm. Eine Textbox (Edit1) und ein Button-Knopf.

    1. Frage: Wie kann ich nur den Inhalt einer Textbox drucken?

    2. Frage: Wie kann ich den Inhalt einer Textbox in ein Word-Dokument (Textfeld) einfügen? Ist das eigentlich möglich?

  • #2
    Hi,

    ein direktes ausdrucken aus einem Edit ist nicht möglich. Daher muss
    man die ganze Sache etwas umgehen. Du könntest z.B. den Inhalt deines Edits in ein Richedit kopieren und dieses dann drucken. Oder du speicherst den Inhalt deines Edits zuerst in eine Datei druckst diese dann mit der API - Funktion ShellExecute aus, wobei du dann den zweiten Parameter "print" setzen mußt.
    Ich würde dir raten anstatt eines Edits gleich ein Richedit zu nehmen. Damit du dort nur in eine Zeile schreiben kannst, nimmst du folgenden Code.

    <pre>

    void __fastcall TForm1::RichEdit1KeyPress(TObject *Sender, char &Key)
    {
    if (Key == VK_RETURN)
    {
    Key = 0;
    }
    }

    </pre>

    Mittels der Taste Return gehst du ja in die nächste Zeile. Nachdem die Taste gedrückt wird, wird Key einfach 0 gesetzt und die Taste wird sozusagen ignoriert. Dieses muss aber im KeyPress - Ereignis geschehen.

    Zum zweiten Problem kann ich dir nur einen kleinen Ansatz geben. Ich habe ihn nicht getestet und kann dir deswegne keine garantie versprechen. Bestimmt ist diese Aufgabe auch noch leichter zu lösen, aber zur Zeit viel mir nichts ein.

    <pre>

    void __fastcall TForm1::Button2Click(TObject *Sender)
    {
    HWND window = FindWindow(0, Edit1->Text.c_Str());
    if (window != 0)
    {
    RichEdit1->SelectAll();
    RichEdit1->CopyToClipboard();

    // Koordinanten der linken oberen Ecke des Words Element. Diese mus du //aber vorher noch herauskriegen
    TPoint p;
    p.x = ??;
    p.y = ??;

    // Handle des Word Textelements
    HWND Wordelement = ChildWindowFromPoint(window, p);

    SendMessage(Wordelement, WM_PASTE, 0, 0);
    }
    }

    </pre>

    Zuerst ermittle du mittels FindWindow das Handle der Word Anwendung, wobei der zweite Parameter mit dem Caption der Word Anwendung überinstimmen muss. Deswegen wird dieser vorher in einem Edit geschrieben und von Dort aus übernommen. Beim Start von Word lautet der Caption: "Microsoft Word - Dokument1". Wenn du Texte speicherst, mußt du natürlich den Text im Edit ändern, damit er wieder mit dem Caption aus Word übereinstimmt. Wenn das Handle erfolgreich ermittelt werden konne, d.h. window ungliech 0, kann es schleißlich weitergehen. Nun mußt du die Koordinaten der linken oberen Ecke des Word Eingabe Controls wissen, welche du durch etwas probieren oder auf anderen Wege herausbekomen kannst. Nun benuzt die die API - Funktion ChildWindowFromPoint und ermittelst anhand dieser Koordinate das Handle des Controls und sendest zuletzt mittels SendMessage den Text, der anfangs in die Zwischenablage kopiert wurde ins Word Control.

    Ich hoffe dir hiermit etwas geholfen zu haben.

    Gruß Philip

    Comment

    Working...
    X