如何控制一个Edit中不能同时拥有两个相同值,Edit长度为10。
如:不能输入:"3423e34e43","77ee65"
 只能输入:  "3423e34","77e65"也就是"e"在一个Edit框中只能有一个!

解决方案 »

  1.   

    使用POS进行判断!
    或者for 0 to length() do
          if string[x]='e' then
      

  2.   

    截获输入消息用strpos(edit1.text,'e')<>nil来判断。
      

  3.   

    不好意思,应该是strpos(pchar(edit1.text),'e')<>nil才对。
      

  4.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);begin
    if (key not in ['0'..'9']) then //if the input is a character
    begin
    if pos(key,edit1.Text)>0 then //do something you would
    end;
    end;
      

  5.   

    真丢人,应该是
    in not (key in ['0'..'9']) then
      

  6.   

    用pos和strpos也不能判断含有多少个e啊,只能判断是否有e对吧。
    可以在edit的onChange事件中用循环进行e的个数的统计。
      

  7.   

    xuhx(一觉亮天),如果POS到了,就KEY=#0。如果没有则可以输入,也没有必要非知道有几个!
      

  8.   

    是呀,放到keypress里 看看刚刚输入的字符是不是包含在Edit1.Text中
      

  9.   

    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
        if (key='e') and (pos('e',edit1.text) >0) then
           key:=#0
    end;
      

  10.   

    keypress事件中添加
    if  not ( key  in ['0'..'9'] ) then
      if ( key = 'e' ) and ( pos('e',edit1.text > 0 ) then
        key := #0
      

  11.   

    可是edit里不一定出现两次输入的是e,要是f怎么判断?
      

  12.   

    嘿嘿,最简单的是可以用一个变量,当edit1获得焦点时,变量初始化,输入第一个受控字符时,变量新给一个值,然后每输入一个字符都作检测就可以了。
      

  13.   

    谢谢各位,我没有说清楚!我的问题是,条件是:必须且只能拥有一个E,且E不能放在第一个字符!(即如果e不在第一个位置的话,输入了一个e后,就不能输入第二个e了,这样说应该表达清楚了)在第一个字符好判断POS('e',str)=1就提示错误信息!但不在第一个位置呢?我用循环控制,但就是实现不了!
      

  14.   

    strpos(edit1.text,'e')<>nil表示你以前的字符串里包含‘e'这个字符,不管在什么地方,
    POS('e',str)>0 表示同样的意思,我就奇怪你为什么要用POS('e',str)=1来判断。
      

  15.   

    需要解决:
    屏蔽Ctrl+V
    屏蔽右键菜单的 粘贴
    屏蔽替换 比如 现在有 adefg 并且,d字符高亮显示,可能可以用e替换d
    需要进行消息拦截
    哈,本人不会
    就象只能输入Double类型的串一样
      

  16.   

    TO :flyforlove(为情飞) 
     POS('e',str)=1 这样写的目的我是可以控制第一个不能为e
      

  17.   

    哪位仁兄能否抽点时间测试一下,发给我也行:mail:  [email protected] ,不胜感激!
      

  18.   

    可以if Trim(Edit.Text)='' then
          if key='e' or key='E' then
             Key:=#0;
      

  19.   

    "必须且只能拥有一个E,且E不能放在第一个字符!"
    "即如果e不在第一个位置的话,输入了一个e后,就不能输入第二个e了"
    你还是没说清楚,这两句话的意思就不一样。
    我还是不清楚你到底要求什么,看看下面这段话符不符合你的要求,
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if (trim(edit1.Text)='') and (key in ['e','E']) then
        key:=#0
    else
      if ((pos('e',edit1.Text)>0) or (pos('E',edit1.Text)>0)) and (key in ['e','E']) then
         key:=#0;
    end;
      

  20.   

    或者写成这样更简练些
    procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
    begin
    if key in ['e','E'] then
      if (trim(edit1.Text)='') then
          key:=#0
      else
      if (pos('e',edit1.Text)>0) or (pos('E',edit1.Text)>0) then
         key:=#0;
    end;