请问如何定义一个类继承TTreeview的所有方法和属性,但要在TTreeview的TTreeNode属性下增加一个Newname:string的属性。
请问如何的重构及调用???????????????
多谢!

解决方案 »

  1.   

    就是在其父类继承过来,加上
    private
      FNewName:string;
    published
      property NewName string read FNewName;
      

  2.   

    你要重构TTreeView是一个非常简单的事情,但是你的要求是更改Node,呵呵,那就巨麻烦了。你最少要写三个控件:TTreeNode,TTreeNodes,和TTreeView,然后才有可能能用(因为还有一些地方可能会出错,不过因为Delphi具有多态性,因此大概就没有问题了。
    不过相对来说改动的地方巨大无比。不过你可以尝试该该delphi的源代码试试,然后使用brcc来对该文件进行编译一下,呵呵,不敢保证成功哦。
    哦,100分,呵呵,我试试先。
      

  3.   

    呵呵,居然让我成功了(delphi5)。100分啊,哈哈。
    首先找到Comctrls.pas文件,打开,找到TTreeNode的声明的地方,然后进行如下修改:
    在Private中增加
    fMyName: string;
    在Published中增加:
    property MyName: string read fMyName write fMyName  //简单的模式,如果你需要更改成什么出发事件等等类型或者其他的,可以看看如何写控件的书或者156514982
    最重要的:
    在保存前,需要首先备份原Comctrls文件。
    然后:到dos模式下的comctrls文件目录执行:dcc32 comctrls.pas  将你修改的comctrls.pas文件编译成dcu,当然会出现warning,没有关系的。呵呵。
    最后,将编译后的dcu文件复制到lib目录和lib目录下的debug目录(呵呵,不要忘记复制前备份原文件哦)。
    ok,编程序,测试: 搞定。
    程序如下:
    button1Click
    begin
      TreeView1.Selected.MyName:='AAABBB';
      ShowMessage(TreeView1.Selected.MyName);end;