首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > .NET >

delphi treeview 真是活见鬼了

2013-04-20 
delphi treeview 真是见鬼了写的是权限分配,以前这么写,没问题,不知道为什么这次就说我的有错误,先上代码!

delphi treeview 真是见鬼了
写的是权限分配,以前这么写,没问题,不知道为什么这次就说我的有错误,先上代码!
首先声明一个变量nodesel
  public
    { Public declarations }
    nodesel:TTreeNode;
在treeview的TreeView1MouseUp事件中获取当前选中
nodesel:=TreeView1.GetNodeAt(X,Y);
在添加角色组的按钮的ToolButton1Click事件中
  if nodesel<>nil then
  begin
    if DMJueseguanli.QueryCSelect(nodesel.Text)=true then  //判断是否为角色,的一个函数
    begin
      Application.MessageBox('角色下不能添加角色组',sysinfo,mb_ok+MB_ICONERROR);
      exit;
    end;
  end;
  issel:=false;
  try
    FrmJueseguanliedit:=TFrmJueseguanliedit.Create(Application);//创建添加角色的窗口暂时叫他编辑窗口吧    FrmJueseguanliedit.ShowModal;
  finally
    FrmJueseguanliedit.Free;
  end;
目前为止没有错误
在这个编辑窗口的FormShow事件中
  ComboBox1.Items.Add('0');
  if FrmJueseguanli.nodesel<>nil then //这里错误,调用上一个窗口的nodesel不准许  
  begin
    ComboBox1.Items.Add(trim(FrmJueseguanli.nodesel.Text    
    ComboBox1.ItemIndex:=1;
  end
  else
  ComboBox1.ItemIndex:=0;

我以前用xe这么写,没问题,我把代码也一点点的对照过了,现在用的xe2,为什么我在其他窗口调用nodesel有错误呢?怎么解决!! TreeView Delphi
[解决办法]
 try
    FrmJueseguanliedit:=TFrmJueseguanliedit.Create(Application);//创建添加角色的窗口暂时叫他编辑窗口吧    FrmJueseguanliedit.ShowModal;
  finally
    FrmJueseguanliedit.Free;
  end;
目前为止没有错误
在这个编辑窗口的FormShow事件中
  ComboBox1.Items.Add('0');
  if FrmJueseguanli.nodesel<>nil then //这里错误,调用上一个窗口的nodesel不准许  
  begin
    ComboBox1.Items.Add(trim(FrmJueseguanli.nodesel.Text    
    ComboBox1.ItemIndex:=1;
  end
  else
  ComboBox1.ItemIndex:=0;
===========================================================
FrmJueseguanliedit释放后再次调用会出错! 应该改成这样
===========================================================
 try
    FrmJueseguanliedit:=TFrmJueseguanliedit.Create(Application);//创建添加角色的窗口暂时叫他编辑窗口吧    FrmJueseguanliedit.ShowModal;
//加到这儿  begin
ComboBox1.Items.Add('0');
  if FrmJueseguanli.nodesel<>nil then //这里错误,调用上一个窗口的nodesel不准许  
  begin
    ComboBox1.Items.Add(trim(FrmJueseguanli.nodesel.Text    
    ComboBox1.ItemIndex:=1;
  end
  else
  ComboBox1.ItemIndex:=0;
//加到这儿 end
  finally
    FrmJueseguanliedit.Free;
  end;
  
[解决办法]
FrmJueseguanliedit:=TFrmJueseguanliedit.Create(Application);
FrmJueseguanliedit.ShowModal;
你可以把这部分封装一下,在 FrmJueseguanliedit所在单元写一个函数,注意不是类函数
procedue ShowFrmJueseguanliedit(nodesel:TTreeNode);这样传递一下

热点排行