Delphi 中默认的继承方式应该是Public 吧 ?
可是 我把一个控件的基类 里面的一个Private方法放到了Public里面 为什么在其子类里面不能访问到呢?procedure SetColWidths(Index: Longint; Value: Integer); 该方法 是TCustomGrid 的一个Private过程 我把它放到了PUblic 里面 可是在TStringGrid;对象为什么不能访问到它。
请高手指教?                               TCustomGrid
                                    |
                               TCustomDrawGrid
                                    |
                                TCustomDrawGrid;
                                     |
                                TDrawGrid;
                                    |
                                TStringGrid;

解决方案 »

  1.   

    你如果更改了源代码后,必须对源代码进行编译,才能进行下面的操作。
    比如你更改了TStringGrid控件,该控件所在的unit是 Grids.pas,如果你想使用更改后的TStringGrid的话,必须重新编译该文件(Grids.pas),并把编译的结果:Grids.dcu覆盖原来delphi的Grids.dcu。
    一般并不建议这么做。最好的办法是重新写一个控件,该控件从TCustomGrid继承,该控件写代码的时候完全照抄TStringGrid,所不同的是在写的时候把你要放到private中的语句放到private中,最后安装该控件。这样即不改源代码,又实现了你需要的功能。
    当然,如果改源代码,也是一种选择。只不过要重新编译了。
    编译的方法是:
    到Grids.pas文件复制到某个目录中,然后将program files\borland\delphi5\lib目录下所有的dcu文件复制到该目录下,删除Grids.dcu文件,最后将program files\borland\delphi\bin目录下的dcc32.exe文件复制到该目录下,然后执行:
    dcc32 grids.pas
    系统就会生成新的grids.dcu,最后将该dcu复制到program files\borland\delphi\lib下以及该目录的debug目录下,就能凑合着用了。
    注: 我没有做最终实验。因此具体情况还要你自己尝试。