Beiträge von wpsupport

    Es wird also MergeText nach dem Einfügen des Textes aufgerufen und dabei gehen die Attribute verloren, nicht wegen SaveToString!

    Achten Sie bitte darauf, dass die Einfügepunkte << >> das text Attribut besitzen, welches auch der enthaltene Text haben soll.

    Das ist immer wichtig, ob die Felder im header, footer, text box oder im body sind.

    Der Text innerhalb von << >> ist nicht das Feld, sondern der Feldinhalt. Dieser Text ist optional und kann ersetzt werden, er kann auch fehlen.

    Man kann die Attribute des Textes aber so auslesen (--> Mail Merge):

    Contents.MergeAttr.CharAttr := WPRichText1.CPCharAttr;

    Der code entspricht ja ungefähr der demo TextBoxTestU und ist ok, und wenn ich die demo entsprechend ergänze, kommen die Attribute dort auch an.

    Wichtig ist beim event GetSpecialText lediglich, das dort weder formatiert werden darf, noch die cursor position verändert. Dies macht obiger code aber nicht.

    Am besten nach dem Laden den gesamten Text abspeichern, um zu prüfen, ob die Attribute noch da sind. Evtl. werde sie ja nach dem Laden durch einen Event überschrieben.

    Anregung: Wann wird denn GetSpecialText ausgelöst? Wenn Sie einen breakpoint platzieren, was liegt auf dem stack?

    *** WPTools 9.1.020 - 2.3.2020 ***

    + new event OnDrawUnderline. This powerful event makes it possible to customize background and underline of

    hyperlinks, i.e to draw a background for hyperlinks, record the position

    of hyperlinks on the canvas. Since this event is triggered for all kind of underlines, it can also be

    used to dynamically change the underline color.

    - the WPT loader didn't handle NumStyle=0 as undefined like WPTools 7

    - fix problem with DeleteHyperlink

    * improvements in colspan handling

    * changed the way grid lines are painted to avoid deletion of the previously painted borders

    *** WPTools 9.1.019 - 19.1.2020 ***

    * GetSelectionAsString was ignoring TextSaveFomat property

    + The save format string '-alwaysembed' now works consisterntly to embed images in WPT, RTF and HTM format

    usage: s := WPRichText1.AsANSIString('HTML-alwaysembed,-nobinary');

    Es ist nicht sinnvoll bei RTF text mit strings zu arbeiten, verwenden Sie memory streams. RTF ist ANSI code und man kann nie wissen, ob bei der Umwandlung in einen unicode string eine code page umwandlung den code verändert. Desweiteren kann man einen memorystream immer leicht als Datei abspeichern, für debugging zwecken.

    Ich habe Ihren text hier mal in eine Textbox geladen, ich sehe schon die unterschiedlichen Grössen.

    Einen String konnte ich nicht bauen, da Ihre Debugger Quelle dafür keine Vorlage darstellt.

    I recommend to create a merge field and inside the merge field an image as a placeholder.

    Using the OnTextObjectPaint event ist is possible to know the position and page number:

    Ich hab das mal schnell getestet (mit anonymer Funktion)

    Das Resultat ist wie erwartet:

    Code
    -1    -1    -1
    -1    -1    -1
    1    1    1
    2    2    2
    3    3    3
    -2    -2    -2
    -2    -2    -2

    Die Erkennung von "SubHeader" ist nicht optimal, einfacher geht es mit durchzählen:

    Thanks for asking - you can implement special borders also using the callbacks CustomLinePaintBefore and CustomLinePaintAfter.

    Of course you need to detect somehow which paragraphs should have a border.