我使用delphi7.0的时候,用到按钮控件
     我在主窗体使用的ActionManager和ToolAction
     我在ToolAction里面设置一些按钮比如insert,edit,delete
     我现在在另一个单元声明了一个过程checkbtn
     在checkbtn也定义了一些insert,edit,delete 按钮为Action变量
     然后写入语句,比如:
      FOR I := 1 TO LENGTH(STATE) DO
     GETSTR[I] := COPY(STATE,I ,1);
     end;
      if GETSTR[1] = 'Y'  then
      INSERT.Visible:= True
      else
      INSERT.Visible := False;
      ...
      如上依次控制 INSERT等按钮的显示或者隐藏状态
      然后通过主窗体调用该过程来控制其对应按钮的显示状态
      但总是提示错误:'INSERT' might not have been initialized
      思考良久,无法得解,希望有能力的朋友予以帮助
      谢谢:)

解决方案 »

  1.   

    >>'INSERT' might not have been initialized应该只是一个警告,忽略就可
      

  2.   

    在前面的时候还会报一个错误:Access violation at address 0046DDC8 in module '主窗体的exe'
    然后就会提示 'INSERT' might not have been initialized
      

  3.   

    insert,edit,delete 按钮有没有先create??
    这类地址错误一般都是一些窗体或控件在没有create之前就先引用了,楼主自己检查一下吧
      

  4.   

    1.你可能在另一个单元没有中USES MAIN.PAS (主窗体),
    2.要在另一个单元中USES MAIN.PAS (主窗体).
      

  5.   

    回 黑翼天使 :我create 了一下,是create自己,编译可以通过,但是运行时候错误,报错同上
    回 蜗牛跑步 :因为后一样的结果
    不过我CREATE 的里面换成 ToolActionBar 系统编译运行都通过,但无结果
      

  6.   

    我想也是create  的问题,不过我从前很少用ActionManager和ToolAction ,所以请教论坛各位同仁帮忙解决问题
      

  7.   

    if 你的insert delete 等按钮是自己创建的吗? then
    begin
      为什么不用现成的而自己创建呢?
      把你创建的代码贴出来;
    end;
      

  8.   

    if 你的insert delete 等按钮是自己创建的 then
    begin
      为什么不用现成的而自己创建呢?
      把你创建的代码贴出来;
    end;
      

  9.   

    我在一个另外的单元定义的过程,当然,创建的按钮和主窗体在一个空间不会产生问题。不过我许多的窗体都要用到该过程,来判断每个模块用户有没有权限执行某操作,没有的话,就隐藏。所以就做到一个单元文件,方便各窗口调用。
    G_VAR代码如下:
    procedure _CHECKBTN(STATE:string);
    var GETSTR: Array[1..15] of string;
          I : INTEGER;
          _INSERT : TAction;
          _EDIT : TAction;
          _QUERY : TAction;
          _DELETE: TAction;
          _SAVE: TAction;
          _PRIVIEW : TAction;
          _PRINT: TAction;
          _DELL: TAction;
          _UNDO: TAction;begin
         for I := 1 to LENGTH(STATE) do
         GETSTR[I] := COPY(STATE,I ,1);
          if GETSTR[1] = 'Y'  then
          _INSERT.Visible:= True
          else
          _INSERT.Visible := False;     if GETSTR[2] = 'Y'   then
          _EDIT.Visible := True
          else
          _EDIT.Visible := False;
          if GETSTR[3] = 'Y'  then
          _QUERY.Visible:= True
          else
          _QUERY.Visible := False;
          if GETSTR[4] = 'Y'  then
          _DELETE.Visible:= True
          else
          _DELETE.Visible := False;
          if GETSTR[5] = 'Y'  then
          _SAVE.Visible:= True
          else
          _SAVE.Visible := False;
          if GETSTR[6] = 'Y'  then
          _PRIVIEW.Visible:= True
          else
          _PRIVIEW.Visible := False;
          if GETSTR[7] = 'Y'  then
          _PRINT.Visible:= True
          else
          _PRINT.Visible := False;
          if GETSTR[8] = 'Y'  then
          _DELL.Visible:= True
          else
          _DELL.Visible := False;
          if GETSTR[9] = 'Y'  then
          _UNDO.Visible:= True
          else
          _UNDO.Visible := False;END;
        
      

  10.   

    直接用ActionList呀,为什么要用ToolAction呢
      

  11.   

    我选定的是ToolAciton
    做了很多模块,就全部完成了
    无法再换了
      

  12.   

    不会吧
    真的难倒了csdn的高手们了吗
    大家能提一些建议也好
    谢谢