在自定义控件中如何实现某一个属性的值=该form上所有Tlabel(其它类似)的name集合,形成下拉选择项供该属性用!

解决方案 »

  1.   

    定义一个属性的类型为TLable型:
    ......
    private 
      .......
      Flable:TLable;
      procedure SetLable(value:TLable);
    published
      property lable:TLable read Flable write SetLable;
    ......
    procedure ..SetLable(value:TLable);
    begin
      if Assigned(value) then
        FLable:=value;
    end;
      

  2.   

    procedure TForm1.Button1Click(Sender: TObject);
    var
      sList: TstringList;
      i: Integer;
    begin
      sList := TstringList.create;
      for i := 0 to Self.ComponentCount-1 do
      begin
        if Self.Components[i] is TLabel then
          sList.Add((Self.Components[1] as TLabel ).Name);
      end;end;
      

  3.   

    个人观点:如此的控件不合算,获得所有的lable的name到一个combobox列表是很简单的事情,何必搞得那么复杂。如果真要实现,大概可以重定义Tlabel,并在其create事件中发送一消息告知是label产生了,消息可以自定义
      

  4.   

    当然,在你的自定义控件里面要拦截这个消息不过,我不清楚怎样指定label的create的里面的消息发送给你的自定义控件
      

  5.   

    Tcomtext = class(TComponent)
      private
       FLabel:TLabel;
      published
       property Label: TLabel read FLabel write FLabel;
     end;增加属性定义成TLabel类型就可以了。
      

  6.   

    Up YAMABACK(CODE,CODE,CODE……) 接分
      

  7.   

    To QwertyAsd  可以把你的方法再说说吗?
      

  8.   

    僧多粥少!怎么办?
    还有解答吗?这应该不是csdn的水准吧?
    我还有很多的问题啊?