“无法删除包含控件的列”Delphi XE3

时间:2014-11-11 07:51:04

标签: delphi

  

Project Businessware.exe引发了一个异常类EGridPanelException,消息“无法删除包含控件的列”

每当我尝试执行程序时,我总是收到此错误,然后显示选项按钮,例如“Break”,“Continue”和“Help”,我之前已经遇到此错误,我选择的解决方案是删除由受影响的组件包含的ExplicitWidth和ExplicitHeight,我还删除了在GridPanel1下声明的ColumnCollection,一切都变得正常,但现在它再次显示,我之前应用的解决方案不再有效。你还有其他解决方案吗?为什么我在.pas和.dfm文件中没有更新时会出现这个错误?

其他信息是当我点击“Break”时,它指出了这个方法:

procedure TColumnCollection.Notify(Item: TCollectionItem; Action: System.Classes.TCollectionNotification);
begin
   inherited;
   if (Action = System.Classes.TCollectionNotification.cnExtracting) 
      and not (csDestroying in Owner.ComponentState) and
      not (csUpdating in Owner.ComponentState) then
        if not Owner.IsColumnEmpty(Item.Index) then
          raise EGridPanelException.Create(sCannotDeleteColumn)
   else
     Owner.UpdateControlsColumn(Item.Index);
end;

任何帮助将不胜感激。感谢

1 个答案:

答案 0 :(得分:0)

你的代码试图删除一个非空的网格面板的列(这就是消息所说的内容)。为了找出错误的来源,点击break(在异常对话框中)并注意你的调用堆栈并尝试找到调用堆栈中指向你的代码的第一行,它应该显示这样的东西(抱歉,但我不允许发布图片):

  :7599821fKERNELBASE.RaiseException + 0x54
  Vcl.ExtCtrl.TColumnCollection.Notify(???,???)
  ...some more system lines lines here
  MyUnit.MyForm.Button1Click($F73660)    <--- the problem lies in here

HTH