我对一个Label1控件进行了修改,现在我想用代码创建一个继承于Label1的控件Label2,
并把它显示在窗体上。怎么做?

解决方案 »

  1.   

    1、先创建一个label1类,继承于TLable;
    2、在label1的构造函数里,指定其的所有者(所属form);
    3、创建一个label2类,继承于Label1;
    4、在label2的构造函数里,指定其的所有者;
      

  2.   

    在Uses中加入TLabel1所在单元名,然后声名一个变量Label2: TLabel1;
    然后就是动态创建组件了。
    prcedure TFormX.FormCreate(Sender: TObject);
    begin
      Label2:=TLabel.create;
      with Label2 do 
      begin 
        parent:=FormX;
        Left:=...;
        Top:=...
      end;
    end;
      

  3.   

    TaoDelphi(乐陶陶) 老兄:
      我在声名一个变量Label2: TLabel1;就出错,
      再者,Label2:=TLabel.create;这句话也不对阿,应为Label2:=TLabel.create(self);才能通过。
      还有高手指教否?
      分不够再加。
      

  4.   

    在同一个窗体用得着引用吗?
    在Unit1中引用Unit1会报错。
      

  5.   

    给你一个例子:unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;type
      TLabel1 = class (TLabel)
      private
      public
    end;
    type
      TLabel2 = class (TLabel1)
      private
      public
      constructor Create(AOwner: TWinControl);overload; 
    end;
    type
      TForm1 = class(TForm)
        Button1: TButton;
        Label2: TLabel;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ TLabel2 }constructor TLabel2.Create(AOwner: TWinControl);
    begin
      inherited Create(AOwner);
      self.Caption := 'aaa';
      self.Parent := AOwner;end;procedure TForm1.Button1Click(Sender: TObject);
    var
    label3 : TLabel2;
    begin
          Label3 := TLabel2.Create(self);
    end;end.
      

  6.   

    只能从一个基类派生出一个子类,
    怎么可能从一个对象(Label1已经是类的实例了)派生出对象呢?
    你的提问有问题。
    如果是从TLabel类派生出子类的话,可以创建一个派生自TLabel的子类放到组件面板中去,就可以用了。
      

  7.   

    t99(沙隆拔斯) 老兄:
      还是不行啦!执行时它提示:Label2 does not have a corresponding component.
      也许我没讲清楚,我并不是要再代码里对Label1进行创建和修改,我只是在窗体上放置了一个
    Label1控件,并对其属性,事件进行了修改,只是再用代码创建一个与Label1属性,事件相同的
    Label2,当然,用别的方法也行,但我希望用继承的方法。
      

  8.   

    有一种简单的方法,
    就是选中Label1,然后按Ctrl+C和Ctrl+V,就会复制出一个和Label1一样的Label2。
      

  9.   

    你看一下剪贴版程序,把label1复制到剪贴版,再粘贴到form上。
      

  10.   

    你必须先创建一个TLabel1类,然后再声明Label2作为TLabel1的一个实例。
    像:
    Type
     TLabel1 = class(TLabel)
       procedure...
       function...
      private
      public
      end;
    ....var
      label2: TLabel1;