区域管理

unit UTree;
interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ComCtrls, Menus, StdCtrls;
 type
   PMyRec = ^TMyRec;
   TMyRec = record
     Name: string;     //区域名称
     Position: string; //所属位置
     level:string;     //地区级别
  end;

type
  TFTree = class(TForm)
    TreeView1: TTreeView;
    PopupMenu1: TPopupMenu;
    Add: TMenuItem;
    AddSub: TMenuItem;
    Delete: TMenuItem;
    Edit: TMenuItem;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    Label1: TLabel;
    Label2: TLabel;
    Label3: TLabel;
    Save: TMenuItem;
    BSave: TButton;
    procedure AddClick(Sender: TObject);
    procedure AddSubClick(Sender: TObject);
    procedure DeleteClick(Sender: TObject);
    procedure EditClick(Sender: TObject);
    procedure TreeView1Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure LoadData(MyRecPtr:PMyRec);
    procedure SaveData(MyRecPtr:PMyRec);
    procedure SaveClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;


var
  FTree: TFTree;
  NodeNumber:integer;

implementation

{$R *.dfm}
//将三个编辑框组件中的文本保存到特定结点的相关对象中
procedure TFTree.SaveData(MyRecPtr:PMyRec);
begin
    MyRecPtr^.Name:=Edit1.Text;
    MyRecPtr^.Position:=Edit2.Text;
    MyRecPtr^.level:=Edit3.Text;
end;

//将特定结点的相关数据显示在三个编辑框组件中
procedure TFTree.LoadData(MyRecPtr:PMyRec);
begin
    Edit1.Text :=MyRecPtr^.Name;
    Edit2.Text :=MyRecPtr^.Position;
    Edit3.Text :=MyRecPtr^.level;
end;

procedure TFTree.FormCreate(Sender: TObject);
var
  MyRecPtr: PMyRec;
begin
  Label1.Caption :='名称';
  Label2.Caption :='所属区域';
  Label3.Caption :='级别';
  BSave.Caption :='保存';

  New(MyRecPtr);
  MyRecPtr^.Name := '中国';
  MyRecPtr^.Position := '亚洲';
  MyRecPtr^.level := '国家级';
  //添加根结点的相关对象
  TreeView1.Items.AddObject(nil, '中国' , MyRecPtr);
  LoadData(MyRecPtr);

  NodeNumber :=1;
end;

procedure TFTree.AddClick(Sender: TObject);
var
  NewNode :TTreeNode;
  MyRecPtr: PMyRec;
begin
  //设置新结点的相关数据
  New(MyRecPtr);
  Edit1.Text :='新结点'+inttostr(NodeNumber) ;
  Edit2.Text :='未知';
  Edit3.Text :='未知';
  SaveData(MyRecPtr);

  NodeNumber:=NodeNumber+1;
 //添加当前结点的兄弟结点
  with TreeView1 do
  begin
    if Items.Count = 0 then
      NewNode :=Items.AddObject(nil, Edit1.Text , MyRecPtr)
    else
      NewNode :=Items.AddObject(selected, Edit1.Text , MyRecPtr);
    end;
  NewNode.Selected :=true;
end;

procedure TFTree.AddSubClick(Sender: TObject);
var
  NewNode :TTreeNode;
  MyRecPtr: PMyRec;
begin
  //设置新结点的相关数据
  New(MyRecPtr);
  Edit1.Text :='新结点'+inttostr(NodeNumber) ;
  Edit2.Text :='未知';
  Edit3.Text :='未知';
  SaveData(MyRecPtr);

  NodeNumber:=NodeNumber+1;
 //添加当前结点的子结点
  with TreeView1 do
  begin
    if Items.Count = 0 then
      NewNode :=Items.AddChildObject(nil, Edit1.Text , MyRecPtr)
    else
      NewNode :=Items.AddChildObject(selected, Edit1.Text , MyRecPtr);
    end;

   NewNode.Selected :=true;
end;

procedure TFTree.DeleteClick(Sender: TObject);
var
  MyRecPtr: PMyRec;
begin
  if TreeView1.Selected=nil then
    exit;
  MyRecPtr := TreeView1.Selected.Data;
  //释放当前结点的相关数据
  Dispose(MyRecPtr);
  //删除当前结点
  TreeView1.Selected.Delete;
   //使编辑框组件显示新结点的相关数据
  TreeView1Click(nil);
end;

procedure TFTree.EditClick(Sender: TObject);
begin
 TreeView1.Selected.EditText;
end;

procedure TFTree.TreeView1Click(Sender: TObject);
var
  MyRecPtr: PMyRec;
begin
if TreeView1.Selected<>nil then
   begin
    MyRecPtr:= TreeView1.Selected.Data;
    LoadData(MyRecPtr);
   end;
end;

procedure TFTree.SaveClick(Sender: TObject);
var
  MyRecPtr:PMyRec;
begin
   if TreeView1.Selected<>nil then
   begin
    MyRecPtr:= TreeView1.Selected.Data;
    SaveData(MyRecPtr);
   end;
end;

end.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值