数学建模社区-数学中国

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

作者: ilikenba    时间: 2004-7-10 15:46
标题: 使Edit控件只能输入数字!
<>void __fastcall TForm1::Edit1Change(TObject *Sender) 8 ], p" b  b8 s  T) A$ T' }
{ ( j% t7 a& m) F$ X
char *string;
4 a5 V% ^. g% ], e% iint i,j,k; % v; Z7 Z6 ?# G' q
char ch;
' s" K9 i+ O, R" y0 B/ Xbool flag=false; : o. r; O' a5 X( u! Z

2 }' k/ X' M& _# ]8 e6 hk=Edit1-&gt;Text.Length();
2 {6 C0 Y& Q8 Q1 s( @string=new char[k+1]; . X" I$ G2 x, o2 K
strcpy(string,Edit1-&gt;Text.c_str()); 8 H% t, X5 s) b8 }' ]
for(i=0;i&lt;k;i++)
1 G! W7 r( x9 @# s: G2 g6 h( g9 K( X{
9 c9 y0 Q+ f. F% Ich=string;
5 D- q& ?: R: T; C8 d( J. zif(!(ch&gt;='0' &amp;&amp; ch&lt;='9' || ch=='.')) 6 h& v$ `! @  C7 t# [- X6 v0 O
{
4 @2 }6 Y9 q0 i5 a7 I+ E8 Z1 z* hfor(j=i;j&lt;k;j++)
( {$ _  K7 q: y0 kstring[j]=string[j+1]; + L* U. R2 d3 p7 y, W' N4 {' m
k--; 1 t3 o7 F0 @$ G  N8 R
flag=true;
5 V; O% N* o; C  i; u( s3 U}
5 g0 Y# @. {7 |# p3 ~}
( ~( q; ^! M7 }2 Yif(flag)
1 }! ~- _9 [) u& c& n% q3 LEdit1-&gt;Text=AnsiString(string); ' y" m4 H& u  q" O; W
delete[] string; ' B$ G# E: P# o
//GlobalText=Edit1-&gt;Text; 9 x  a" `& \' a$ J3 R
} 5 |* m0 a# p" ~/ \$ d: i# H. a
//---------------------------------------------------------------------------
4 {5 _9 M! F( B- G1 G*************************************************************************************************</P>3 u$ K( M( L8 S, V: K
<>void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &amp;Key)
7 v/ q, }! U- I0 x3 C! [9 ?{
4 h; G" [+ g2 B4 E! c    if(!(Key&gt;='0' &amp;&amp; Key&lt;='9' || Key=='.' || Key=='\b'))
: X0 _4 ]; a$ X, z8 z. ?& T. Q        Key=0; 6 \, a9 A. O9 ]) {
}
: R5 i' j! y& c3 ^, R//--------------------------------------------------------------------------- </P>$ y/ {$ {6 I0 w" K
<>*************************************************************************************************</P>
1 {7 D0 A" i5 l<>void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &amp;Key)
, x" {2 _/ P7 C, A* B, @{ ) j3 h0 A( L3 ^' c
switch(Key) ( K# ], E8 p7 f# d; k- n; P
{ 3 `" H5 Y: ^6 f3 c. m! B
case '0': //接受数字键0~9的输入
8 ^' P! {: j9 ^: C7 \, xcase '1':
' W, L& Y8 g6 f3 Ucase '2': 3 m. k$ B; @( d, f
case '3':
2 G/ o9 _3 L: k0 H  xcase '4': " q9 W/ k# v5 F+ x0 }3 v
case '5':
, l6 K- O% a' s4 K$ i& Q9 a- Ocase '6': 3 S$ m2 i8 O$ U7 Z: H( S
case '7': / ?! P) r: E) |1 }" ^; E
case '8':
7 j$ C- N7 s+ G* Ncase '9':
5 c! R$ W: u/ c& \case 8: //这是一个BackSpace键,不能禁止,否则不能实现删除功能了
' U! `* K7 P* o2 Abreak;
  U& i, z2 ?7 K/ Q6 X7 |" xcase '.': //检查是否已存在小数点
8 F. A& [" @- y/ K# Mif(DotInStr(Edit1-&gt;Text)) / [6 O% [( @0 j) G' L& t
Key=0; - o& v) o( v, w. v+ I
break; + C3 k1 E9 K# F7 P* R* v
case '+': //检查是否已存在符号 - L7 z' _: h/ t0 }
case '-':
# S/ _* L; G# G. k) s. r5 L; iif(SignInStr(Edit1-&gt;Text))
/ f- y% S, M' YKey=0;
+ ?3 O: W8 Z5 }9 C  Z" }, ?8 \break; 6 _1 f/ [! Z+ e2 q
default: //对于其他输入键,置Key=0
$ `- g2 U' R, `) c& hKey=0;
4 P6 ~4 b; k* y: x% y: h3 Z, nbreak; 7 v2 @6 V( x  N2 K, I3 N+ U, Y
}
6 l5 K  z' L2 ^: Q& B( q} % e' ^, E% {0 M7 k$ _& F8 K
//---------------------------------------------------------------------------
- h/ h+ {0 v) G" Abool __fastcall TForm1:otInStr(AnsiString ass) : K4 _+ B0 q; D1 R0 q
{
2 N9 A) M. [4 u& V9 oint ii,ll;
/ ?8 F( }& U/ r/ |8 i0 `ll=ass.Length();
& W' l! M' i9 r' J8 U  I& wfor(ii=0;ii&lt;ll;ii++)
& a" _: H: E% j4 S{
  J! t3 j1 w2 \2 n9 f% k  Yif(ass.c_str()[ii]=='.')
  C" x! ^; G. ]{ * K0 @. _1 U! t; f4 g3 i7 Z1 P- y
return True; + D6 L% V0 e1 ?" R7 a8 R+ p
}
7 _: c) j' e* |" [}
# h) K" K8 c& Dreturn False;
. B6 @, X$ N% l- X( [}
) W+ f0 m$ G6 K6 E5 @//该函数检查字符串前面是否已存在"+、-"符号
1 y& ^, H7 G8 x) b+ T0 K* ]% z. Kbool __fastcall TForm1::SignInStr(AnsiString ass) 6 L2 z4 V2 J7 V8 f: M$ M: @( m
{
- q& j) [" [5 cint ii,ll; 5 j' q! [, `# V0 g6 Y* M, ~8 j
ll=ass.Length(); ( F' x* L4 a( H- b
for(ii=0;ii&lt;ll;ii++)
0 y4 g+ Y+ f5 l/ _{ 1 Z# u" b( n" M" H
if((ass.c_str()[ii]=='+')||(ass.c_str()[ii]=='-')) ! G' R5 N1 d+ e+ D8 ]9 v
{   O3 O1 |# m/ w0 [( k
return True;
& _1 }& L, {: H# d9 F6 X9 S8 v  f) t}
, {$ I8 ^" B8 k3 V* u}
, O" V: u' N5 ]: _return False;
. W: M+ w. y4 `% v2 N7 D}
5 C7 G: S* P& d/ h7 c; q0 N</P>




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