delphi函数里面不可以出现控件吗
我想把读取listbox每行文件名封装成一个函数,但是编译提示未能识别listbox1,我想问问自定义函数语句里面不能出现控件的吗?...
我想把读取listbox每行文件名封装成一个函数,但是编译提示未能识别listbox1,我想问问自定义函数语句里面不能出现控件的吗?
展开
3个回答
展开全部
函数和控件本身是没有关系的
控件实际也就是一个对象而已,这里的listbox1就是TListBox的对象句柄,是可以传递的
根据提示,很明显显示无法识别listbox1,应该是作用域的问题,通过窗口编辑器创建的控件,默认是以成员变量的形式存在于窗口类中的
如果楼主要封装的函数是窗口类的成员函数,是可以直接访问成员变量listbox1的,既然提示未能识别
我想你的函数可能不是成员函数,这时访问的时候要带上窗口变量名的,因为Object Pascal中类成员默认是published的,外界可以访问
比如listbox1是窗口类TmainForm的成员变量,那么创建窗口的时候同时会声明一个窗口类TmainForm的变量的,该变量由Delphi运行库初始化,可能为mainFor1,当然这在Delphi中可以修改,需要查看你自己的命名
这时如果要在外部函数中访问listbox1,就要这样访问mainForm1.listbox1来访问,如果学习过面向对象的封装思想,这一点应该比较清楚
控件实际也就是一个对象而已,这里的listbox1就是TListBox的对象句柄,是可以传递的
根据提示,很明显显示无法识别listbox1,应该是作用域的问题,通过窗口编辑器创建的控件,默认是以成员变量的形式存在于窗口类中的
如果楼主要封装的函数是窗口类的成员函数,是可以直接访问成员变量listbox1的,既然提示未能识别
我想你的函数可能不是成员函数,这时访问的时候要带上窗口变量名的,因为Object Pascal中类成员默认是published的,外界可以访问
比如listbox1是窗口类TmainForm的成员变量,那么创建窗口的时候同时会声明一个窗口类TmainForm的变量的,该变量由Delphi运行库初始化,可能为mainFor1,当然这在Delphi中可以修改,需要查看你自己的命名
这时如果要在外部函数中访问listbox1,就要这样访问mainForm1.listbox1来访问,如果学习过面向对象的封装思想,这一点应该比较清楚
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询