[WPTools] Unterschiedliche Formatierung in einem Absatzes

  • Hallo,

    ich nutze WPTools 5 und erstelle Text aus dem Code auf diesem Weg:

    Code
    par: TParagraph;
    ...
    par := par.AppendNewPar(true);
    par.ASetCharStyle(true, WPSTY_BOLD)
    par.SetText(text);


    So weit, so gut.
    Meine Frage nun: Die Formatierung (im Beispiel fett) bezieht sich immer auf den ganzen Absatz. Wie bekomme ich es hin, z.B. ein einzelnes Wort innerhalb eines Absatzes in einer anderen Formatierung darzustellen?

    Danke für Tipps!

    Martin[/code]

    • Offizieller Beitrag

    Hallo,

    WPTools 5 unterstützt text attribute auf mehreren Ebenen.

    Die Attribute werden in dieser Rangfolge bearbeitet:

    1 - attribute des Zeichens
    2 - attribute eines vorgelagerten SPAN objects im Absatz
    3 - attribute des Absatzes
    4 - attribute des absatz stils der zjm absatz gehört bzw. dessen vorgänger

    In diesem Fall sind Sie gleich bei "3" eingestiegen.

    Um Text mit attributen einzufügen:

    WPRichText.CurrAttr.AddStyle([afsBold])
    WPRichText.InputText('fett')

    Es ist möglich text mit attributen einem absatz hinzu zufügen:

    var cha: TWPStoredCharAttrInterface;

    cha := RTFMemo.HeaderFooter.RTFProps.AttrHelper;
    cha.Clear;
    cha.SetFontName('Times New Roman');
    cha.SetFontSize(12);

    par.AppendText( 'Etwas Text', cha.CharAttr );

    CharAttr ist ein index auf eine format struktur welche durch das TWPStoredCharAttrInterface verwaltet wird. WPTools 5 speichert nur derartige index werte (3 bytes) im Gegensatz zu WPTools 4 welches pro Zeichen ein record mitgeführt hat mit farb, zeichensatz, grösse und stil information.

    Es gibt auch weitere möglichkeiten auf Absatz ebene den Text zu formatieren, also ohne zugriff auf TWPRichText. Siehe dazu die unit WPCreateDemoText in Demos\Tasks\CreateTable.

    Grüsse,
    Julian Ziersch

  • Hallo Julian,

    vielen Dank für die Antwort!
    Ich habe jetzt Folgendes versucht, leider ist jetzt die ganze Zeile fett.
    (Ich möchte eine Methode schreiben, die einen String parst und jeden Text, der in | eingeschlossen ist, fett ausgibt. Beispiel: "|Heute| ist Donnerstag" - das Wort "Heute" soll fett werden, alles andere nicht.

    Warum wird der Text, dem ich extra "chaNormal.CharAttr" mitgebe, trotzdem fett ausgegeben?

    Danke für Hilfe!

    Martin

    • Offizieller Beitrag

    Hallo

    >>Warum wird der Text, dem ich extra "chaNormal.CharAttr" mitgebe, trotzdem fett ausgegeben?<<

    Sowohl chaNormal als auch chaBold zeigen auf das selbe object: "wp.AttrHelper".

    Sofern Sie nicht eigene instanzen von TWPStoredCharAttrInterface erzeugen müssen Sie das CharAttr in ein Integer laden before sie einen neuen zeichen stil (-index) erzeugen.

    Grüsse,

    Julian Ziersch