TreeView的用法基本用法.docx

上传人:b****4 文档编号:3741694 上传时间:2022-11-25 格式:DOCX 页数:15 大小:23.72KB
下载 相关 举报
TreeView的用法基本用法.docx_第1页
第1页 / 共15页
TreeView的用法基本用法.docx_第2页
第2页 / 共15页
TreeView的用法基本用法.docx_第3页
第3页 / 共15页
TreeView的用法基本用法.docx_第4页
第4页 / 共15页
TreeView的用法基本用法.docx_第5页
第5页 / 共15页
点击查看更多>>
下载资源
资源描述

TreeView的用法基本用法.docx

《TreeView的用法基本用法.docx》由会员分享,可在线阅读,更多相关《TreeView的用法基本用法.docx(15页珍藏版)》请在冰豆网上搜索。

TreeView的用法基本用法.docx

TreeView的用法基本用法

TreeView的用法开始(挺全的)

//************* TreeView 的用法开始******************//

一:

TreeView.Items[0].Expanded :

= True; // 展开第一个节点

二:

TreeView.Items[0].Item[0].Selected :

= True; // 移动到第一个节点的第一个子节点  

找当前节点的下一个节点,按序号找如下:

if treeview1.Selected.GetNext<>nil then

treeview1.Selected.GetNext.Selected:

=true;

TreeView1.SetFocus;

找当前节点的下一个同层兄弟如下:

if treeview1.Selected.getNextSibling<>nil then

treeview1.Selected.getNextSibling.Selected:

=true;

TreeView1.SetFocus;

TreeView.Selected.getPrevSibling  //当前选中节点的上一个兄弟节点

TreeView.Selected.Parent          //  当前选中节点的父节点  

getfirstchild是跳到该节点子结点中的第一个

getlastchild是跳到该节点子结点中的最后一个

如果你是想跳到同层兄弟结点的第一个

if treeview1.selected.parent<>nil then

treeview1.selected.parent.getfirstchild.selected:

=true

else

treeview1.items.item[0].selected:

=true;

如果你是想跳到同层兄弟结点的最后一个

if treeview1.selected.parent<>nil then

treeview1.selected.parent.getlastchild.selected:

=true

else

treeview1.Items.Item[treeview1.Items.Count-1].Selected:

=true;

TreeView的使用方法 

基本信息:

TreeView 是一个显示树型结构的控件,每一个节点都是一个新类,

使用具有代表性每个节点都有四个值:

TEXT:

显示文字 Image Index:

显示图形序号

Selected Index:

State Index:

(1)建立目录项(本例中使用的TREEVIEW名称为:

TvwTips)

增加根目录下的节点:

(节点)

var

CatNode :

 TTreeNode; //先建立一个TREEVIEW使用的子对象

begin

TvwTips.SetFocus; //将焦点置到这个TREEVIEW控件上

{ 在根标题下建立一个新的子标题 }

CatNode :

= TvwTips.Items.AddChild( 

TvwTips.Items.GetFirstNode,'New Category' );

CatNode.ImageIndex :

= 1;

CatNode.SelectedIndex :

= 2;

CatNode.EditText; { 允许用户改变这个标题 }

end; 增加下一级目录(内容):

var

ParentNode, TipNode :

 TTreeNode; //先建立TREEVIEW使用

的子对象

VersionNum :

 Integer;

begin

TvwTips.SetFocus; //将焦点置到这个TREEVIEW控件上

VersionNum :

= TMenuItem( Sender ).Tag; { Ver num of new tip }

ParentNode :

= TvwTips.Selected; { 取出当前的选中节点 }

if ParentNode.Level = nlTip then{ Parent cannot be a tip node }

ParentNode :

= TvwTips.Selected.Parent;

TipNode :

= TvwTips.Items.AddChildObject( ParentNode,'New 

Subject',Pointer( VersionNum ) );

TipNode.ImageIndex :

= 3; { Normal tip bitmap }

TipNode.SelectedIndex :

= 4; { Highlighted tip bitmap }

TipNode.MakeVisible; { Move new tip node into view }

TipNode.EditText; { Immediately allow user to edit subject }

EnableTreeViewFunctions( TipNode.Level );

RtfTip.Clear;

RtfTip.Modified :

= False;

end;

(2)说明 TvwTips.Items.GetFirstNode 返回TREEVIEW的第一个节点,函数类型为:

TTreeNode 

TvwTips.Items.Count 返回当前TreeView的全部节点数,整数

TvwTips.Selected.Level 返回当前选中节点的在目录树中的级别,

根目录为0

TvwTips.Selected.Parent 返回当前选中节点上级节点,函数类型为

:

TTreeNode 

三、下面这段程序是用TREEVIEW连数据库及一些操作:

unit bmzd;

interface

uses

 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

 StdCtrls, ComCtrls, Db, DBTables, ImgList, Buttons, ExtCtrls, Grids,

 DBGrids;

type

 Tfrmbmzd = class(TForm)

   Panel1:

 TPanel;

   cmd_new:

 TBitBtn;

   cmd_delete:

 TBitBtn;

   cmd_exit:

 TBitBtn;

   tvwcode:

 TTreeView;

   ScrollBox1:

 TScrollBox;

   GroupBox2:

 TGroupBox;

   Label3:

 TLabel; Label2:

 TLabel;  Label1:

 TLabel; Label4:

 TLabel

 Label5:

 TLabel; Edit2:

 TEdit; Edit3:

TEdit; Edit4:

 TEdit; Edit5:

 TEdit;

  ImageList1:

 TImageList;Edit1:

 TEdit;

   cmd_save:

 TBitBtn; cmd_update:

 TBitBtn;

   procedure FormShow(Sender:

 TObject);

   procedure FormClose(Sender:

 TObject; var Action:

 TCloseAction);

   procedure cmd_newClick(Sender:

 TObject);

   procedure cmd_deleteClick(Sender:

 TObject);

   procedure Edit2KeyPress(Sender:

 TObject; var Key:

 Char);

   procedure tvwcodeChange(Sender:

 TObject; Node:

 TTreeNode);

   procedure cmd_updateClick(Sender:

 TObject);

   procedure BitBtn2Click(Sender:

 TObject);

   procedure tvwcodeClick(Sender:

 TObject);

 private

   { Private declarations }

     function LoadCode(crTbl:

TDBDataSet):

Integer;

function GetLevel(sFormat,sCode:

String):

Integer;

 public

   { Public declarations }

 end;

var

 frmbmzd:

 Tfrmbmzd;

 ii:

integer;

 tv:

ttreenode;

 const

SCodeFormat = '222222';   //科目代码结构

SFirstNodeTxt   = '部门分类';

implementation

uses dm;

{$R *.DFM}

function tfrmbmzd.LoadCode(crTbl:

TDBDataSet):

Integer;

var NowID,sName,ShowTxt:

String;

i,Level:

Integer;

MyNode:

array[0..6]of TTreeNode;

//保存各级节点,最长支持6级(重点)

begin

Screen.Cursor:

=crHourGlass;

Level:

=0;

With frmdm.tabbm do

begin

try

if not Active then Open;

First;

tvwCode.Items.Clear;

//以下是增加第一项

MyNode[Level]:

=tvwCode.Items.Add

(tvwCode.TopItem,SFirstNodeTxt);

MyNode[Level].ImageIndex:

=0;

MyNode[Level].SelectedIndex:

=0;

//以上是增加第一项

While Not Eof do

begin

NowID:

=Trim(FieldByName('bumeng_id').AsString);

ShowTxt:

=FieldByName('bumeng_name').AsString;

Level:

=GetLevel(SCodeFormat,NowID); 

//返回代码的级数

//以下是增加子项

//以下用上一级节点为父节点添加子节点

if Level>0 then//确保代码符合标准

begin

  MyNode[Level]:

=tvwCode.Items.AddChild

(MyNode[Level-1],NowID+' '+ShowTxt);

  MyNode[Level].ImageIndex:

=1;

 MyNode[Level].SelectedIndex:

=2;

end;   //以上是增加子项

Next;

end;

finally

Close;

end;

end;

MyNode[0].Expand(False);//将首节点展开

Screen.Cursor:

=crDefault;

end;

//以上函数将Code.db表中的科目代码和科目代码名称显示出来

//下面函数的功能是返回一代码的级数,

//参数sFormat传递科目代码结构;

//参数sCode传递某一科目代码

function tfrmbmzd.GetLevel

(sFormat,sCode:

String):

Integer;

var i,Level,iLen:

Integer;

begin

Level:

=-1;//如果代码不符合标准,则返回-1

iLen:

=0;

if (sFormat<>'')and(sCode<>'')then

for i:

=1 to Length(sFormat) do

begin

iLen:

=iLen+StrToInt(sFormat[i]);

if Length(sCode)=iLen then

begin

  Level:

=i;

  Break;

end;

end;

Result:

=Level;

end;

procedure Tfrmbmzd.FormShow(Sender:

 TObject);

begin

if not frmdm.tabbm.active then frmdm.tabbm.Open;

frmdm.tabbm.IndexFieldNames:

='BUMENG_ID';

//按字段aCode排序(不要漏掉)

LoadCode(frmdm.tabbm);

end;

procedure Tfrmbmzd.FormClose(Sender:

 TObject; var Action:

 TCloseAction);

begin

Action :

= caFree;

end;

procedure Tfrmbmzd.cmd_newClick(Sender:

 TObject);

begin

tvwcode.SetFocus ;

if tvwcode.selected.AbsoluteIndex<>0 then

begin

cmd_delete.Enabled:

=true;

cmd_update.Enabled:

=true;

cmd_save.Enabled :

=true;

if not frmdm.tabbm.Active then frmdm.tabbm.Open;

edit1.text:

=frmdm.tabbm.Fields[0].asstring;

end;

tvwcode.SetFocus ;

tvwcode.Items.AddChild(tvwcode.selected,'新建部门');

if   tvwcode.Selected.HasChildren then

begin

if tvwcode.Selected.GetLastChild.index+1>9 then

 edit2.text:

=inttostr(tvwcode.Selected.GetLastChild.index+1)

 else

edit2.text:

='0'+inttostr(tvwcode.Selected.GetLastChild.index+1);

edit3.text:

='新建部门';

edit2.Enabled:

=true;

edit3.Enabled:

=true;

end

else

begin

edit2.text:

='01';

edit3.text:

='新建部门';

edit2.Enabled:

=true;

edit3.Enabled:

=true;

end;

if not frmdm.tabbm.Active then frmdm.tabbm.Open;

frmdm.tabbm.edit;

frmdm.tabbm.Append;

cmd_new.Enabled :

=false;

cmd_delete.Enabled :

=false;

cmd_update.Enabled :

=false;

cmd_save.Enabled :

=true;   //新建下级部门

tvwcode.Selected.GetLastChild.Selected:

=true;//设选择

tv:

=tvwcode.Selected ;

tvwcode.autoExpand:

=true;

tvwcode.SetFocus ;

end;

procedure  Tfrmbmzd.cmd_deleteClick(Sender:

 TObject);

var

I:

integer;

seno,setext:

string;

begin

if tvwcode.Selected.HasChildren=true then

begin

application.messagebox('该部门包含下级,不能删除','提示',MB_OKCANCEL+mb_iconquestion ) ;

end

else

begin

if   application.messagebox('你确实要删除当前部门吗','提示',MB_OKCANCEL+mb_iconquestion )

=IDOK then

begin

setext:

=tvwcode.selected.text;

i:

=0;

while setext[i] <> ' ' do

begin

I :

= I + 1;

seno:

=seno+setext[i];

end;

if not frmdm.tabbm.Active then frmdm.tabbm.Open;

frmdm.tabbm.setkey;

frmdm.tabbm.Fields[0].asstring:

=seno;

if frmdm.tabbm.GotoKey then

begin

frmdm.tabbm.edit;

frmdm.tabbm.Delete;

end;

tvwcode.Selected.Delete ;

cmd_new.Enabled :

=true;

tvwcode.autoExpand:

=true;

 tvwcode.SetFocus ;

end;

end;

end;

procedure Tfrmbmzd.Edit2KeyPress(Sender:

 TObject; var Key:

 Char);

begin

if key  in ['0'..'9',Chr(vk_Back)]   then

else

begin

key:

=#0;

application.messagebox('','',mb_ok);

end;

end;

procedure Tfrmbmzd.tvwcodeChange(Sender:

 TObject; Node:

 TTreeNode);

var

i,lev:

integer ;

strr,seno,setext:

string;

begin

if cmd_new.Enabled =true then

begin

if tvwcode.selected.AbsoluteIndex<>0   then

begin

cmd_delete.Enabled:

=true;

cmd_update.Enabled:

=true;

cmd_save.Enabled :

=true;

setext:

=tvwcode.selected.text;

i:

=0;

while setext[i] <> ' ' do

begin

I :

= I + 1;

seno:

=seno+setext[i];

end;

if not frmdm.tabbm.Active then frmdm.tabbm.Open;

frmdm.tabbm.setkey;

frmdm.tabbm.Fields[0].asstring:

=seno;

frmdm.tabbm.GotoKey;

strr:

='';

case tvwcode.Selected.Level of

2:

 strr:

=copy(frmdm.tabbm.fields[0].asstring,1,2);

3:

 strr:

=copy(frmdm.tabbm.fields[0].asstring,1,4);

 end;

 edit1.text:

=strr;

//加上级编码

edit3.text:

=frmdm.tabbm.Fields[1].asstring;

//本级编码

edit2.text:

=copy(frmdm.tabbm.fields[0].asstring,length(frmdm.tabbm.fields[0].asstring)-1,2);

end

else

begin

edit1.text :

='';

edit2.text :

='';

edit3.text :

='部门分类';

cmd_delete.Enabled :

=false;

cmd_update.Enabled :

=false;

end;

end;

end;

procedure Tfrmbmzd.cmd_updateClick(Sender:

 TObject);

var

i:

integer;

begin

for i:

=0 to ComponentCount-1  do

begin

if (Components[I]  is tedit ) then

(Components[I]  as tedit).enabled:

=false;

end;

for i:

=0 to ComponentCount-1  do

begin

if (Components[I]  is tbitbtn ) then

(Components[I]  as tbitbtn).enabled:

=true;

end;

if tvwcode.Selected.AbsoluteIndex<>0 then

begin

if not frmdm.tabbm.Active  then frmdm.tabbm.Open;

frmdm.tabbm.Edit;

frmdm.tabbm.Fields[0].asstring:

=edit1.text+edit2.text;

frmdm.tabbm.Fields[1].asstring:

=edit3.text;

try

frmdm.tabbm.Post;

//表的保存

except

on edbengineerror do

begin

edit2.Enabled :

=true;

 application.messagebox('编号不能重复,请重新输入','提示',MB_OK+mb_iconquestion ) ;

exit;

end;

 end;

tvwcode.Selected.Text:

=edit1.text+edit2.text+' '+edit3.text;

tvwcode.SetFocus ;   //修改树

end;

cmd_new.Enabled :

=true;

edit2.Enabled :

=false;

end;

procedure Tfrmbmzd.BitBtn2Click(Sender:

 TObject);

begin

cmd_new.Enabled :

=false;

cmd_delete.Enabled :

=false;

edit2.enabled:

=true;

edit3.Enabled :

=true;

end;

procedure Tfrmbmzd.tvwcodeClick(Sender:

 TObject);

var

i:

integer;

begin

if cmd_new.Enabled =false then

begin

application.MessageBox('当前是修改状态,请单击保存按钮','提示',mb_ok);

tv.Selected :

=true;

end;

if  tvwcode.selected.AbsoluteIndex=0 then

begin

for

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1