数学建模社区-数学中国

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

作者: ilikenba    时间: 2004-7-10 15:46
标题: 使Edit控件只能输入数字!
<>void __fastcall TForm1::Edit1Change(TObject *Sender) + ^2 o: x# s/ F7 U8 a: q5 ?6 @
{
) S- @: E2 \6 E! [; u# Jchar *string; " F! c1 s9 e$ K) D2 X5 @
int i,j,k; # ?9 W9 _3 `' w: R
char ch; & S' c8 Y4 f" H
bool flag=false;   m# J+ g8 y9 s
- i, N: m% T4 y! v+ e/ x6 m
k=Edit1-&gt;Text.Length();
9 j+ X" F# F8 t! }! i: H3 }; nstring=new char[k+1]; " l" u, a+ b: M( m9 N  U
strcpy(string,Edit1-&gt;Text.c_str());
$ Z# H% q' w* O* M3 B- Xfor(i=0;i&lt;k;i++)
% i. a  x" G7 b9 v) @: I{   f8 s: i9 W2 e/ w) u! E. e
ch=string;
* G7 c* c. j- L8 qif(!(ch&gt;='0' &amp;&amp; ch&lt;='9' || ch=='.'))
" B- u8 c* |  u- c3 H: N{ 8 C6 z, M5 Q. g8 O3 @% d/ y, E, M
for(j=i;j&lt;k;j++) ( E: Y* o2 b# l% _' O
string[j]=string[j+1];
3 b6 t) i8 Z3 c; W6 t: }) _4 c5 bk--; % x8 H- _7 r/ c1 }
flag=true;
' j$ \+ h9 d! m8 I}
8 ~" F9 T& U9 G( X+ x}
" e' I6 I* z( {9 \' V+ `' ~if(flag)
+ e3 V' h! ]5 a- pEdit1-&gt;Text=AnsiString(string); ' I1 k) V. }# j5 Y$ {0 Z
delete[] string; 3 ~. x. H# q  @) Q
//GlobalText=Edit1-&gt;Text;
, }5 ~! f1 w. o5 Y1 ]; X9 A}
; p! }! C& T2 m+ X//---------------------------------------------------------------------------
! U2 b: l9 Y3 O5 M  ]*************************************************************************************************</P>5 L, B9 Z: z1 c$ o6 B
<>void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &amp;Key)
( y3 [- i+ F: V- p  j{
7 f0 e$ j, ]# x  _! W    if(!(Key&gt;='0' &amp;&amp; Key&lt;='9' || Key=='.' || Key=='\b')) - @! @1 q% z! ?& k3 ]
        Key=0;
' z: Q1 z, b) v7 b; }}
/ j  K9 i) `1 C//--------------------------------------------------------------------------- </P>3 q. f# X# P; v
<>*************************************************************************************************</P>/ X( g8 T5 y' \) a; K
<>void __fastcall TForm1::Edit1KeyPress(TObject *Sender, char &amp;Key)
' a$ `# l" p. T7 y; {, c( z7 c5 r{
/ Q- j' _; T* K& S; a& mswitch(Key) . Z0 A, L( ^) E9 O/ W# ~
{ , |6 Y6 M9 {( `4 L& h2 [& o: H
case '0': //接受数字键0~9的输入
+ _) Q* X0 G* f: N2 gcase '1':
# K0 ?7 r1 b  Rcase '2': ( R3 r9 a6 f! {8 e7 \, D
case '3': 6 K8 X# S  [8 B6 m
case '4': & y8 e( u* j/ d! R- V
case '5': : Y, |; ^- Z& _% y
case '6':
5 c7 P5 J  w/ G* |0 _) zcase '7':
; t. R5 q+ K5 z) p7 e7 Ycase '8':
+ P" E3 z$ {9 u" T- b. Pcase '9':
! A" v$ H2 _' o9 |: A- N8 ucase 8: //这是一个BackSpace键,不能禁止,否则不能实现删除功能了 + |3 F1 r+ V! e3 ~
break;
& u2 ~7 Q$ O0 R5 _5 s0 {& ucase '.': //检查是否已存在小数点 1 R, m. q( ~# N* d3 U  q9 y
if(DotInStr(Edit1-&gt;Text)) : J. T( S9 l8 @, \1 u9 a
Key=0; # i/ }+ ]4 ^$ U3 x4 @5 J
break; 5 k; ^6 [. U9 q' p
case '+': //检查是否已存在符号 + [" b+ Y( |; S$ ~9 [0 u2 X! J" O. c0 u
case '-': 7 e8 x7 T3 h; C/ M2 J6 M
if(SignInStr(Edit1-&gt;Text))
& R- `6 ^0 V: r3 a2 KKey=0;
! h* _; ?8 S9 w/ f9 ^0 i+ n: _break;
" P8 f, W& i$ H( Q: a8 M0 y, {# adefault: //对于其他输入键,置Key=0   V7 U9 ^! U  g/ A( [! d
Key=0; 9 `" b$ I# o9 L" V+ A) w9 g9 k" Q
break; 7 F3 r, s+ |2 V0 O( a& Y' \
}
) A% o3 Q. g+ w( m9 G( L} 5 G0 O+ l: a1 |" Z8 m
//--------------------------------------------------------------------------- . W0 {7 r6 G4 G, Z
bool __fastcall TForm1:otInStr(AnsiString ass)
. o/ N6 t" s; C8 a: U; C{
; l! V: G6 L  z  T2 U6 Gint ii,ll; - @+ g. Y' U7 k9 g2 I( H3 u
ll=ass.Length();
/ N# y  B" w7 g: G) c* Wfor(ii=0;ii&lt;ll;ii++)
6 Q; ^  A6 l5 C+ C{ " ]; e6 G. a+ b/ Y$ d9 |
if(ass.c_str()[ii]=='.')
& }" F) Z! z: I$ s3 T{
8 \& A% G  c. ~- V! Wreturn True; 9 g- _3 [3 m, r) N4 s
}
6 X6 d# J5 ]" \; ^* L) `( _} ' P+ _: h( s* s; c
return False; : M3 I8 X1 O' N2 N/ q* q: b
}
8 ~& ]* G3 {  y' @0 G8 W//该函数检查字符串前面是否已存在"+、-"符号 $ T/ \! t  g% _( B' g
bool __fastcall TForm1::SignInStr(AnsiString ass) 1 d0 f8 @" s2 ~  r% n
{ 0 p! X& r. Z/ R0 g4 E8 Y
int ii,ll;
* t, `2 I) H; All=ass.Length(); ; {, e3 T" F5 A, Y9 R
for(ii=0;ii&lt;ll;ii++)
2 z& L$ ^1 ~; ?8 J5 e' w) ?{ , ]7 `. s: g- G
if((ass.c_str()[ii]=='+')||(ass.c_str()[ii]=='-')) * W" c- r$ q- K2 k( b
{
2 k0 p0 v0 r# l# A; o2 J. ereturn True;
$ v/ j0 e1 W+ @8 u1 v. I5 v}
# t. t7 |0 W; F: b( f} ! Z5 ]) s* W1 z: t$ _
return False;
, \/ m7 J1 L/ v4 ?8 k}
% G, m- T! o6 @) k</P>




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