在Unit1单元中创建PROCEDURE在此PROCEDURE中如何调用TForm1类中的公有成员
例如:
    TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Chart1: TChart;
    Series1: TLineSeries;
    end;
...
procedure a(str:string);
begin
     Series1//如何调用此成员???
end;

解决方案 »

  1.   

    Series1: TLineSeries;
        end;
    ...
    procedure a(str:string);
    begin
         Series1:=TLineSeries.create(self);/////一般这样创建,然后再赋值给他
    end;
      

  2.   

    我在界面中已添加了此控件!!!但在别的函数中
    例如:
         procedure TForm1.Button2Click(Sender: TObject);中就可以直接使用
              经过验证,问题不是出在这!编译通不过:[Error] Unit1.pas(379): Undeclared identifier: 'Series1'
    还请指教!!!
      

  3.   

    Series1是 TForm1的私有成员,外部当然无法调用,将procedure a(str:string);添加到
     TForm1类申明里,就可以访问了。(实现的时候别忘加上TForm1.a(str:string);) 同理,procedure TForm1.Button2Click(Sender: TObject);可以直接访问,因为Button2Click是TForm1类的成员,当然可以访问自己的成员。建议楼主,多看看OOP方面的书,用面向过程的思想去写面向对象的程序,很麻烦。
      

  4.   

    1、如果可以尽量定义完整的Tform1类,如楼上兄弟所说,将你的过程声明在Tform1的Private、或Public后,然后在单元的实现区以TForm1.a(str:string)实现它。
    2、特殊情况下,如果要按照你的代码来单独实现这个过程,可以如下声明:
        Procedure a(str:string,form:Tfrom1);即添加一个参数,使用form中的Series1即可。