DBGRID的行号列号是保护成员吗,
为什么下面两种方法都能访问到它们呢:
第一:TDrawGrid(dbgrid1).row第二:Tmydbgrid=class(Tdbgrid);
      TTmydbgrid(dbgrid1).row

解决方案 »

  1.   

    它们其实应该都是一回事。毕竟DBGrid就是从TDrawGrid继承下来的。而Row是祖先类中的方法,所以你上面的调用都成立。
      

  2.   

    cybercake(数字蛋糕) 说得对。
      

  3.   

    TTmydbgrid(dbgrid1).row 和dbgrid1.row有什么不同,告诉我!
      

  4.   

    没有看过DBGrid的代码,如果DBGrid没有重载过这个方法的话,那么从效果上来说两者没有任何不同。
      

  5.   

    回头看了一下源代码。TDBGrid是从TCustomGrid继承下来的。而Row属性在TCustomGrid中是属于protected的,一般来说你无法访问到。而TDrawGrid则公开了Row属性,所以你能够访问到它。照说方法一并不安全,只是因为这两个Grid的基类相同,所以碰巧成功了而已。即使对于方法二,也可以有办法实现对Row的访问:
    Tmydbgrid=class(Tdbgrid)
    public
      property Row;
    end;TTmydbgrid(dbgrid1).row
      

  6.   

    说了这么多,一个也没说到点上,操,
    第二:Tmydbgrid=class(Tdbgrid);
          TTmydbgrid(dbgrid1).row这个到底能访问到?楼上的我可没有像你那样定义啊,Tmydbgrid=class(Tdbgrid)
    public
      property Row;
    end;
    但仍可以访问,为什么?你TMD真弱,不懂不要乱讲!!!
      

  7.   

    建议你做一个试验,把Tmydbgrid=class(Tdbgrid);放到另一个单元中,Use那个单元,然后你的方法就不灵了。至于原因Delphi的帮助里有,你自己慢慢找吧。希望你以后要多注意一下口德。
      

  8.   

    就是,问别人问题还这种口气。garbage!!!!
      

  9.   

    向cybercake(数字蛋糕) 致敬,同时建议版主KILL掉楼主这种人渣
      

  10.   

    cybercake(数字蛋糕) 脾气真好,向你学习~!
      

  11.   

    人渣也好,口德也好,我再也无力反驳,是我对不起大家,在此深表歉意!
    我的QQ是:77645111,目前迷上了过时的COM编程,正在深入研究,有兴趣的加我,谢谢!
      

  12.   

    人都有已一时激愤的时候,有时应该多想想别人的感受。关于这个问题的答案其实很简单。Delphi中的私有成员并非只对于本类可见,而是对于本单元的所有的类,哪怕两个类之间一点关系都没有。这一点在功能上类似于C++的友元函数。经常写控件的人就应该有这种体会。因为Delphi中规定的protected成员具有比private成员更广的可见性,所以就会出现你所说的现象。当然这只出现在类定义的同一个单元中。
      

  13.   

    楼上的各位兄弟,不知道你们是否真的作过测试
    关于显示DBGRID的行号 是个非常艰难的问题, 估计在delphi程序员中不到万分之一的人,能真正完美做出一个继承dbgrid的方法解决http://www.delphibbs.com/delphibbs/DispQ.asp?LID=2960059
      

  14.   

    呵呵,只是讨论ObjectPascal啦。
    而且我从不用DBGrid的……
      

  15.   

    谢谢cybercake(数字蛋糕) ,你的答案正是我想要的,看来DELPHI的单元有点像JAVA的一个命名空间了
    多谢!你的回答非常好!