怎么用程序添加一个LABEL,并且定义些LABEL的动作

解决方案 »

  1.   

    with TLabel.Create(Self) do
    begin
      Parent := Form1;
      Left := 10;
      Top := 10;
      Caption := '你好';
    end;————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  2.   

    //加入事件type
      Form1 = Class(TForm)
    ...........
      private
    ...........
        procedure DynOnClick(Sender:TObject);
      public
    .........
      end;with TLabel.Create(Self) do
    begin
      Parent := Form1;
      Left := 10;
      Top := 10;
      Caption := '你好';
      onClick := DynOnClick;  //给事件
    end;
    procedure TForm1.DynOnClick(Sender:TObject);
    begin
      if Sender is TLabel then
        Showmessage((Sender as TLabel).Caption); //显示caption
    end;
      

  3.   

    用Sender As TLabel和TLabel(Sender)到底有什么不同哪个好点,我基本上是用前面的,有时候也会用后面的方法
      

  4.   

    前者安全,比如Sender是一个TButton组件,那么以下错误在调试时可以发现:
    var
      tempString : string;
    begin
      tempString := (Sender as TLabel).Name;
    end;
    相反TLabel(Sender).Name不会报错,使你的程序存在安全隐患。
      

  5.   

    前者安全,比如Sender是一个TButton组件,那么以下错误在调试时可以发现:
    ……
    相反TLabel(Sender).Name不会报错,使你的程序存在安全隐患。这是在胡说吧。as是使用运行时类型信息转化,怎么可能在调试时就报错?
    它们的区别是:
    1、as通过RTTI进行类型转化,因此对于:
    Obj as TDClass
    TDClass必须是Obj的类型本身或者其父类,否则转化时出现“Invalid class typecast”错误。
    2、TDClass(Obj)是强制转化。速度比as快,且一般没有as转化时的类型限制。比如下面代码也是可以成功运行的:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      tempString : string;
    begin
      tempString := TLabel(Sender).Name;
      ShowMessage(tempString);
    end;通常情况下,在已知可以成功转化时,都使用强制转化方法。比如:
    if Sender is TButton then
      TButton(Sender)……————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  6.   

    试了一下,不错,可我怎么能在NOTEBOOK上加一个LABEL呢