我自己制作的控件,其中有一个属性A是TStrings类型,我现在的问题是怎样定义一个属性编辑器,就像TCombobox的Items属性一样,当你单击它右放的省略号时会自动弹出一个文本编辑器来编辑lines
我手头有一个hkbarton的TClock例子,但他弹出的是自己定义的一个Form,我想问的问题是能不能不创建Form,是不是有现成的文本编辑器来编辑TStrings属性

解决方案 »

  1.   

    你不需要定义任属性件编辑器
    只要  property A: string read FA write FA;
    就行了
      

  2.   

    写错了
    应该是:
     property A: TStrings read FA write FA;
      

  3.   

    说明一下:
    private
      fa:TString;//定义私有变量
    protected
            constructor Create(AOwner: TComponent); override;//继承constructor Txxxx.Create(AOwner: TComponent);
    Begin
       fa:=TStringList.create;
    end;
      

  4.   

    我现在做的和CsdnKey(函数)说的一样,但当我点击属性页中它右放的省略号时提示“抽象错误”
      

  5.   

    你是看一下
    procedure Register;
    里面还有没有
    RegisterPropertyEditor(....)还有 私有变量fa是否创建了
       fa:=TStringList.create;
      

  6.   

    抽象错误是因为你的对象中还没有把tstrings里面的抽象方法全部实现吧,或者是你使用tstring.create了
      

  7.   

    idilent(成为星星的同时,露出菜鸟的实质)说的很对,我使用tstring.create了
    但我改正了这个问题后,省略号可以点了,当我输入内容后,第二次点省略号的时候,出现“Access violation at address 40005988 in module ' rtl60.bpl'.Read of address FFFFFFDC”
    谢谢!
      

  8.   

    要这样子
        property RootIDItems: TStrings read FRootIDList write SetFRootIDList;procedure TOrgTreeList.SetFRootIDList(const Value: TStrings);
    begin
      if Assigned(FRootIDList) then
        FRootIDList.Assign(Value)
      else
        FRootIDList := Value;
    end;