Zeichen-Eingabe in Echtzeit zählen.

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Unsere Datenschutzerklärung wurde aktualisiert. Mit der Nutzung unseres Forums akzeptierst Du unsere Datenschutzerklärung. Du bestätigst zudem, dass Du mindestens 16 Jahre alt bist.

    • Zeichen-Eingabe in Echtzeit zählen.

      In vielen Foren sind die Einträge oder Bewertungen (EBay) begrenzt.
      Diese Begrenzung ist kein Problem mit der passenden Message.

      'SendMessage(handle%,$00C5,2,0) 'dritter Parameter gibt die Stellenanzahl an

      Wie aber kann ich schon beim Schreiben unter dem Editor dem User anzeigen, wieviel Zeichen er noch hat :??:
      Danke für eine hilfreiche Antwort :-)

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von horst_ ()

    • Volkmar schrieb:

      Vor jeden WaitInput die Länge abfragen und auswerten. Habe nur Handy, deshalb mal so knapp.

      Gruß Volkmar
      Ich schreibe in einem Multedit, da gibt es nur ein Waitinput.
      Die Zeichenzahl soll sich nach jedem neuen Zeichen aktualisieren.
      Die Zählerei muss mit einer Message möglich sein, aber welche ?????
    • Hallo Horst,

      da wirst Du ohne Subclassing nicht auskommen (siehe Hilfe). Mit dem Subclassing erreichst Du, dass Du auf Messages reagieren kannst, während Du im Waitinput bist. Ich habe Dir mal ein Beispiel geschrieben. Dort wird für das Multiedit das Subclassing eingeschaltet. Immer dann, wenn im Multiedit eine Taste losgelassen wird (WM_KEYUP), wird der Befehlscode 3000 ausgelöst, der das WaitInput unterbricht, so dass die Hauptschleife darauf reagieren kann:

      Quellcode

      1. windowstyle %windowstyle | $200 // Dialogfensterstil
      2. cls
      3. var handle hMEdit = create("MultiEdit", %hWnd, "", 10, 10, 200, 200)
      4. var handle hAnzahl = create("Text", %hWnd, "0", 10, 220, 50, 14)
      5. var integer ende = 0
      6. subclass hMEdit, 1 // Subclassing für das Multiedit einschalten
      7. subclassproc
      8. if subclassmessage(hMEdit, $0101, 0, 0) // Wenn im Multiedit eine Taste losgelassen wird (WM_KEYUP)
      9. setmenuitem 3000 // Den Befel 3000 auslösen, der das Waitinput unerbricht
      10. endif
      11. endproc
      12. whilenot ende
      13. waitinput
      14. if %key = 2
      15. ende = 1
      16. elseif menuitem(3000) // Im Multiedit wurde eine Taste losgelassen
      17. setText hAnzahl, str$(len(getText$(hMEdit)))
      18. endif
      19. endwhile
      20. end
      Alles anzeigen

      Gruß
      Roland
      (Intel Duo E8400 3,0 GHz / 4 GB RAM / 250 GB HDD / ATI Radeon HD4770 512 MB / Windows Vista - ausgemustert zum Verkauf)
      AMD Athlon II X2 2,9 GHz / 8 GB RAM / 500 + 1000 GB HDD / ATI Radeon 3000 (onboard) / Windows 10(64) - XProfan X4


      http://www.xprofan.de
    • Jetzt wieder am Rechner, kann ich da auch vernünftig schreiben, was ich meinte

      Quellcode

      1. CLS
      2. Def %MaxLen 20
      3. Declare Handle Edit
      4. Declare Handle Anzeige
      5. Declare Int Rest
      6. Edit = Create("MultiEdit", %HWnd, "", 4, 4, 320, -96)
      7. Anzeige = Create("Text", %HWnd, "", 4, 108, 164, 20)
      8. SendMessage(Edit,$00C5,%MaxLen,0)
      9. While 1
      10. Rest = %MaxLen - Len(GetText$(Edit))
      11. Case Rest = 0 : Beep
      12. SetText Anzeige, Str$(Rest) + " Zeichen verbleiben"
      13. WaitInput
      14. Case %Key = 2 : Break
      15. EndWhile
      Alles anzeigen
      Unter dem Multiedit mal eine Textanzeige, in der die verbleibenden Restzeichen angezeigt werden.

      Gruß Volkmar
    • @Volkmar
      Danke für den Code.
      Bin aber mit dem Code von Roland auch zu der Lösung gekommen.
      (Es führen viele Wege über XProfan ;-) )
      Da ich ja noch nach "alter Väter Sitte" schreibe (benutze das Handle nicht),
      hab ich erst umschreiben müssen und nun klappt es prima.
      Wieder einmal hat sich die XProfangemeinde als sehr hilfreich erwiesen. :top: