| |
|
|
Thomas Freier | avec einem alten Code suis je pas droite glücklich. Hat einer de euch quelque chose Besseres ou bien une concept? mon Hauptproblem était dabei, dass si qui le contenu per "BackSpace" gelöscht wird, ne...aucune Punkt pour den vorgegebenen marque avant dem Punkt (=Komma) plus 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&=Créer("Edit",%hwnd,»,30,165,80,20)
@sendmessage(Ed&,$00C5,5,0)'et sur 5 se mettre (nn.nn) begrenzt
SetFocus(Ed&)
Tandis que 1
WaitInput
cas %clé=2 : BREAK
cas GETFOCUS(Ed&): NUMWERT Ed&,2'Handle, marque vorm Komma
Endwhile
Fin
Proc NUMWERT' AUSWERTUNG sur marque et se mettre
Paramètres ED.N&,ED.N%
var a$="abcdefghijklmnopqrstuvwxyz"
a$=a$+Upper$("abcdefghijklmnopqrstuvwxyz")
a$=a$+"!§$%&/()=?''*':;,-_²³{[]}\^°<>|++-"
var c$=»
WhileLoop len(a$)
c$ = MID $(a$,&Boucle,1)' c$= qui nte Stringteil
Settext ED.N&,@Translate$(gettext$(ED.N&),c$,»)' unzulässige effacer
Settext ED.N&,@Translate$(gettext$(ED.N&),"..",".")' doppelte effacer
Endwhile
a$=$ Trim(gettext$(ED.N&))
WhileLoop ED.N%+1
@Match$("~.", a$)
Si (%MatchPos>0) AND (%MatchPos<ED.N%+1)
a$="0"+a$
EndIf
Endwhile
Si 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 à l' Ende
SetFocus(ED.N&)
ENDPROC
|
|
|
| |
|
|
|
| Vlt. ungefähr quelque chose comme:
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&=Créer("Edit",%hwnd,»,30,165,80,20)
SetFocus(Ed&)
subclass ed&,1//vrai
Tandis que 1
WaitInput
cas %clé=2 : BREAK
Endwhile
Fin
subClassProc
si &sWnd=ed&
si %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$)
si &swParam=8
si p&
si p&=3
s$=del$(s$,p&,1)
dec p&,1
endif
s$=del$(s$,p&,1)
dec p&,1
endif
endif
s$=translate$(s$,".",»)
cas len($ S)>1 : s$=ins$(".",s$,3)
setText ed&,s$
sendMessage(ed&,$B1,p&,p&)//em_setSel
d'autre
s$=ins$(ch$,s$,p&+1)
s$=translate$(s$,".",»)
cas len($ S)>1 : s$=ins$(".",s$,3)
s$=mid$(s$,1,5)
setText ed&,s$
cas p&=1 : add p&,1
sendMessage(ed&,$B1,p&+1,p&+1)//em_setSel
endif
set("winproc",0)
endif
endif
endProc
|
|
|
| |
|
|
|
Thomas Freier | @iF, un SubClassProc voulais je zwar pas prendre. Im Moment peux je chez deinem Script aucun payons eingeben. faute habe je encore pas gesucht. Ferner devrait führende Nullen ergänzt volonté. Andernfalls peut plus Nachkommastellen comme zulässig eingegeben volonté ou bien es doit chaque fois le zulässige Nombre de marque je pour Kommalage angepasst volonté. Z.B.: zul. nnnn.nn = 7 -> Eingabewert= 1.22 -> pour qui letzten 2 darf aucun weitere Eingabe plus possible son. maintenant alors seulement encore max. 4 marque. et comment siehts chez unterschiedlichen Edits aus?
PS. faute ist beim Zulässigen, dass doit dans deinem Script naturellement volonté: var erlaubteZeichen$="1234567890" . |
|
|
| |
|
|