我写了一个过程用来清空edit的内容
Procedure ComponentTextClear(Cmp:TComponent);
var
i:integer;
beginfor i := 0 to ComponentCount - 1 do
 begin
 //清空Edit框
   if (Components[i] is TEdit)   then
    begin
      if TEdit(Components[i]).Parent = cmp   then
         TEdit(Components[i]).Text := '';
    end;
 end;
我把过程放在当前的子窗体上使用可以
我想把它放在父窗体上,让继承的窗体也可以使用。但是继承下来后该过程清空的好象是父窗体上的edit.
我想是不是因为该过程放到哪个窗体内就在当前窗体执行。
然后我又新建了一个unit,我想unit没有.Dfm文件,应该可以。
但是如果我输入的参数不是Form的话,ComponentCount就是0
有老兄告诉我用ControlCount
我想把代码改成 
Procedure ComponentTextClear(Cmp:TWinControl);for i := 0 to Cmp.ControlCount - 1 do
 begin
 //清空Edit框
   if (Controls[i] is TEdit)   then
    begin
      if TEdit(Controls[i]).Parent = cmp   then
         TEdit(Controls[i]).Text := '';
    end;
 end;
但是很明显,Control是TWinControl,与Tedit不兼容。这该如何解决?
谢谢!

解决方案 »

  1.   

    for I := 0 to cmp.ComponentCount - 1 do
    begin
      Tedit(components[I]).text := '';
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    begin
       ClearText(Self);
    end;
    新建了一个unit
    加上
    procedure ClearText(aForm:TCustomForm);
    var
      i:integer;
    begin
      for i:=0 to aForm.ComponentCount-1 do
      begin
        if aForm.Components[i] is TEdit then
          TEdit(aForm.Components[i]).Text:='';
      end;
    end;
      

  3.   

    for I := 0 to cmp.controlcount - 1 do
    begin
      Tedit(cmp.Controls[I]).text := '';
    end;
      

  4.   

    To 47522341
    Cmp是什么类型的呀?我声明为TWinControl,ComponentTextClear(cmp:TWinControl);
    使用的时候
    ComponentTextClear(Scrollbox2);提示TWincontrol与TScrollBox不兼容我将cmp声明为TComponent ,cmp.ControlCount编译时通不过,提示没有定义ControlCount注:我是将代码写到一个unit中。在别的窗体中调用ComponentTextClear
      

  5.   

    To  konhon(优华无限) 你的方法是把整个窗体上的edit都清空了。我有一个PageControl控件,上边有两个Tabsheet
    我只想清空TabSheet2上的放在 ScrollBox1中的edit。 用这个方法好象不行。
    谢谢你!再帮忙想想!!!