Feststehende Zeichen in Editfeld, Alternative zu EM_NOSETFOCUS



  • Es gibt da eine schnelle selbstgestrickte Lösung: Du legst nebeneinander mehrere Editfelder an und setzt dazwischen die Trennzeichen (Punkt, Doppelpunkt mit LTEXT). Wenn ein vorangehendes Feld voll ist, setzt du mit Setfocus den Cursor auf das nachfolgende Feld. Ist vielleicht nicht optimal, aber geht einfach.

    Sofern es für ein einzelnes Editfeld kein geeignetes Utility gibt bleibt jeder eigene Ansatz mühsam.

    Meinen Ansatz für ein Datum TT.MM.JJJJ kannst du dir in Aktion in meinem Programm Knete (Berechnung von Krediten und Darlehen) ansehen. Das Programm ist zum Download auf meiner HP http://berniebutt.npage.de zu finden.



  • neo47 schrieb:

    Habs versucht. Allerdings bekommt das Feld immmer noch den Focus. Den Inhalt hab ich zwar mit ES_READONLY "geschützt", Allerdings wärs noch das Sahnehäuptchen wenn mand das Feld gar nicht erst anklicken könnte.

    Subclass das Feld und bearbeite:

    case  WM_NCHITTEST:
    		return (LRESULT) HTTRANSPARENT;
    


  • @Belli: Erste Sahne, funktioniert einwandfrei. Genau was ich gesucht habe.

    @berniebutt: So in der Art hab ich mir das auch shcon überlegt, allerdings passt mir das nicht so richtig. Wird sich aber wies aussieht nicht umgehen lassen. Mit deinem Link komm ich auf keine Seite, falsch geschrieben?


  • Mod

    Was spricht gegen ein Masked-Edit Control?
    Dazu gibt es x-fach Code im Netz.



  • Hör ich zum ersten mal. Ich find jetzt ehrlichgesagt so gut wie keinen code im Netz. Das ganze soll auch wieder in einem Dialog laufen. Bei den Ressourcen find ich da nichts.


  • Mod

    Schau mal auf www.codeproject.com



  • Da find ich nur Sachen mit C# und MFC aber nichts passendes.



  • Wenn man sich unter XP den Dialog "Eigenschaften von Datum und Uhrzeit" mit Spy++ betrachtet, kann man feststellen, dass es sich in Wirklichkeit um drei verschiedene Editfelder handelt.
    Das kannst du ja auch machen, 3 Editfelder anlegen, zwischen ihnen Static-Controls setzen und hübsch einrahmen. Wenn du nun die Hintergrundfarbe entsprechend setzt und den Editfeldern das Flag WS_BORDER vorenthältst, merkt der Anwender davon gar nichts.
    Anschließend kannst du die Editfenster subclassen und nach einem Mausklick den kompletten Text markieren. Wenn der Anwender die Pfeiltasten betätigt, bekommt das nächste/vorhergehende Feld den Focus.



  • @yahendrik: bist du dir sicher, dass auch bei mask-edit für Datumsfelder mit 3 einzelnen Editfeldern gearbeitet wird?

    Dann kann ich ja ruhig meine hier vorgeschlagene Lösung beibehalten und brauche diese nicht als veraltet anzusehen. Auch die Subclasses setze ich so ein.
    Ich hatte gedacht, MFC hätte sich da etwas mehr einfallen lassen. Gut zu wissen!



  • berniebutt schrieb:

    bist du dir sicher, dass auch bei mask-edit für Datumsfelder mit 3 einzelnen Editfeldern gearbeitet wird?

    Weiß ich nicht, ein Ding der Unmöglichkeit ist die Implementierung aber mit Sicherheit nicht. Bei dem Zeit-Edit-Feld (bzw. Feldern) unter XP wurde es aber so gemacht.


Anmelden zum Antworten