Zählen der geschriebenen Zeichen während des Schreibens in Mail

  • Hallo allerseits,


    ich möchte die Mail-Applikation von Notes um eine einfache Funktion erweitern, die mir beim Schreiben einer neuen Nachricht die bereits eingegebenen Zeichen z.B. in einem kleinen Fenster, anzeigt.


    Nützlich ist das bspw. wenn man eine Nachricht an ein SMS-Gateway schicken will und das Limit von 160 Zeichen pro SMS im Auge behalten möchte.


    Die Mail-Datenbank habe ich mir schon mal genauer angesehen, der Mail-Editor scheint jedoch ein geschlossenes Modul zu sein, auf das ich während der Erstellung einer Nachricht keinen Zugriff habe.


    Eine Idee wäre noch, diese Informationen über die automatische Rechtschreibprüfung abzufragen, die während der Eingabe der Nachricht ja mit läuft.


    Hat jemand eine Idee, wie man sowas realisieren könnte?


    Vielen Dank,


    Thorolf

  • Geschlossenes Modul ?


    Wie kommst du denn darauf ?
    Das ist ein simples RichTextFeld.


    Das allerdings bei jedem Zeichen mitzählen zu lassen wird die Eingabe sehr zäh machen sobald man mehr schreibt als nur ne kurze SMS.
    ich würde da eher dann beim Senden ne Überprüfung reinmachen und ggfls warnen wenn es zu lang wird

  • Hallo taurec,


    erstmal vielen Dank für Deine schnelle Antwort!


    > Geschlossenes Modul ?
    > Wie kommst du denn darauf ?
    irgendwie dachte ich das, weil mir der Debugger nichts mehr anzeigte. Ich hatte die Hoffnung darüber irgendeinen "Einsprungpunkt" zum Zeichen zählen zu finden.


    > Das ist ein simples RichTextFeld.
    OK, wie kann ich denn da erkennen wenn ein Buchstabe getippt wurde, ich hatte eigentlich die Hoffnung das es irgend einen Event wie "KeyPressed" gibt, habe aber nichts diesbzgl. gefunden - habe ich nur falsch gesucht?


    > Das allerdings bei jedem Zeichen mitzählen zu lassen wird die Eingabe sehr zäh machen sobald man mehr schreibt als nur ne kurze SMS.
    Das würde ich trotzdem probieren wollen, nur wie? Wie ist die "sofort" Rechtschreibung eingebunden, die macht das ja auch während der Eingabe und Verzögerungen gibt es da gar keine?


    > ich würde da eher dann beim Senden ne Überprüfung reinmachen und ggfls warnen wenn es zu lang wird
    Nun ja, jede popel SMS-Anwendung kann das, da sollte das bei Notes auch nicht unmöglich sein.


    Vielen Dank,


    Thorolf

  • Nur indem du dafür sorgst daß jedes Mal die gesamte Maske aktualisiert wird --> Deswegen auch der Hinweis darauf, daß es das ganze langsam macht.


    Die Rechtschreibung ist eine Client Funktionalität hat also nichts mit dem Mailfile oder dem Design zu tun.


    Notes ist eben keine SMS Anwendung sondern ein Mail Client.

  • Hallo,


    eine idee wäre noch JavaScript.


    Im JSHeader nen "Thread" starten der alle 1/10 sekunde die zeichen zählt und sie dir ausgibt.


    Nur eine idee, so verhinderst du das aktualisieren der Maske, nur hab ich keine Ahnung welche Auswirkung das auf die performance hat. Noch nicht probiert.


    http://www-10.lotus.com/ldd/nd…7180007d6761?OpenDocument


    http://interfacematters.com/20…d-and-trigger-action.html


    Lass mich wissen wenn du es probierst, was das Ergebnis ist.


    MfG Stefan

  • Hallo,


    ich wollte nur kurz Bescheid geben, das es grundsätzlich mit JavaScript läuft:


    Maske - Meldung:


    CharCount #
    CountActive T



    Body - onFocus:


    // Alle 1/10 Sek. Anz. Zeichen zaehlen
    useClick = window.setInterval( "runCount()", 100 );
    document.forms[0].CountActive.value = "+";


    <code>
    Body - onBlur:


    // Abfrage-Intervall zuruecksetzen
    document.forms[0].CountActive.value = " ";
    window.clearInterval(useClick);



    Memo JS-Header:


    var useClick;
    var bodyText;
    var bodyTextLen;



    // Aufaddieren des jew. letzten Zeichens
    function runCount() {
    bodyText = document.forms[0].Body.value;
    bodyTextLen = bodyText.length;
    document.forms[0].CharCount.value = bodyTextLen;
    }
    </code>


    "Gründsätzlich" deshalb, weil das "onFocus" nicht richtig reagiert, d.h. das man immer erst in das Body-Feld klicken muß, dann in ein anderes und nochmal in das Body-Feld, erst dann startet das Interval und die Zeichen werden gezählt :(


    Hat jemand eine Idee woran das liegen könnte?


    Vielen Dank,


    Thorolf

  • Hallo,


    > "Gründsätzlich" deshalb, weil das "onFocus" nicht richtig reagiert, d.h. das man immer erst in das Body-Feld klicken muß,
    > dann in ein anderes und nochmal in das Body-Feld, erst dann startet das Interval und die Zeichen werden gezählt
    die Ursache dafür und einen Würgaround habe ich nun gefunden, man muß das "CharCount"-Feld auf 'bearbeitbar' und nicht nur auf 'berechnet' stellen dann geht es, warum auch immer.


    Tschüß,


    Thorolf

  • Hallo allerseits,


    ich bin ja schon fast da wo ich sein möchte, aber nur fast.


    Ich habe den Zeichenzähler z.Z. direkt über dem "Body"-Richtext-Feld der Memo-Maske positioniert, was aber den Nachteil hat, das dieser bei längeren Mails aus dem Fenster gescrollt wird.


    Ich habe nun testweise ein zweites, identisches Feld direkt unterhalb des Mail-Headers plaziert, versuche ich darauf zuzugreifen bekomme ich jedoch eine Fehlermeldung: "ToObjectError: documents.forms[0].CharCount2 has no properties" (s. auch angehängter Screenshot).


    Wie lautet der Pfad zu diesem Objekt korrekt?



    Vielen Dank,


    Thorolf

  • Guten Morgen,


    Kann es sein das das Feld im moment nicht sichtbar ist (HideWhen)?
    Stimmt sonst soweit alles mit dem dem charcount feld überein (Typ, berechnet / bearbeitbar)?


    MfG

  • Hallo hurtz,


    vielen Dank für Deine Antwort.


    > Kann es sein das das Feld im moment nicht sichtbar ist (HideWhen)?
    Nicht das ich wüßte, ich habe den Typ jetzt noch mal von "Berechnet" auf "Bearbeitbar" gesetzt und dann kann ich da auch reinschreiben.


    > Stimmt sonst soweit alles mit dem dem charcount feld überein (Typ, berechnet / bearbeitbar)?
    Das ist eine Kopie des unteren Feldes, ursprünglich hatte ich das Feld ausgeschnitten und oben wieder eingefügt - sollte also identisch sein.


    Ich vermute eher das der Kopfbereich für JavaScript in einem anderen Frame oder sonst was liegt und daher nicht direkt erreichbar ist, habe aber die entsprechende Information nicht gefunden.


    Allerdings verstehe ich das nicht, denn das ist ja eine einzige Maske, die berechneten Teilmasken ober- und unterhalb sollten nicht stören.


    Wie sorgt man überhaupt dafür, das ein Teil einer Maske nicht nach oben scrollt wenn er unten zu lang wird?



    Danke nochmal,


    Thorolf

  • Hallo taurec,


    > JavaScript hat nur auf Bearbeitbare Felder Zugriff.
    > Berechnete Felder sind für JavaScript keine Felder
    das habe ich auch gelesen, allerdings wundert mich, das der Zugriff auf Felder die ich als "Berechnet" markiert habe mit:
    document.forms[0].CharCount.value = bodyTextLen;
    einwandfrei funktioniert.


    Und eine Änderung des Feldtyps von "Berechnet" auf "Bearbeitbar" löst das Problem leider nicht :(


    Tschüß,


    Thorolf

  • Hallo taurec,


    > Was bitte schön stimmt denn jetzt eigentlich ?
    es gab zwei Sachen.


    Einmal das die Zählroutine erst nach einem zusätzlichen Focuswechsel ging, das wurde durch Ändern des Feldes von "Berechnet" auf "Bearbeitbar" gelöst.


    Das zweite, für mich wichtigere Problem ist, das ich das Feld, welches die gezählten Zeichen anzeigt, vom Body-Bereich in den Header-Bereich verschieben möchte, weil es dort beim Scrollen des Bodys (also der E-Mail) stehen bleibt.


    Mache ich das, dann kann JavaScript nicht mehr auf das Feld zugreifen, egal ob "Berechnet" oder "Bearbeitbar"!


    Ich vermute das der Pfad "document.forms[0]" auf das Objekt "CharCount2" nicht mehr gültig ist, wenn das Objekt im Header steht, denn das im Body ist ja (weiterhin) erreichbar.


    Nur leider weiß ich nicht wie der richtige Pfad lautet!



    Vielen Dank nochmal für Eure Mühe,


    Thorolf

  • Hallo,


    und noch eine weitere Info.


    Wenn ich den Aufruf-Trigger in das onFocus-Event im "Subject"-Feld (Betreff) mache, dann funktioniert der Zugriff auf das CharCount2-Feld
    unterhalb des Betreffs, allerdings nur für die Zeichen die ich im
    "Betreff" eingebe.


    D.h. der Kopf muß ein anderer Bereich sein als der E-Mail-Text, wie kann ich
    also vom Body aus dort zugreifen?


    Alternativ, wie kann ich dafür sorgen, das ein paar Zeilen nicht
    wegscrollen, sondern unterhalb des Kopfs stehen bleiben?



    Subject-Feld - onFocus:


    // Check every 1/10 of a second
    useClick2 = window.setInterval("runCharCount2()",100);



    JS-Header:


    var useClick2;
    var subjText;
    var subjTextLen;


    function runCharCount2() {
    subjText = document.forms[0].Subject.value;
    subjTextLen = subjText.length;
    document.forms[0].CharCount2.value = subjTextLen;
    }


    Vielen Dank,


    Thorolf