小弟使用delphi不久,近日在编程遇到一个问题特求教一下
   小弟使用一个模板,模板Name为data
   想要在主窗体中调用data的ADOConnection1,利用Connected属性进行条件判断,
发现下面的语句将出错:
if data.ADOConnection1.Connected=true then
begin
N1.Enabled:=true;
N6.Enabled:=true;
N9.Enabled:=true;
N15.Enabled:=true;
N18.Enabled:=true;
end;出错的信息是这样子的:project project1.exe raised exception class EAccessViolation with message 'Access violation at address 004B7286 in module 'project1.exe'.Read of address 00000068'.Process stopped.Use Step or Run to continue.不知道问题出在哪里?垦请指出

解决方案 »

  1.   

    首先明白问题是在里面还是外面
    这样无法判断哦你可以把
    N1.Enabled:=true;
    N6.Enabled:=true;
    N9.Enabled:=true;
    N15.Enabled:=true;
    N18.Enabled:=true;
    这部分代码删除
    取代为Showmessage('Connected');
    看看还有问题没有
    如果没有,问题就在取代的代码中
    如果还有那就是你Connection的设置上有问题了
      

  2.   

    如果是在主窗口的OnCreate访问是会有这种提示的,如果是的话可以把代码放在OnShow中。
      

  3.   

    if not assigned(data) then
        Application.CreateForm(Tdata,data);
    ////////////////////// 
    if data.ADOConnection1.Connected=true then
    begin
    N1.Enabled:=true;
    N6.Enabled:=true;
    N9.Enabled:=true;
    N15.Enabled:=true;
    N18.Enabled:=true;
    end;
      

  4.   

    感谢  VeryOldMan(老者)和syl79() ,我现在按你所说的代码放在onshow中,消除了这种 提示,想起来其实我之前有个系统的登录的模块,里面在验证用户密码后,就将data.ADOConnection1.Connected设为true;  (设计时候我是将data.ADOConnection1.Connected设为false的)然后,登录成功后就用close将登录模块关掉了。可能是出现这种问题的原因吧!!
    现在我还想问问各位大哥的是:为什么
    N1.Enabled:=true;
    N6.Enabled:=true;
    N9.Enabled:=true;
    N15.Enabled:=true;
    N18.Enabled:=true;不能实现了呢?我要补充的是,N1......N18是TMenuItem里的Name名,我的目的是想在用户登录之后将菜单项置为可用,还有我的data是数据模板的名称:
     TData = class(TDataModule)  Data: TData;
    为什么
    N1.Enabled:=true;
    N6.Enabled:=true;
    N9.Enabled:=true;
    N15.Enabled:=true;
    不能实现了呢?我该怎么做?
    N18.Enabled:=true;
      

  5.   

    可能是没有应用窗体  implemention下面写上
    uses 名字;