CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Delphi >  VCL组件开发及应用

继续问TComponent的问题 !

楼主xingyul(污泥)2003-12-03 18:43:30 在 Delphi / VCL组件开发及应用 提问

我写了一个过程用来清空edit的内容  
  Procedure   ComponentTextClear(Cmp:TComponent);  
  var  
  i:integer;  
  begin  
   
  for   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不兼容。这该如何解决?  
  谢谢!  
   
   
   
  问题点数:0、回复次数:5Top

1 楼47522341(睡到8:30)回复于 2003-12-03 19:14:11 得分 0

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

2 楼konhon(优华)回复于 2003-12-03 19:21:28 得分 0

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;Top

3 楼47522341(睡到8:30)回复于 2003-12-03 19:34:03 得分 0

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

4 楼xingyul(污泥)回复于 2003-12-04 09:25:04 得分 0

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

5 楼xingyul(污泥)回复于 2003-12-04 09:27:56 得分 0

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

相关问题

  • 继续`继续`继续问~~~~
  • 继续问
  • 继续问
  • 继续提问
  • dll_export继续问
  • 继续问一个问题
  • 继续问 sendmessage 问题
  • 继续问个小问题
  • 继续问个问题
  • 继续问frame的问题

关键词

  • 窗体
  • tedit
  • 清空
  • componenttextclear
  • controlcount
  • cmp
  • tcomponent
  • componentcount
  • twincontrol
  • aform

得分解答快速导航

  • 帖主:xingyul

相关链接

  • Delphi类图书
  • Delphi类源码下载
  • Delphi控件下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo