数学建模社区-数学中国

标题: 使Edit控件只能输入数字! [打印本页]

作者: ilikenba    时间: 2004-7-10 15:46
标题: 使Edit控件只能输入数字!
<>void __fastcall TForm1::Edit1Change(TObject *Sender) , b  E, v% w0 G  e
{ ( i; b" M; |9 `) h0 \
char *string;
8 y: R5 m0 j+ u2 F# Q) S* C3 Mint i,j,k; & g0 o1 L; J, _; G9 Y
char ch; % j6 z3 {6 F/ v* o6 x0 R8 T+ r% V
bool flag=false;
/ n# l9 J% b' p& c( r) _4 T
, E9 I% p  C/ B! H3 n2 h! ~, N9 G$ Vk=Edit1-&gt;Text.Length(); 7 ]; j  e. Z; T$ A
string=new char[k+1]; / E* j9 J: J+ T( U
strcpy(string,Edit1-&gt;Text.c_str());
: P1 l7 A' B2 R/ M: ~for(i=0;i&lt;k;i++)
' {2 K4 Z; `' S( X5 y. \{   z$ Y2 O" ~0 I9 z' h: O/ c
ch=string; : V. s% D% i2 j, g0 D' C
if(!(ch&gt;='0' &amp;&amp; ch&lt;='9' || ch=='.'))   U, _2 f9 S6 g9 x. k" B
{
& z5 H$ J) P" t# p* f8 Mfor(j=i;j&lt;k;j++)
" D, o4 P& F- E7 C5 v$ |% b0 A' Fstring[j]=string[j+1]; 5 J# k; v) _2 V" Y
k--; . d: A; R) G! f6 H' G) }& s
flag=true;
* H( E3 X( m  I& o}
" u! e# j1 f. C& q0 R* l9 |8 Y} ; `; Q$ x* {! [, o; R( r) {
if(flag) $ O( V9 y, S* y& w" I
Edit1-&gt;Text=AnsiString(string);
" `) Z1 b2 s, k1 H" ldelete[] string; 3 G/ h1 ]: B, E0 W/ B3 t
//GlobalText=Edit1-&gt;Text; ! y, z' J; @5 u$ W
} " @/ a& Q$ z5 g. {
//---------------------------------------------------------------------------- E! ?7 w: T; E5 ]+ Q% {
*************************************************************************************************</P>
0 Y& M: `0 j, T) }) A; D6 O6 h<>void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &amp;Key)
: o" w' T( j" b+ k{ 2 E- B# E; v5 I. ~7 Z/ `2 M5 E
    if(!(Key&gt;='0' &amp;&amp; Key&lt;='9' || Key=='.' || Key=='\b')) 3 D7 d0 F8 W( |/ B# l
        Key=0; ' s- A- c+ K4 w$ g6 Z
}
. Y3 g: s6 \* o8 N/ v//--------------------------------------------------------------------------- </P>
% H+ X7 p5 r4 t5 b7 w4 M1 B<>*************************************************************************************************</P>5 K7 V2 N5 X& S( R
<>void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &amp;Key) " j) G' g3 `( W
{
5 m$ o# W  F) l! e/ q+ \switch(Key)
& R1 G) h. K: p9 {{
$ P8 j* g9 T# ]6 g3 \, qcase '0': //接受数字键0~9的输入 2 ^3 a* \! H: n( D# m# ]
case '1': # @, W$ e0 ^/ K4 j# x
case '2':
0 |% j6 l+ N  `. q1 Jcase '3': 1 N: J( R7 g$ I9 s, d. n/ u
case '4':
7 O  c* u' p* a$ B4 Dcase '5':
1 M# f/ o  c, m. C1 ?case '6': " n& A" U' E' g
case '7': 0 m+ C9 A4 X; M  G, X
case '8':
" h) m  E3 P9 O$ L/ Ucase '9': 2 c6 o$ {( f6 T- L
case 8: //这是一个BackSpace键,不能禁止,否则不能实现删除功能了
! h& w. I; W7 n+ n. Jbreak; " g* m! w4 R  N5 L$ p) F  ^
case '.': //检查是否已存在小数点 8 `3 M/ u$ g+ Y5 O, Q. m9 V4 ]
if(DotInStr(Edit1-&gt;Text))
5 ?" B+ l# i$ L& j! {. JKey=0;
- s0 `" R9 d: P; e* x' y+ qbreak;   v1 Y7 U# M5 T$ R. {
case '+': //检查是否已存在符号
, V$ ~( w! Q2 h2 Ccase '-': 5 F/ ?* k5 A8 N+ c. A9 h
if(SignInStr(Edit1-&gt;Text)) 7 D4 j, k; m+ G" \) A5 P& Y. U# g
Key=0; 0 y1 e8 g/ `# I  U5 k. ~) i
break;
/ z- [. C  o, V2 P6 p2 cdefault: //对于其他输入键,置Key=0 + ~9 z) t: F" Z4 t  A  n( W
Key=0;
. E# B, r# e; E( `1 l. M2 z. rbreak; & b7 m) q. P, J3 M; X1 Q6 t. u
} 9 ?) T8 Y6 Q8 w
} # B& N/ ]$ }! \+ b
//---------------------------------------------------------------------------
( [. W: s9 }1 \9 u& D/ Y  m6 O8 ^, _: Mbool __fastcall TForm1:otInStr(AnsiString ass) . U1 Y* p) t& @& k! S  a. d
{ ) Q3 B% J. I) k. L6 J5 c
int ii,ll; ; U9 n* e6 |+ [& r1 @$ J- U+ s
ll=ass.Length();
' V$ I  s8 G' u- M- }- Lfor(ii=0;ii&lt;ll;ii++) . j3 ?, B% {8 j. V1 }
{ 0 S6 @) |/ z2 |9 V- I+ s' r
if(ass.c_str()[ii]=='.') , a* A8 q9 Y  W+ h
{ " B2 l" \4 j4 v
return True;
1 c! e7 p( }5 B9 d}
! S# y) n& D1 F3 D} ) T$ e' Y) k( ^7 x* Q' `+ z
return False; % @2 e  t  z. j( N
}
. u9 y2 k7 O: \" @/ Y) n: o0 M//该函数检查字符串前面是否已存在"+、-"符号
1 V# n. A( Y  o  g9 |bool __fastcall TForm1::SignInStr(AnsiString ass)   b% y& w" C9 Z
{ 4 b# q5 _  |' V
int ii,ll; 1 Q; ^6 F1 m* u. V( h& N" o/ Q, _/ ?
ll=ass.Length(); ' g% u) K! g. D6 w
for(ii=0;ii&lt;ll;ii++)
/ d" C% J1 f$ c9 R2 F( _{
( ]- |1 F! V2 T# Zif((ass.c_str()[ii]=='+')||(ass.c_str()[ii]=='-')) . m2 c6 G! `  ^! d( {
{
+ C" d$ M* B: D+ Y% `return True; 9 y% Y" L% y5 q0 t
}
. c9 S! R* L5 b} , w6 `& Q! l# z2 z
return False; 8 L- Y1 f5 f7 k* m2 D
} ; P% S3 ~8 U  g1 G
</P>




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5