小弟做个数据库小程式,需要用几个EDIT输入同一类但内容不同的信息,我想在EDIT的ON CHANGE中进行对比,每个EDIT中的内容都必须是唯一的,如果发现EDIT内容相同就清空该EDIT重新输入!这个判断怎么做!!!要实例或代码才给分!!!

解决方案 »

  1.   

    在OnChange事件中判断不太合适吧,即使把所有Edit控件的OnChange指向同一事件,在其内容改变时遍历所有的Edit并对比Text的不同,效率不高。而且遇到abc和abcd相比较时,算不算重复?
      

  2.   

    我感觉在哪里写并不重要,重要的是现在没有思路!!
    EDIT的值在输入前为空
    ABC与ABC为重叠不行,ABC与ABCD,OK.如果发现重叠的情况提示?关键是该如何对比想不出来!!我当然想破了头想不出来才问的!晕~我现在想出来的只能对比两个EDIT,要不就是不能为空可以对比!!
      

  3.   

    用笨的方法在提交前检查
    procedure TForm1.Button1Click(Sender: TObject);
    var a:array[1..10]of string;
        i,j,n:integer;
    begin
      n:=5;
      a[1]:=Edit1.Text;
      a[2]:=Edit2.Text;
      a[3]:=Edit3.Text;
      a[4]:=Edit4.Text;
      a[5]:=Edit5.Text;
      for i:=1 to n do
       for j:=i+1 to n do
         if a[i]=a[j] then
           begin
             重新输入
             exit
           end;
       输入没用重复,进行处理
    end;
      

  4.   

    将需要进行检测的EDIT的Tag设为大于100,写一个函数:function TForm1.Check(CurEdit:TEdit): Boolean;
    var
      i:integer;
    begin
      Result:=True;
      For i:=0 to ComponentCount-1 do
        if (Components[i].Tag > 100) and (TEdit(Components[i]) <> CurEdit) and (TEdit(Components[i]).Text <> '') and (UpperCase(TEdit(Components[i]).Text) = UpperCase(CurEdit.Text)) then
          Result:=False;
    end;procedure TForm1.Edit1Exit(Sender: TObject);
    begin
      if not Check(TEdit(Sender)) then
        begin
        TEdit(Sender).Text:='';
        TEdit(Sender).SetFocus;
        end;
    end;procedure TForm1.Edit2Exit(Sender: TObject);
    begin
      if not Check(TEdit(Sender)) then
        begin
        TEdit(Sender).Text:='';
        TEdit(Sender).SetFocus;
        end;
    end;procedure TForm1.Edit3Exit(Sender: TObject);
    begin
      if not Check(TEdit(Sender)) then
        begin
        TEdit(Sender).Text:='';
        TEdit(Sender).SetFocus;
        end;
    end;