為了使繁雜的樹操作變得簡單,特此寫了以下這個單元。為了節省時間,這個單元沒有物件導向,而僅僅是通過過程來實現的,它可以被使用在任何版本的delphi,從而完成簡便的樹操作
unit treectrls;
inte***ce
uses
windows, messages, sysutils, variants, classes, graphics, controls, forms,
dialogs,comctrls;
function nodemoveup(treenode: ttreenode): boolean;
function nodemovedown(treenode: ttreenode): boolean;
function nodedelete(treenode:ttreenode;hint,title:string;form:tform):boolean;
function nodeaddlast(tree:ttreeview;nodename:string):boolean;
function nodeaddfirst(tree:ttreeview;nodename:string):boolean;
function nodeaddchildlast(tree:ttreeview;nodename:string):boolean;
function nodeaddchildfirst(tree:ttreeview;nodename:string):boolean;
function getallchild(treenode:ttreenode;item:tstrings):boolean;
implementation
//結點向上移
function nodemoveup(treenode: ttreenode): boolean;
begin
if treenode=nil
then
begin
result:=false;
exit;
end;
//如果已是最上面的結點
if treenode.getprevsibling = nil
then
begin
result := false;
exit;
end;
//如果上乙個結點是父結點
if treenode.getprev=treenode.parent then
begin
result:=false;
exit;
end;
//正常情況
treenode.moveto(treenode.getprevsibling,nainsert);
result:=true;
end;
//結點向下移
function nodemovedown(treenode: ttreenode): boolean;
vartempnode:ttreenode;
begin
if treenode=nil
then
begin
result:=false;
exit;
end;
//如果已是最後乙個結點
if treenode.getnextsibling = nil
then
begin
result := false;
exit;
end;
//如果是倒數第二個結點
if treenode.getnextsibling.getnextsibling=nil
then
begin
tempnode:=treenode.getnextsibling;
nodemoveup(tempnode);
result:=true;
exit;
end;
//正常情況
treenode.moveto(treenode.getnextsibling.getnextsibling,nainsert);
result:=true;
end;
//刪除結點
function nodedelete(treenode:ttreenode;hint,title:string;form:tform):boolean;
varres:integer;
begin
if treenode=nil
then
begin
result:=false;
exit;
end;
//如果包含子結點
if treenode.haschildren=true
then
begin
messagebox(form.handle,'該目錄包含有子目錄,不能刪除','提示',mb_ok);
result:=false;
exit;
end;
res:=messagebox(form.handle,pchar(hint),pchar(title),mb_yesno);
if res=6
then
begin
treenode.delete;
result:=true;
endelse
begin
result:=false;
end;
end;
//新增(父)同級結點到末尾
function nodeaddlast(tree:ttreeview;nodename:string):boolean;
begin
trytree.items.add(tree.selected,nodename);
except
begin
result:=false;
exit;
end;
end;
result:=true;
end;
//新增(父)同級結點到首位
function nodeaddfirst(tree:ttreeview;nodename:string):boolean;
begin
trytree.items.addfirst(tree.selected,nodename);
except
begin
result:=false;
exit;
end;
end;
result:=true;
end;
//新增(子)同級結點到末尾
function nodeaddchildlast(tree:ttreeview;nodename:string):boolean;
begin
trytree.items.addchild(tree.selected,nodename);
except
begin
result:=false;
exit;
end;
end;
result:=true;
end;
//新增(子)同級結點到首位
function nodeaddchildfirst(tree:ttreeview;nodename:string):boolean;
begin
trytree.items.addchildfirst(tree.selected,nodename);
except
begin
result:=false;
exit;
end;
end;
result:=true;
end;
//遍歷所有子結點
function getallchild(treenode:ttreenode;item:tstrings):boolean;
varnd:ttreenode;
childnum:integer;
i:integer;
begin
if treenode=nil
then
begin
result:=false;
exit;
end;
if treenode.haschildren=true
then
begin
childnum:=treenode.count;
nd:=treenode.getfirstchild;
for i:=1
to childnum do
begin
item.add(nd.text);
nd:=nd.getnextsibling;
end;
result:=true;
endelse
result:=false;
end;
end.
簡便操作WPF資料繫結
wpf資料繫結的應用在剛剛接觸wpf的朋友眼中看來是乙個比較難以掌握的技術。不過,實際上熟練的掌握這一技術還是比較簡單的。ad wpf開發工具是乙個比較實用的輔助工具。主要為開發人員實現了圖形介面處理的一些相關功能。wpf資料繫結非常的好用,下面的例子可以說明這點。我們在xaml 中建立乙個list...
excel 相關簡便操作 之 vlookup 操作
準備工作 提取excel括號前的值 left b2,find b2 1 提取excel括號中的值 trim right substitute substitute b2,rept 10 rept 10 20 下圖表a中取length 從表a到表b,有乙個 值複製 的動作 使用vlookup 下圖表c...
vi vim 編輯器簡便操作命令
想要更快更準的運用vim編輯器,記住以下快捷鍵,會有很大幫助哦!按i o a進入編輯模式。s g 來在全部內容的行首新增 號注釋 1,10 s g 在1 10 行首新增 號注釋 2,5 co 5 將第2行到第5行的內容複製到第5行下 dg 刪除游標後到行尾的所有字元 d 刪除游標到行尾的字元 只支援...