我写了一个过程用来清空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不兼容。这该如何解决?
谢谢!
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不兼容。这该如何解决?
谢谢!
begin
Tedit(components[I]).text := '';
end;
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;
begin
Tedit(cmp.Controls[I]).text := '';
end;
Cmp是什么类型的呀?我声明为TWinControl,ComponentTextClear(cmp:TWinControl);
使用的时候
ComponentTextClear(Scrollbox2);提示TWincontrol与TScrollBox不兼容我将cmp声明为TComponent ,cmp.ControlCount编译时通不过,提示没有定义ControlCount注:我是将代码写到一个unit中。在别的窗体中调用ComponentTextClear
我只想清空TabSheet2上的放在 ScrollBox1中的edit。 用这个方法好象不行。
谢谢你!再帮忙想想!!!