CEdit - editierung einschränken?



  • Tach zusammen,

    ich hab ein kleines Problem. Ich muss in meinem CEdit-Control das editieren und selectieren der ersten beiden chars vermeiden. Grund ist der, dass ich eine Maßsstabseingage habe, wo das 1: natürlich nicht editierbar sein soll.

    Inhalt des Edits sieht so aus: 1:10000

    Mit SetSel schaffe ich es bereits erst ab den 2 char zu selectieren wenn das Objekt den Fokus bekommt, aber leider kann der Anwender danach alles machen. Löschen, neue Selectierung, usw. Leider eben auch die ersten 2 chars.

    Hat jemand vielleicht einen Tip wie ich das angehen könnte, wäre sehr dankbar.

    Greetrings codeman



  • Die einfachste Möglichkeit: Schreib das "1:" vor das Editfeld 😉

    Ansonsten könntest du die notwendigen Benachrichtigungen des Editfeldes (EM_SETSEL und WM_SETTEXT) abfangen und verarbeiten

    PS: Was spricht eigentlich dagegen, einen Maßstab wie 10:1 oder 4:5 eingeben zu können?



  • CStoll schrieb:

    Ansonsten könntest du die notwendigen Benachrichtigungen des Editfeldes (EM_SETSEL und WM_SETTEXT) abfangen und verarbeiten

    PS: Was spricht eigentlich dagegen, einen Maßstab wie 10:1 oder 4:5 eingeben zu können?

    Hmm, EM_SETSEL hab ich unter den Control Events nicht gefunden, werd aber gleich mal in der MSDN nachschauen.

    Leider ist die Konvention so, dass nur Maßstäbe von 1: verwendet werden sollen. Wie gesagt leider 😞

    Danke aber für den Tip


  • Mod

    Umso mehr würde ich das 1: in einem Edit Control oder Static vor das Eingabefeld platzieren. Es gibt viel zu viele Möglichkeiten bei denen man im EditControl die Daten manipulieren kann.



  • Seh ich mittlerweile auch so. Hab einige Zeit herumprobiert, bin nun aber so weit die einfache Methode zu nehmen.

    Schade ist es allerding schon, dass es nicht geht. Schaut einfach besser aus.
    So schwer wäre es auch nicht gewesen die Funktionalität in der CEdit-Klasse zu implementieren, nur das der Event-Handler wohl vollkommen ausgelastet wäre dem Objekt bei jedem Cursor-Movement eine Nachricht zu schicken.

    Ansonsten hätte man eine schöne Objektkomponente definieren können die beginnende chars nicht editieren lässt.

    Sei es drum, ist auch so OK.



  • Es gab mal ein CMSMask, da konnte man auf ein Editfeld eine Maske legen. Es
    wäre doch so was ähnliches, was Du suchst.

    Finde im VS 2005 aber kein passendes Control mehr.



  • Hi Tester2,

    ist möglich...
    Versuche gerade heraus zu finden wie das mit der Maske funktionieren soll.
    Hast du da einen Tip. Ich arbeite mit VS 2003, da könnte das Objekt vielleicht noch existieren.

    Thx codeman



  • Bei codeproject.com gibt es die AMSEdit Sammlung (Validating Edit Controls), damit müsste das auch gehen. 🙂



  • Hallo codeman,
    konkretes kann ich Dir dazu nicht sagen, habe das Element selbst nie benutzt.
    Ich weiß nur, das einige es mit Vorliebe für Währungsangaben (Tausenderpunkte etc.) verwenden. Aber codeproject ist sicher gut.


Anmelden zum Antworten