Tabellenzeile duplizieren per SaveToString / LoadFromString

  • Hallo,

    um verschiedenste "vorgefertigte" Tabellenzeilen (Materialpositionszeile, Textzeile, Titelsummenzeile etc.) schnell einfügen zu können, sind diese per SaveToString zwischengespeichert.

    Ich erhoffe mir dadurch einen schnelleren Tabellenaufbau.

    Grundsätzlich funktioniert folgendes:

    Das sieht erst mal optisch korrekt aus, hat aber einen Haken:

    Die letzten Spalten enthalten Berechnungsanweisungen ('left(1)+previous(1)' )

    Diese sind in den kopierten Zeilen auch vorhanden ([wpShowParCalcNames, wpShowParCalcCommands]) doch in den Zellen steht "ERR" ab den neu eingefügten Zeilen bis zum Tabellenende.

    Auf diese Berechnungen möchte ich nicht verzichten, die sind rasant schnell bei Tabellenänderungen, selbst bei 3000 Zeilen :-)))

    Aber warum geht die Berechnung kaputt?

    Irgendwas habe ich dabei übersehen?

    Ciao

    Stefan

    • Offizieller Beitrag

    Sie können keine Zeile abspeichern. Man kann einzelne Absätze abspeichern, auch Tabellen aber eine Zeile ist kein vollständiges Element. Was da letztendlich erzeugt wurde kann ich so nicht sagen.

    Um eine Zeile nach oben oder unten zu duplizieren können Sie Duplicate() aufrufen:

    WPRichText1.TableRow.Duplicate(true,true,false, [wpParCopyName,wpParCopyStyles,wpNoParagraphObjects]);

    ....

    WPRichText1.ReformatAll(false, true);

    Das geht auch sicher schneller :)

    • Offizieller Beitrag

    Wenn Sie vorgefertigte Strings verwenden müssen Sie hier ganze Tabellen abspeichern und dann die Zeile 0 rauskopieren. Dies geht aus einem separaten editor sofern dieser synchronisiert ist, also das selbe RTFProps Objekt verwendet.

    par := Row.CreateCopyList(true,false,[wpParCopyName,wpParCopyStyles,wpNoParagraphObjects]);

    CurrRow.NextPar := par;

  • Zitat

    Dies geht aus einem separaten Editor sofern dieser synchronisiert ist

    Was ist mit synchronisiert gemeint?

    Mein Problem ist, dass TableRow.Duplicate eine vorhandene Zeile dupliziert, ich habe aber z.B. 3 Materialpositionszeilen, dann eine Textzeile, dann eine Zwischen-Positiion oder Zwischensummenzeile, dann wieder Text, Materialpositionen usw. und das eben bunt gemischt, so wie halt z.B. ein Angebot aus dem Handwerk aussieht.

    Diese Zeilen jeweils komplett selbst zu erstellen und zu füllen dauert mir bei 3000 Positionen (die in der Praxis auch vorkommen) eben zu lange und das Einfügen "vorgefertigter" Zeilen geht eben um vieles schneller.

    Deswegen würde ich gern die Variante

    Zitat

    Wenn Sie vorgefertigte Strings verwenden müssen Sie hier ganze Tabellen abspeichern und dann die Zeile 0 rauskopieren. Dies geht aus einem separaten editor sofern dieser synchronisiert ist, also das selbe RTFProps Objekt verwendet.

    wenn ich weiß was mit synchronisiert / das selbe RTFProps Objekt verwendet gemeint ist.

    Ciao

    Stefan

    • Offizieller Beitrag

    Im Manual stehen Information darüber.

    Vor allem "Introduction" ist sehr wichtig. Wichtig auch: Shared Styles and Style Scroller

    The event OnInitializeRTFDataObject can be used to assign a global TWPRTFProps component.

    (demo "H) Techniques\Styles\GlobalStyles"),

    Do not forget to call DetachRTFData before the editor is destroyed.

    Die konkrete Implementierung ist Projekt abhängig. Ich empfehle Kunden die kostenpflichtige Beratung in Anspruch zu nehmen, da WPTools extrem schnelle und effektive Lösungen erlaubt, die aber nicht direkt ins Auge fallen. So können Lösungen gefunden werden, die nicht gegen die Architektur von WPTools arbeiten und stattdessen diese optimal ausnutzen. Vorschläge dafür passen aber aus verschiedenen Gründen nichts ins Forum. Fragen gerne an support@wptools.de.