我在程序中动态生成了一个按钮,想定义其鼠标点击事件
于是用了
btnOne.OnClick:=OneClick(Sender:TObject);//OneClick(Sender:TObject)是我自定义的过程
这段代码,但编译失败,如果将冒号去掉,提示说参数不足,
我查了帮助,好象OnClick类型为TNofiyEvernt,但不懂用法,好象是什么函数指针什么的?

解决方案 »

  1.   

    就这样:btnOne.OnClick:=OneClick;
      

  2.   

    删除冒号和冒号后面的就可以了。
    btnOne.OnClick:=OneClick(Sender);
      

  3.   

    定义的方法要是方法,不是过程
    就是说OneClick是一个对象的方法,而不能是独自一个过程
    are you see?
      

  4.   

    btnone.onclick:=oneclick(sender)
    btnone.onclick:=oneclick(nil)
    ??????
      

  5.   

    那再请教各位一个问题,如果这个按钮上有一个标签控件,我想在我那个自定义过程中动态改变它的caption属性,但不知如何判断Sender是按钮控件,并引用他.
      

  6.   

    procedure MyButtonClicked(Sender: TObject);
    begin
      //你的处理代码.
    end;
    //你动态创建代码
    var
      MyButton : TButton;
    begin
      MyButton := TButton.Create(self);
      with MyButton do
      beign
         Parent := XXX;//你的Button的父控件名.
         Left := 10;
         Top  := 10;
         width := 75;
         height := 25;
         visible := true;
         Onclick := MyButtonClicked;
      end;
    end;
      

  7.   

    访问Sender的ClassName属性
    if lwercase(sender.ClassName) = 'tlabel' then
    begin
      //你的处理代码
    end;
    或者:
      if Sender is TLabel then
      begin
        //你的代码.
      end;
      

  8.   

    if sender is TButton then
    begin
      with Sender as Tbutton do
      begin
        Caption := 'XXX';
      end;
    end;
      

  9.   

    hawksoft(明月清风) 高人也啊!!!!