Mehrzeilige TextFields, Druckvorschau mit Textfields und Tab

  • Hallo,

    ich habe zwei Fragen zur Nutzung von TextFields mit WPTools (Version 4.21 für D7):

    1) Ist es möglich, einem TextField in OnTextFieldGetText einen mehrzeiligen Text zu übergeben? - Wenn ich dies tue, so werden Zeilenumbrücke (#13#10) im Text als Sonderzeichen dargestellt und kein Zeilemumbruch durchgeführt.

    2) In der Druckvorschau (WPPreviewDlg) werden rechtsbündige Tabulatoren bei Verwendung von TextFields erst dann korrekt dargestellt, nachdem man aus der Druckvorschau einmal druckt. Kann man irgendeine Prozedur vor oder nach Aufruf der Druckvorschau aufrufen o.Ä. um die Darstellung ohne Drucken zu korrigieren?

    Im Voraus vielen Dank für Ihre Hilfe, Gruß
    Mathias

    • Offizieller Beitrag
    Zitat

    1) Ist es möglich, einem TextField in OnTextFieldGetText einen mehrzeiligen Text zu übergeben? - Wenn ich dies tue, so werden Zeilenumbrücke (#13#10) im Text als Sonderzeichen dargestellt und kein Zeilemumbruch durchgeführt.

    Das ist möglich - aber bitte nur einfache #13 verwenden die dann als NL verwendet werden.

    Für echte absätze muss man RTF verenenden, also

    {\rtf1\ text text \par nächste Zeile }

    >> 2) In der Druckvorschau (WPPreviewDlg) werden rechtsbündige Tabulatoren bei Verwendung von TextFields erst dann korrekt dargestellt, nachdem man aus der Druckvorschau einmal druckt. Kann man irgendeine Prozedur vor oder nach Aufruf der Druckvorschau aufrufen o.Ä. um die Darstellung ohne Drucken zu korrigieren? <<

    Das evtl mit den insertpoints zu tun. Sind diese sichtbar? InsertPointTextAttr

  • Zitat von wpsupport

    Das ist möglich - aber bitte nur einfache #13 verwenden die dann als NL verwendet werden.

    Für echte absätze muss man RTF verenenden, also
    {\rtf1\ text text \par nächste Zeile }

    Beides habe ich versucht:
    a) Nur #13 anstatt #13#10 zu verwenden: Dann erscheint #13 als Sonderzeichen.
    b) Der RTF-Text wird in der Vorschau leider nicht interpretiert.

    Zitat von wpsupport

    Das evtl mit den insertpoints zu tun. Sind diese sichtbar? InsertPointTextAttr

    Wie in meinem ersten Posting geschrieben, verwende ich TextFields, weshalb wahrscheinlich FieldObjectTextAttr und nicht InsertPointTextAttr das richtige property sein müsste (wenn ich das richtig verstanden habe).
    FieldObjectTextAttr.Hidden war bei mir bisher False.

    Jetzt habe ich den Aufruf der Vorschau folgendermaßen implementiert:

    FCalculateFields := True;
    Edt.FieldObjectTextAttr.Hidden := True; // Neu
    try
    DlgPreview.Execute;
    finally
    FCalculateFields := False;
    Edt.FieldObjectTextAttr.Hidden := False; // Neu
    Edt.Refresh;
    end;

    FCalculateFields dient nur dazu, OnTextFieldGetText ein- und auszuschalten.

    Durch den Einbau der mit //Neu gekennzeichneten Zeilen bessert sich die Ausrichtung der eingesetzten TextFields. Jetzt sind Vorschau und Druck fast identisch.
    Das Problem könnte man also als gelöst ansehen, aber irgendwie ist das ganze noch wacklig, denn einige Textfields sind noch nicht 100% ausgerichtet und nach dem Schließen der Seitenvorschau sind die TextFields im WPDBRichText teilweise etwas verschoben.
    Ich kann momentan damit leben, kann aber bei Interesse Programm und Beispieldaten bereitstellen, mit denen Sie die verbleibenden Probleme einmal nachvollziehen können.

    • Offizieller Beitrag

    Ok, ich 'TextFields' gesehen und sofort an mailmerge gedacht.

    Die TextFeidObjects können keine mehrzeiligen texte anzeigen und auch keine Tabulatoren. Für sowas unbedingt MaileMerge felder verwenden.

    TextFieldObjects sind eigentlich nur (breite) zeichen welche einen Text ausgeben wie Seiten nummer oder Datum bzw. Zeit.
    Für Datenbank anbinund evtl eine ordernummer oder ähnliches, längere text oder Texte mit umbruch gehen nicht.

    -

    Die Ausrichtung der felder ist deshalb problematisch da die breite nur beim reformat beachtet wird, beim paint aber der inhalt neu angefordert wird. Man kann sich hier behelfen indem man mehr plaz reserviert - OnTextFieldGetBounds.

  • Hallo,

    ich habe ein Problem beim Ersetzen von TextFields, die in einem TWPRichText mit InputField eingefügt wurden:

    Wenn ich zwei ähnliche Felder einfüge, die sich nur in Großschreibung unterscheiden (zum Beispiel <name> und <Name>), kann ich diese in "EdtMailMergeGetText(Sender: TObject;
    const inspname: String; const Contents: TWPMMInsertTextContents);" nicht unterscheiden.
    Bei beiden wird nur eine Schreibweise in 'inspname' benutzt.

    Können Sie mir hier helfen?

    Vielen Dank für Ihre Hilfe.
    Gruß,
    Jochen