我自己写了一个类,在类里面创建了一个Label和一个Edit;
引用这个类,在按钮事件中声明这个类,使用,正常,
如果声明这个类为成员变量,使用就抛出异常,不只这是什么问题

解决方案 »

  1.   

    类代码
    unit LongOilEdit;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;typeTLongOilEdit = class(TWinControl)private
        m_Label:TLabel;
        m_Edit:TEdit;
       
    public
    constructor Create(Owner:TWinControl;ComName:string)  ;
    destructor Destory;end;implementation
    constructor TLongOilEdit.Create(Owner:TWinControl;ComName:string );
    begin
       // inherited Create(Owner);
        m_Edit:=TEdit.Create(Owner);
        m_Edit.Parent:=Owner;
        m_Edit.Visible:=true;
        m_Edit.Name:=ComName;    m_Label:=TLabel.Create(Owner);
        m_Label.Parent:=Owner;
        m_Label.Caption:='www';
        m_Label.Visible:=true;end;
    destructor TLongOilEdit.Destory;
    begin
      m_Label.Free;
      m_Edit.Free;end;
    end.
      

  2.   

    我不是什么高手,但是做为程序员,我知道有一种素质必须具备:遇到难题一定要冷静、心细。比如,当你“声明这个类为成员变量,使用就抛出异常”,你看到这是个什么样的异常?虽然是英文,估计你也能看懂一些吧?然后再根据提示修改相应的代码。
      还有,看了你的类代码,构造函数中的参数一般只有一个,不知你后一个参数是什么意思?(请指教)。
      当然在按钮事件中声明这个类,使用正常。因为它负责释放和添加该组件。
      最后一点,既然是动态创建组件,该组件在一个Application中必须要做三件事:1.指出其拥有者是谁;2.要在Application的构造函数中添加该组件;3.同样要在Application的析构函数中负责释放该组件。
      本人菜鸟一个,见笑!
      

  3.   

    应该是不能声明为成员变量的吧,因为不是注册的控件阿之类的阿,应该是可以声明为全局变量和局部变量,所以在按钮事件里面声明是没有问题的,在主程序的var里面声明为全局变量应该也没有问题,在住程序的form的type里面声明就会有问题,一般是说找不到对应的类还是什么的信息,记不清了,我觉得应该是这个原因,如果是你自己写的控件,并且注册了应该就不会有这个问题