G
gophie
Unregistered / Unconfirmed
GUEST, unregistred user!
数据库关联树,line字段10位编码,22222形式,
如0100000000为第一个子节点!0101000000为二层节点。
生成树语句:
qrySelect.Open;
treeviewClassify.Items.Clear;
arrDCNode[0] := treeviewClassify.Items.Add(nil,'分类表');
preLevel:=0;
while not qrySelect.Eofdo
begin
if qrySelect.FieldByName('nlevel').AsInteger>preLevel then
begin
arrDCNode[qrySelect.FieldByName('nlevel').AsInteger] := treeviewClassify.Items.AddChild(arrDCNode[preLevel],
qrySelect.FieldByName('line').AsString+' '+qrySelect.FieldByName('code').AsString+' '+qrySelect.FieldByName('name').AsString);
preLevel:=qrySelect.FieldByName('nlevel').AsInteger;
end
else
begin
if qrySelect.FieldByName('nlevel').AsInteger=preLevel then
begin
arrDCNode[qrySelect.FieldByName('nlevel').AsInteger] := treeviewClassify.Items.AddChild(arrDCNode[qrySelect.FieldByName('nlevel').AsInteger-1],
qrySelect.FieldByName('line').AsString+' '+qrySelect.FieldByName('code').AsString+' '+qrySelect.FieldByName('name').AsString);
end
else
begin
arrDCNode[qrySelect.FieldByName('nlevel').AsInteger] := treeviewClassify.Items.AddChild(arrDCNode[qrySelect.FieldByName('nlevel').AsInteger-1],
qrySelect.FieldByName('line').AsString+' '+qrySelect.FieldByName('code').AsString+' '+qrySelect.FieldByName('name').AsString);
preLevel:=qrySelect.FieldByName('nlevel').AsInteger;
end;
end;
qrySelect.Next;
end;
问,要实现树节点之间的任意拖放操作。不但要快捷,而且力求防止五操作。
我能实现,但实现方法自己觉得不够有效!
希望熟手指点。不胜感谢。不过希望尽快!
如0100000000为第一个子节点!0101000000为二层节点。
生成树语句:
qrySelect.Open;
treeviewClassify.Items.Clear;
arrDCNode[0] := treeviewClassify.Items.Add(nil,'分类表');
preLevel:=0;
while not qrySelect.Eofdo
begin
if qrySelect.FieldByName('nlevel').AsInteger>preLevel then
begin
arrDCNode[qrySelect.FieldByName('nlevel').AsInteger] := treeviewClassify.Items.AddChild(arrDCNode[preLevel],
qrySelect.FieldByName('line').AsString+' '+qrySelect.FieldByName('code').AsString+' '+qrySelect.FieldByName('name').AsString);
preLevel:=qrySelect.FieldByName('nlevel').AsInteger;
end
else
begin
if qrySelect.FieldByName('nlevel').AsInteger=preLevel then
begin
arrDCNode[qrySelect.FieldByName('nlevel').AsInteger] := treeviewClassify.Items.AddChild(arrDCNode[qrySelect.FieldByName('nlevel').AsInteger-1],
qrySelect.FieldByName('line').AsString+' '+qrySelect.FieldByName('code').AsString+' '+qrySelect.FieldByName('name').AsString);
end
else
begin
arrDCNode[qrySelect.FieldByName('nlevel').AsInteger] := treeviewClassify.Items.AddChild(arrDCNode[qrySelect.FieldByName('nlevel').AsInteger-1],
qrySelect.FieldByName('line').AsString+' '+qrySelect.FieldByName('code').AsString+' '+qrySelect.FieldByName('name').AsString);
preLevel:=qrySelect.FieldByName('nlevel').AsInteger;
end;
end;
qrySelect.Next;
end;
问,要实现树节点之间的任意拖放操作。不但要快捷,而且力求防止五操作。
我能实现,但实现方法自己觉得不够有效!
希望熟手指点。不胜感谢。不过希望尽快!