| |
|
|
Thomas Freier | with one middle-aged code be I do not right happy. has of/ one of you something better or a idea? my Hauptproblem was thereby, that if the Content by "BackSpace" deleted becomes, no point to whom pretended characters to the point (=Komma) More staid becomes.
Def GetSysColor(1) !"USER32","GetSysColor"
cls GetSysColor(15)
UseFont "Arial",15,0,0,0,0
SETDIALOGFONT 1
CreateText(%hwnd,"num. input max.: nn.nn",30,120,200,22)
var Ed&=Create("Edit",%hwnd,"",30,165,80,20)
@sendmessage(Ed&,$00C5,5,0)'and on 5 to put (nn.nn) terminable
SetFocus(Ed&)
While 1
WaitInput
case %key=2 : BREAK
case GETFOCUS(Ed&): NUMWERT Ed&,2'lever, characters before the comma
EndWhile
End
Proc NUMWERT' AUSWERTUNG on characters and to put
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$= the nte Stringteil
Settext ED.N&,@Translate$(gettext$(ED.N&),c$,"")' unzulässige delete
Settext ED.N&,@Translate$(gettext$(ED.N&),"..",".")' double delete
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 end
SetFocus(ED.N&)
ENDPROC
|
|
|
| Gruß Thomas Windows XP SP2, XProfan X2 | 06/10/11 ▲ |
|
|
|
|
| Perhaps. about something like:
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. input 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$=in that$(".",s$,3)
setText ed&,s$
sendMessage(ed&,$B1,p&,p&)//em_setSel
else
s$=in that$(ch$,s$,p&+1)
s$=translate $(s$,".","")
case len(s$)>1 : s$=in that$(".",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
|
|
|
| |
|
|
|
Thomas Freier | @iF, one SubClassProc wished I of course not take. in the momentum can I with your Script no numbers prompt. Error have I not yet sought. moreover should führende nobodies complement go. otherwise can More Nachkommastellen as permitted association go or it must each times the zulässige Number of characters according to Kommalage adjusted go. Z.B.: zul. nnnn.nn = 7 -> Eingabewert= 1.22 -> to the last 2 must no further input More possible his. now means only yet max. 4 characters. and How siehts with unterschiedlichen Edits from?
PS. Error is at Zulässigen, that must in your Script naturally go: var erlaubteZeichen$="1234567890" . |
|
|
| Gruß Thomas Windows XP SP2, XProfan X2 | 06/10/11 ▲ |
|
|
|