【delphi开源代码栏目提醒】:网学会员,鉴于大家对delphi开源代码十分关注,论文会员在此为大家搜集整理了“Class_Dictionary_info_U.pas”一文,供大家参考学习!
{
unit name : Class_Dictionary_info_U
Author : 李涛
Create date: 2004-03-19 08:11:13
description: 类别字典信息管理,可以通用给各个模块的基础类别信息管理
}
unit Class_Dictionary_info_U;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Base_Form_U, StdCtrls, Buttons, ExtCtrls, Grids, DBGrids, ComCtrls, ImgList, DB, ADODB, Public_Unit_U;
type
TClass_Dictionary_info = class(TBase_Form)
Class_info_TreeView: TTreeView;
ImageList1: TImageList;
Class_Tree_ADO: TADOQuery;
procedure FormShow(Sender: TObject);
procedure Class_info_TreeViewChange(Sender: TObject; Node: TTreeNode);
procedure ADD_BitClick(Sender: TObject);
procedure Edit_BitClick(Sender: TObject);
procedure Del_BitClick(Sender: TObject);
procedure Class_info_TreeViewDblClick(Sender: TObject);
private
Tree_Sel : TTreeNode;
Tree_Point: TreePoint;
procedure Tree_star;
{ Private declarations }
public
{ Public declarations }
end;
var
Class_Dictionary_info: TClass_Dictionary_info;
implementation
uses MainForm_u,MainDataModule_u, Class_Dictionary_Browser_U;
{$R *.dfm}
procedure TClass_Dictionary_info.Tree_star;
var
TreeHand: TTreeNode;
TreeChild: TTreeNode;
TreeValues: TreePoint; //Public_Unit_U中自定义结构指针类型
begin
//Class_info_TreeView.DisableAlign;
With Class_Tree_ADO do
begin
Close;
SQL.clear;
SQL.Add('Select * from T_sys_dia');
SQL.Add('Where C_flag=:flag and C_stop=:stop');
Parameters.ParamByName('flag').Value:='1'; //调用作用类别表名
Parameters.ParamByName('stop').Value:='0';
Open;
Class_info_TreeView.Items.Clear;
TreeHand:=Class_info_TreeView.Items.Add(nil,'类别字典信息');
TreeHand.ImageIndex:=0;
TreeHand.SelectedIndex:=0;
while not EOF do
begin
New(TreeValues);
TreeValues.Value:=FieldByName('C_code').asString;
TreeValues.parent:='0';
TreeValues.Kind:=FieldByName('C_code').asString; //由于存放表名的表中没有这个字段这里没有使用意义。
TreeValues.Mode:=FieldByName('C_mod').AsString;
TreeChild:=Class_info_TreeView.Items.AddChildObject(TreeHand,FieldByName('C_name').asString,TreeValues);
TreeChild.ImageIndex:=1;
TreeChild.SelectedIndex:=1;
//这里没有将分配的内存释放,需要注意释放此处内存,将会防问不道指针内的内容。
//Dispose(TreeValues);
//-------初始化其内部类别信息结构--------------------------------
CreateTree(Class_info_TreeView,TreeChild,MainDataModule.Temp_Query,FieldByName('C_Code').AsString);
//---------------------------------------------------------------
Next;
end;
end;
Class_info_TreeView.Items[0].Expanded:=True;
//Class_info_TreeView.EnableAlign;
end;
procedure TClass_Dictionary_info.FormShow(Sender: TObject);
begin
inherited;
Tree_star;
end;
procedure TClass_Dictionary_info.Class_info_TreeViewChange(Sender: TObject;
Node: TTreeNode);
begin
inherited;
Tree_Sel:=Node;
end;
procedure TClass_Dictionary_info.ADD_BitClick(Sender: TObject);
var
Parent_name: String; //父节点名称
Parent_code: String; //父节点编号
Parent_node: TTreeNode;//父节点信息
Parent_Kind: String; //作用范围
Parent_Point: TreePoint;//父节点指针
Parent_Mode: string; //父节点模块号
begin
inherited;
if Tree_Sel=nil then
begin
ShowMessage('请选择要添加的树节点!');
Exit;
end
else
if Tree_Sel.Level<1 then
begin
ShowMessage('请选择要添加的树节点!');
Exit;
end
else
begin
//获得当前节点的父节点
Parent_Node:=Tree_Sel.Parent;
//获得当前父节点的指针内容
Parent_Point:=Parent_Node.Data;
//当前选择的节点指针
Tree_Point:=Tree_Sel.Data;
end;
//上面是判断树节点是否有效,下面是判断是否是第一层和第层层节点
if (Tree_Sel.Level=1) or (Tree_Sel.Level=2) then
begin
if Tree_Sel.Level=1 then
begin
Parent_name:=Tree_Sel.Text;
Parent_Kind:=Tree_Point^.Value; //提取表作用范围编号
Parent_Mode:=Tree_Point^.Mode;
end
else
begin
//父节点名称
Parent_name:=Parent_Node.Text;
Parent_Kind:=Parent_Point^.Kind;
Parent_Mode:=Parent_Point^.Mode;
end;
Parent_code:='0';
end
else
begin
//父节点编码
Parent_code:=Tree_Point^.Value;
//父节点名称
Parent_name:=Parent_Node.Text;
Parent_Mode:=Parent_Point^.Mode;
end;
if not Assigned(Class_Dictionary_Browser) then
begin
Class_Dictionary_Browser:=TClass_Dictionary_Browser.Create(self);
Class_Dictionary_Browser.State:='append';
if Tree_Sel.Level=1 then
begin
Class_Dictionary_Browser.RadioButton2.Checked:=True;
Class_Dictionary_Browser.RadioButton1.Enabled:=False;
end;
Class_Dictionary_Browser.Parent_TreeNode:=Parent_node;
Class_Dictionary_Browser.Sel_TreeNode:=Tree_Sel;
Class_Dictionary_Browser.Kind:=Parent_Kind;
Class_Dictionary_Browser.Mode_Code:=Parent_Mode;
Class_Dictionary_Browser.Parent_Code:=Parent_Code;
Class_Dictionary_Browser.Sel_Level:=Tree_Sel.Level;
Class_Dictionary_Browser.Label3.Caption:=Parent_name;
Class_Dictionary_Browser.ShowModal;
end;
end;
procedure TClass_Dictionary_info.Edit_BitClick(Sender: TObject);
var
parent_node: TTreeNode;
begin
inherited;
if Tree_Sel=nil then
begin
ShowMessage('请选择要修改的树节点!');
Exit;
end
else
if Tree_Sel.Level<=1 then
begin
ShowMessage('请选择要修改的非根节点!');
Exit;
end;
Parent_Node:=Tree_Sel.Parent;
if not Assigned(Class_Dictionary_Browser) then
begin
Class_Dictionary_Browser:=TClass_Dictionary_Browser.Create(self);
Class_Dictionary_Browser.State:='update';
Class_Dictionary_Browser.RadioButton2.Enabled:=False;
Class_Dictionary_Browser.RadioButton1.Enabled:=False;
Class_Dictionary_Browser.LX_checked.Enabled:=False;
if Tree_Sel.ImageIndex=4 then Class_Dictionary_Browser.Stop_Check.Checked:=True;
Class_Dictionary_Browser.Class_info_Text.Text:=Tree_Sel.Text;
Class_Dictionary_Browser.Sel_TreeNode:=Tree_Sel;
Class_Dictionary_Browser.Label3.Caption:=Parent_Node.Text;
Class_Dictionary_Browser.ShowModal;
end;
end;
procedure TClass_Dictionary_info.Del_BitClick(Sender: TObject);
var
Temp_Point: TreePoint;
begin
inherited;
if Tree_Sel=nil then
begin
ShowMessage('请选择要删除的树节点!');
Exit;
end
else
if Tree_Sel.Count>0 then
begin
ShowMessage('请先将内涵的子类删除!');
Exit;
end
else
if MessageDlg('警告:'+char(13)+'确认要将['+Tree_Sel.Text+']的子类删除吗?',mtCustom,[mbYes,mbNo],0)=mrYes then
begin
Temp_Point:=Tree_Sel.Data;
With MainDataModule.Temp_Query do
begin
Close;
SQL.Clear;
SQL.Add('delete from T_Pub_dia_kind ');
SQL.Add('where C_code=:code and C_kind=:kind');
Parameters.ParamByName('code').Value:=Temp_Point^.Val
上一篇:
frmCKSetup.frm
下一篇:
谈谈初学者怎样突破英语音标