如题:
TwinControl 中protected 方法SelectNext(),可以在Form1中方法, 但Panel1中不能访问?
(1)form1和panel1都是Twincontrol的派生类;
(2)按"protected属性的成员称为保护成员,被定义的类成员在该类的方法中可被访问,它的子类和后代类也可以访问"的说法,
TwinControl 中protected 方法SelectNext(),在Form1,panel1中都可以访问的?
TwinControl 中protected 方法SelectNext(),可以在Form1中方法, 但Panel1中不能访问?
(1)form1和panel1都是Twincontrol的派生类;
(2)按"protected属性的成员称为保护成员,被定义的类成员在该类的方法中可被访问,它的子类和后代类也可以访问"的说法,
TwinControl 中protected 方法SelectNext(),在Form1,panel1中都可以访问的?
我是在做一个控件;想访问SelectNext()方法;
遇到的问题是这样的:
(1)SelectNext()是TWinControl定义的protected方法;(用于转移焦点)
(2)而Tfrom, Tpanel都是TWinControl的派生的子类;
(3)From1.selectNext()可以; 而Panel1.selectNext()就不行;
虽然Panel1是在Form1中,但它们是各自己的实例访问各自父类的seclectNext();
不知道我理解的对不对?
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;type
TForm1 = class(TForm)
Panel1: TPanel;
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
begin
Self.SelectNext(Nil, False, False); //正确,可行
{
因为 procedure TForm1.Button1Click() 是TForm1的类方法,所以上面的调用是可以的。
} Panel1.SelectNext(Nil, False, False); //错误,不行
{
因为 procedure TForm1.Button1Click() 对于TPanel类来说,是外部的,所以不能访问TPanel类中被保护的类方法。
}
end;end.