读书人

delphi treeview 真是活见鬼了

发布时间: 2013-04-20 19:43:01 作者: rapoo

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);这样传递一下

读书人网 >.NET

热点推荐