如果我有5个或更多的EDIT,只要其中一个为空就SHOWMESSAGE,要如何做呢?小弟是初学的,请各位大哥给小弟代码好吗??

解决方案 »

  1.   

    大概是这样吧
    procedure TForm1.Button1Click(Sender: TObject);
    var i:integer;
    begin
      for i:=0 to ComponentCount-1 do
        if Components[i] is TEdit then
        if (Components[i] as TEdit).Text=''then ShowMessage('空');
    end;
      

  2.   

    假如你的窗体上有5个edit,名字分别为edit1,edit2,..edit5
    procedure TForm1.Button1Click(Sender: TObject);
    var
    i : integer;
    begin
      for I := 1 to 5 do
      begin
        if TEdit(FindComponent('edit'+inttostr(i))).Text = '' then
        begin
          ShowMessage('必须填入全部资料');
          TEdit(FindComponent('edit'+inttostr(i))).SetFocus;
          break;
        end;
      end;end;
      

  3.   

    我上面给你的代码要求edit必须按照顺序命名,不通用,一楼的通用一些,我给一楼补充一下,递归判断,如果你的窗体上有一个panel1,panel1上有N个edit,还有一些panel,而这些panel上也有edit,那么可以用递归的方法做procedure TForm1.ClearEdit(Acontrl: TWinControl);
    var
    i : integer;
    begin
       for i := 0 to Acontrl.ControlCount-1 do
       begin
          if ((Acontrl.Controls[i] is TEdit) and (((Acontrl.Controls[i]) as TEdit).Text = '') then showmessage('');
              
          if Acontrl.Controls[i] is TCustomControl then
           ClearEdit( (Acontrl.Controls[i] as TCustomControl))
       end;
       
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
       ClearEdit(Panel2);
    end;
      

  4.   

    上面的方法,你可以制定判断那些容器类控件上的edit必须为空。
      

  5.   

    还在线吗,朋友,你的方法是对的,但是如果我的2个或以上没有填的话,那么就会SHOWMESSAGE 2次或以上了..可不可以只SHOWMESSAGE一次??
      

  6.   

    注意在showmessage之后,加上一个 break;就可以了。
      

  7.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
    i:integer;
    begin
      for i:=0 to componentcount -1 do
      if components[i] is tedit then
      if (components[i] as tedit).Text='' then
      showmessage('你有一个或以上地方没有填');
      break
      else
      begin
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('insert into plu (barcode,comname,price,saleprice,vipsaleprice)');
    [Fatal Error] Unit1.pas(64): Internal error: T2335晕啊,,为何不能编译通过...这个T2335又是什么意思???
      

  8.   

    for i:=0 to componentcount -1 do
    begin
      if components[i] is tedit then
        if (components[i] as tedit).Text='' then
        begin
          showmessage('你有一个或以上地方没有填');
          break;
        end 
    end;
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('insert into plu (barcode,comname,price,saleprice,vipsaleprice)');
      

  9.   

    var
    flag : boolean;
    begin
      flag := true;
    for i:=0 to componentcount -1 do
    begin
      if components[i] is tedit then
        if (components[i] as tedit).Text='' then
        begin
          showmessage('你有一个或以上地方没有填');
          flag := false;
          break;
        end 
    end;
    if flag then
    begin
      adoquery1.Close;
      adoquery1.SQL.Clear;
      adoquery1.SQL.Add('insert into plu (barcode,comname,price,saleprice,vipsaleprice)');
    end;
    end;