? 熟悉Treeview(.data属性)的高手请进!!!!(cg1120)(50分)

  • 主题发起人 主题发起人 cg1120
  • 开始时间 开始时间
C

cg1120

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟在使用TTreeview时用到DATA属性两次,但在新建结点后输入DBMEMO字段数据总报错‘一些值可能在最后改变’,我想可能是不是DATA有问题,不知怎么解决。
  在建树和增加接点时都用到了DATA。
以下是我生成节点时用到的代码
tmpNode:=RzTreeView1.Selected;
pData:=tmpNode.Data;tmpNode:=RzTreeView1.Items.AddChild(tmpNode,inputstring);
RzTreeView1.Selected.Expand(true);
ADOTable1.Insert;
ADOTable1.FieldByName('name').Asstring := tmpNode.Text;
ADOTable1.FieldByName('parent').AsInteger := tmpparent;
ADOTable1.FieldByName('level').AsInteger := tmplevel+1;
ADOTable1.FieldByName('desc').Asstring :=RzDBMemo1.Text;
ADOTable1.Post;
new(pData);
pData^.ID:=ADOTable1.FieldByName('id').value;
tmpNode.Data:=pData;
请教高手了
 
在ADOTable1.Insert;前加
if not assgined(pData) then pData:= nil;
if not assgined(tmpNode.Data) then tmpNode.Data := nil;
 
程序显示:Undeclared identifier.'assgined'是什么问题?
 
定义类
type TreeInfo=Record
Pid:string;
Pname:string;
ptype:string;
end;
Ptree=^TreeInfo;
// type Tform1=class(form);
.....
implementation
.....
初始化
procedure TfrmClean.initTree();
var
p:ptree;
tempnode:Ttreenode;
begin
new(p);
p.Pid:='AA';
P.Pname :='保洁制度';
p.ptype :='AA';
tempnode:=treebase.Items.AddChildObject(nil,p.pname,p);

new(p);
p.Pid:='BB';
P.Pname :='保洁任务';
p.ptype :='BB';
tempnode:=treebase.Items.AddChildObject(nil,p.pname,p);
调用
var p:ptree;
begin
P:=treebase.Selected.Data ;

if Ds.DataSet <>nil then
ds.DataSet.Close;

if p.Pname ='保洁制度' then
begin
ds.DataSet :=AdoCleanRule;
adoCleanRule.Open;
end ;
不知道对你有没有帮助?
 
我对DATA属性使用了两次,第一次是在建树的时候用了PDATA和NODE.DATA,第二次在新建接点时
用到ID值增加到DATA中去,但在输入TDBMEMO内容后程序总报错‘无法更新行集定位,一些值可能在
最后读取时改变,不过重新运行程序时不会出现这种情况。
 
程序出错在输入TDMEMO内容后,TTREEVIEW的ONCILK事件,出错行为
ADOTable1.Locate('id',inttostr(iddata),[lopartialkey]);
 
代友第二行的 pData:=tmpNode.Data; 好像没有意义,删除它试试。
 
pData:=tmpNode.Data我是用它来定位记录的,但在输入TDBMEMO内容后程序总报错‘无法更新行集定位,一些值可能在
最后读取时改变’,是不是数据库没刷新?但我POST了的啊?
 
在uses加一个unit:System
 
到底怎么回事啊!!!有没有人知道???
 
后退
顶部