★★★★★救命啊!一个奇怪的问题:自建的通用过程中难道不能包含有控件名吗?
一段代码由于经常要用到,所以我把它建成了一个通用过程,代码里包含有memo1这个控件名。可是调用的时候delphi却报memo1是未申明的标识符(这个过程是建立在被调用之前的)!没办法我只好在窗体上加入一个按钮,然后将这段代码加入这个按钮的click事件中去,然后再调用这个按钮的click事件才能用。
之后发现在窗体中将这个按钮删除后,这个过程依然可以被调用?谁能解释一下怎么回事?
另外:自建的通用过程中难道不能包含有控件名吗?

解决方案 »

  1.   

    呵呵,你的过程声明在TForm的Public单元应该没有问题
      

  2.   

    用后面的sender作为参数,通用中定义TOBJECT就行了procedure function(sender:tobject)
      

  3.   

    觉得 是因为 Memo1所在的窗体对象没有被明确 在一个公用单元中 
      
      uses Memo1 所在窗体的单元,  将该过程申明为全局过程,用 Form.Memo1 的方式使用Memo1 ;
      
      再在别的单元中 uses 这个公共单元,
      (有些时候需要同步这个 Memo1)对吗 ?
      

  4.   

    你的通用过程没有写成它所在单元的类方法,因此你在使用memo1时,应该再memo1前加memo1所说的窗体的名字。第二种方法是,把这个通用函数写在这个单元的类的里面,作为成员函数使用。如果你能把你的代码写在这里,大家会解答的更清楚。
      

  5.   

    通用函数写在这个单元的类的里面,即pulic下,其它单无引用这个类所在单元即可!
    也可写成函数:
       function xxxxx(ob:Tobject):ffff;
          begin
               if ob is Tmemo then
                    (ob as tmemo).lines:='sljgh;skljg';
                 .............