分数太多了一定给分虽然是Self就是类自身的引用,但是在写代码的时候,无法用self.来自动弹出后面的变量和函数很多人说Self就是面向对象的Pascal的This指针但是我希望能在编写类函数的代码的同时,可以自动弹出类的变量等等就会给分的 :)

解决方案 »

  1.   

    self是窗体类的引用,写在窗体类中的变量和函数都可以通过self来引用。你的定义变量写在哪里了?
    比如
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        i: integer;
      public
      end;
    可以通过self.i来引用
      

  2.   

    wweijie(林黛玉):self是窗体类的引用
      你这句话本就是不对的,self就是C++或是C#中的this同样的意义,它并不是窗体类的引用.它应该指的是任何类的实例引用,只是你见得多的就是TForm而已(即你多数写代码时是在窗体单元写,当然是指该窗口实例了.但是不它就是指窗口实例).
    至于self.不弹出代码提示,一是可能你的其它处的代码有误,二是你想要的变量,函数等并百公有或者是公布的.
      

  3.   

    有的时候你要用self,需要强制转换一下,例如:TForm(Sender).xx
    self其实就和vc的this 很类似
      

  4.   

    SELF 在类函数中是类本身得引用,在其它函数中是实例得引用你编写类函数的时候引用类的变量本身就是不对的,类函数是可以在实例没有创建的时候就可以执行的,这时实例还没创建哪来的变量让你用。
      

  5.   

    不好意思,写错了,TForm(Self)
    其实TForm(Sender)也不错,呵呵,经常这样用的.
      

  6.   

    to kofxdm 你的写法不管用,TForm(Sender)可以,TForm(Self)似乎没有这样写法to hfclql 其他代码没有错误,编译可以通过,我在自己的自定义类中的函数,引用类中的私有变量,难道还要需要公布或者公有么?不要吧
    还有一点要说明,在类中的函数编写代码时,可以用self.xxx这样的代码直接引用类中的任何变量和函数,但是写self.xxx的话,我还不如直接用xxx呢就是因为self.  这个.之后,不会自动弹出变量引用列表也许我的题目有点错误
    self确实是自身的引用,但是似乎delphi不认识这种引用关系
      

  7.   

    提醒大家,我的是自定义类不是什么Tform在Tform是可以的self.是可以弹出列表的
      

  8.   

    自己类中是不要,是我弄错了.没有提示出来编译有错吗(有错说明是你自己的代码的问题)?如果没错的话就算了(D中的代码提示是有点怪怪的),citytramper(阿琪) 说的也要考虑,类成员就如同C++中的静态成员一样属于类,而不属于某一实际对象,这种成员应该是不会提示出来.再者你在自己的类中调用保护的成员你可以不写Self,但是如果忘记了就麻烦了.self本就等同于C++中的this,和Sender扯不上任何关系
      

  9.   

    问题解决了,谢谢大家,呵呵,真实情况是这样的
    1。self确实是类本身的引用,无论什么类,这是肯定的
    2。如果输入.后,无法弹出变量列表,那肯定是代码有问题
    3。即使编译通过,仍旧无法弹出变量列表,或者按住Ctrl点击变量,无法跳转时,肯定是代码有问题
    4。既然编译通过,代码有什么问题?用肉眼是检查不出来的,用编译器也是检查不出来的
    5。唯一的办法,就是一行一行排查,有可能存在(我同事说的)不可见的非法字符
    6。我后来也不知道从哪里删除某处“空格”,就都可以了倒谢谢大家,都有分