一个form上有2个panel,每个panel上有20个edit,我不想一个一个的去写,请教
如何以最有效的方法清空panel1上的20个edit中的内容,而不清空panel2上的20个edit中的内容
如何以最有效的方法判断panel1上的20均不为空,而不去判断panel2上的20个edit是否为空

解决方案 »

  1.   

    //清空Panel1之Edit内容var
      i: Integer;
    begin
      for i := 0 to Panel1.ControlCount - 1 do
        if Panel1.Controls[i] is TEdit then
          TEdit(Panel1.Controls[i]).Clear;end;//判断钧不为空function IsEmpty: Boolean;
    var
      i: Integer;
    begin
      result := false;
      for i := 0 to Panel1.ControlCount - 1 do
        if Panel1.Controls[i] is TEdit then
          if TEdit(Panel1.Controls[i]).Text = '' then
          begin
            result := true;
            Break;
          end;
    end;随手所写,请调试能不能用
      

  2.   

    呵呵,给个建议,把Panel1上的Edit们做成一个数组
    声明一个全局数组
    var
      arrEdit : Array[0..19] of TEdit;
      //这里数组大小根据你的Edit的数量来定在初始化的时候,把Edit都加进来
    arrEdit[0] := edit1;
    arrEdit[1] := edit2;
    .
    .
    .
    arrEdit[19] := edit19;这样在以后要用的时候,要清空Edit,一个循环就可以了
    for i := 0 to 19 do
    begin
      arrEdit[i].text = '' ;   
    end;
    判断是否为空也一样,循环一下,加入IF判断就可以了Panel2上的Edit也可以同样做成一个控件数组,这样基本上能解决你的问题
      

  3.   

    楼上的
    “arrEdit[19] := edit19;”
    也许应该改成:
    “arrEdit[19] := edit20;”