Deutsch
Forum

zulässige Eingabe im num. Edit steuern

 

Thomas
Freier
Mit einem alten Code bin ich nicht recht glücklich. Hat einer von euch etwas Besseres oder eine Idee?
Mein Hauptproblem war dabei, dass wenn der Inhalt per "BackSpace" gelöscht wird, kein Punkt nach den vorgegebenen Zeichen vor dem Punkt (=Komma) mehr gesetzt wird.
Def GetSysColor(1) !"USER32","GetSysColor"
cls GetSysColor(15)
UseFont "Arial",15,0,0,0,0
SETDIALOGFONT 1
CreateText(%hwnd,"num. Eingabe max.: nn.nn",30,120,200,22)
var Ed&=Create("Edit",%hwnd,"",30,165,80,20)
@sendmessage(Ed&,$00C5,5,0)'und auf 5 Stellen (nn.nn) begrenzt
SetFocus(Ed&)

While 1

    WaitInput
    case %key=2 : BREAK
    case GETFOCUS(Ed&): NUMWERT Ed&,2'Handle, Zeichen vorm Komma

EndWhile

End

Proc NUMWERT' AUSWERTUNG auf Zeichen und Stellen

    Parameters ED.N&,ED.N%
    var a$="abcdefghijklmnopqrstuvwxyz"
    a$=a$+Upper$("abcdefghijklmnopqrstuvwxyz")
    a$=a$+"!§$%&/()=?''*':;,-_²³{[]}\^°<>|++-"
    var c$=""

    WhileLoop len(a$)

        c$ = MID$(a$,&Loop,1)' c$= der nte Stringteil
        Settext ED.N&,@Translate$(gettext$(ED.N&),c$,"")' unzulässige löschen
        Settext ED.N&,@Translate$(gettext$(ED.N&),"..",".")' doppelte löschen

    EndWhile

    a$=trim$(gettext$(ED.N&))

    WhileLoop ED.N%+1

        @Match$("~.", a$)

        If (%MatchPos>0) AND (%MatchPos<ED.N%+1)

            a$="0"+a$

        EndIf

    EndWhile

    If len(a$)=ED.N%

        casenot @IsKey(8):a$=left$(a$,ED.N%)+"."

    EndIf

    SetText ED.N&,a$
    sendmessage(ED.N&,$00B1,len(gettext$(ED.N&)),len(gettext$(ED.N&))+1)'Cursor ans Ende
    SetFocus(ED.N&)

EndProc

 
Gruß Thomas
Windows XP SP2, XProfan X2
10.06.2011  
 



Vlt. ungefähr sowas:
var erlaubteZeichen$="abcdefghijklmnopqrstuvwxyz"+Upper$("abcdefghijklmnopqrstuvwxyz")+"!§$%&/()=?''*':;,-_²³{[]}\\^°<>|++-"
Def GetSysColor(1) !"USER32","GetSysColor"
cls GetSysColor(15)
UseFont "Arial",15,0,0,0,0
SETDIALOGFONT 1
var nix&=CreateText(%hwnd,"num. Eingabe max.: nn.nn",30,120,200,22)
var Ed&=Create("Edit",%hwnd,"",30,165,80,20)
SetFocus(Ed&)
subclass ed&,1//true

While 1

    WaitInput
    case %key=2 : BREAK

EndWhile

End

subClassProc

    if &sWnd=ed&

        if %sMessage=258//wm_char

            var p&=hiWord(sendMessage(ed&,$B0,0,0))//em_getSel
            var s$=getText$(ed&)
            var ch$=chr$(&swParam)

            ifnot instr(ch$,erlaubteZeichen$)

                if &swParam=8

                    if p&

                        if p&=3

                            s$=del$(s$,p&,1)
                            dec p&,1

                        endif

                        s$=del$(s$,p&,1)
                        dec p&,1

                    endif

                endif

                s$=translate$(s$,".","")
                case len(s$)>1 : s$=ins$(".",s$,3)
                setText ed&,s$
                sendMessage(ed&,$B1,p&,p&)//em_setSel

            else

                s$=ins$(ch$,s$,p&+1)
                s$=translate$(s$,".","")
                case len(s$)>1 : s$=ins$(".",s$,3)
                s$=mid$(s$,1,5)
                setText ed&,s$
                case p&=1 : add p&,1
                sendMessage(ed&,$B1,p&+1,p&+1)//em_setSel

            endif

            set("winproc",0)

        endif

    endif

endProc

 
10.06.2011  
 




Thomas
Freier
@iF, ein SubClassProc wollte ich zwar nicht nehmen. Im Moment kann ich bei deinem Script keine Zahlen eingeben. Fehler habe ich noch nicht gesucht. Ferner sollten führende Nullen ergänzt werden. Andernfalls können mehr Nachkommastellen als zulässig eingegeben werden oder es muß jedes mal die zulässige Anzahl der Zeichen je nach Kommalage angepasst werden. Z.B.:
zul. nnnn.nn = 7 -> Eingabewert= 1.22 -> nach der letzten 2 darf keine weitere Eingabe mehr möglich sein. Jetzt also nur noch max. 4 Zeichen.
Und wie siehts bei unterschiedlichen Edits aus?

PS. Fehler ist beim Zulässigen, dass muß in deinem Script natürlich werden: var erlaubteZeichen$="1234567890" .
 
Gruß Thomas
Windows XP SP2, XProfan X2
10.06.2011  
 



Antworten


Thementitel, max. 100 Zeichen.
 

Systemprofile:

Kein Systemprofil angelegt. [anlegen]

XProfan:

 Beitrag  Schrift  Smilies  ▼ 

Bitte anmelden um einen Beitrag zu verfassen.
 

Themenoptionen

3.099 Betrachtungen

Unbenanntvor 0 min.
GC5704.08.2016
Ernst13.06.2016
rquindt21.02.2016
Rainer Hoefs30.06.2015
Mehr...

Themeninformationen

Dieses Thema hat 2 Teilnehmer:

Thomas Freier (2x)
iF (1x)


Admins  |  AGB  |  Anwendungen  |  Autoren  |  Chat  |  Datenschutz  |  Download  |  Eingangshalle  |  Hilfe  |  Händlerportal  |  Impressum  |  Mart  |  Schnittstellen  |  SDK  |  Services  |  Spiele  |  Suche  |  Support

Ein Projekt aller XProfaner, die es gibt!


Mein XProfan
Private Nachrichten
Eigenes Ablageforum
Themen-Merkliste
Eigene Beiträge
Eigene Themen
Zwischenablage
Abmelden
 Deutsch English Français Español Italia
Übersetzungen

Datenschutz


Wir verwenden Cookies nur als Session-Cookies wegen der technischen Notwendigkeit und bei uns gibt es keine Cookies von Drittanbietern.

Wenn du hier auf unsere Webseite klickst oder navigierst, stimmst du unserer Erfassung von Informationen in unseren Cookies auf XProfan.Net zu.

Weitere Informationen zu unseren Cookies und dazu, wie du die Kontrolle darüber behältst, findest du in unserer nachfolgenden Datenschutzerklärung.


einverstandenDatenschutzerklärung
Ich möchte keinen Cookie