Suchen und Ersetzen per Script

  • Mein Problem in Kürze:



    Ich hab Text in einem Richtextitem den ich ersetzen will (Quasi: Bearbeiten-Ersetzen).


    Hintergrund:


    Ich habe eine Maske in der man Textbausteine hinterlegen und diese dann in ein Memo einfügen kann. Hierbei soll es möglich sein "Platzhalter" wie zum Beispiel #heute# in den Text zu schreiben und dieser wird dann beim Einfügen des Textbausteins "berechnet".


    Im Beispiel oben sollte also


    Heute ist der #heute#.


    umgesetzt werden in:



    Heute ist der 02.05.2006



    Am besten wäre eine Scriptlösung, da einige der #Bausteine# per Script berechnet werden.


    Hat einer einen Ansatz?

  • Hast du es mal über die Eigenschaft Values probiert ?


    Ich bin mir nur nicht sicher ob da beim Ersetzen dann di Formatierungen erhalten bleiben.


    Ab 6 könntest du das über die erweiterten RichText-Klassen machen.

  • Diese Funktion sollte Dir dabei helfen:

  • Na ja, mit getformattedText bekommst Du den Text aus einem Richtext-Feld.
    Und dann darfst Du mit den hoffentlich bekannten LS-funktionen die ## Stellen herausfummeln und sie an die Function uebergeben. Wird Dir bestimmt Spass machen ;)

  • Wie wäre es dann mit FindString aus der NotesUIDocument Klasse.
    Davor mit GotoField ins richtige Feld springen und dann hast du zumindest mal den Beginn des Textes.
    Nun müsstest du deinen Text markieren (z.B. über SendKey) und per Cut Ausschneiden und per Inserttext deinen neuen Text einfügen

  • Versuch ich morgen mal, ich geb dann Bescheid obs geklappt hat.


    Nen anderer Ansatz:


    Ich habe pro Textbaustein ein eigenes Feld und die verschiedenen berechneten Werte sind endlich (also so max 20 verschiedene #Felder#).


    Man könnte also für jedes #Feld# den berechneten Wert in einem eigenen Feld "zwischenlagern" und mitübertragen und dann per "berechnetem Text" im Richtext selber diese Werte ins Dokument packen.


    Dann bräuchte nur ne Funktion die mir in ein Richtextitem einen berechneten Text einfügt. (per Script, per Hand ist es nicht das Problem, aber per Script wäre es um Längen besser, da ich meine Nutzer, die diese Bausteine ja benutzen sollen nicht mit was "neuem" quälen will ;) )



    Weiss einer ob sowas geht und wie man den einfügen würde?

  • Ich habs nun mit dem FindString gemacht. Wenn man den ganzen zu ersetzenden Text im FindString angibt markiert Notes ihn sogar, man muss also keine Sendkeys verwenden.
    Aufpassen muss man aber in 2 Punkten:


    1. Am Anfang der Ersetzungsroutine an den Anfang des Feldes springen, sonst kann es sein dass der Text nicht gefunden wird.
    2. Wenn der Text nicht gefunden wird erscheint eine Fehlermeldung, die nicht so ohne Weiteres unterdrückt werden kann, ich habe daher zuvor mit fieldcontains geschaut ob überhaupt was zu ersetzen vorhanden ist.




    Danke für die produktive Diskussion und eure Ideen.