- Visual C++源码
- Visual Basic源码
- C++ Builder源码
- Java源码
- Delphi源码
- C/C++源码
- PHP源码
- Perl源码
- Python源码
- Asm源码
- Pascal源码
- Borland C++源码
- Others源码
- SQL源码
- VBScript源码
- JavaScript源码
- ASP/ASPX源码
- C#源码
- Flash/ActionScript源码
- matlab源码
- PowerBuilder源码
- LabView源码
- Flex源码
- MathCAD源码
- VBA源码
- IDL源码
- Lisp/Scheme源码
- VHDL源码
- Objective-C源码
- Fortran源码
- tcl/tk源码
- QT源码
sz_ztcks.pas
资源名称:挡案管理系统.rar [点击查看]
上传用户:szruida
上传日期:2007-06-01
资源大小:6518k
文件大小:11k
源码类别:
Delphi控件源码
开发平台:
Delphi
- unit sz_ztcks;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
- Dialogs, DB, Menus, ActnList, XPBarMenu, Grids, DBGridEh, StdCtrls,
- ComCtrls, ExtCtrls, ToolWin, DBClient;
- type
- Tsz_ztck2 = class(TForm)
- CoolBar1: TCoolBar;
- ToolBar1: TToolBar;
- add1: TToolButton;
- xiugai: TToolButton;
- dele1: TToolButton;
- save1: TToolButton;
- refresh1: TToolButton;
- ToolButton3: TToolButton;
- Panel1: TPanel;
- Splitter1: TSplitter;
- Panel2: TPanel;
- Tree: TTreeView;
- Panel3: TPanel;
- Splitter2: TSplitter;
- Panel4: TPanel;
- Label8: TLabel;
- Label9: TLabel;
- Label1: TLabel;
- Label2: TLabel;
- Label3: TLabel;
- Edit1: TEdit;
- Edit2: TEdit;
- Edit3: TEdit;
- Panel5: TPanel;
- GroupBox2: TGroupBox;
- DBGridEh1: TDBGridEh;
- XPBarMenu1: TXPBarMenu;
- ActionList1: TActionList;
- Add: TAction;
- Edit: TAction;
- Delete: TAction;
- Save: TAction;
- Refresh: TAction;
- Print: TAction;
- Quit: TAction;
- PopupMenu1: TPopupMenu;
- A1: TMenuItem;
- D1: TMenuItem;
- E1: TMenuItem;
- N5: TMenuItem;
- N6: TMenuItem;
- sz_ztcl: TDataSource;
- sz_ztck: TDataSource;
- ClientDataSet1: TClientDataSet;
- procedure FormClose(Sender: TObject; var Action: TCloseAction);
- procedure FormCreate(Sender: TObject);
- procedure AddExecute(Sender: TObject);
- procedure N5Click(Sender: TObject);
- procedure N6Click(Sender: TObject);
- procedure EditExecute(Sender: TObject);
- procedure DeleteExecute(Sender: TObject);
- procedure SaveExecute(Sender: TObject);
- procedure RefreshExecute(Sender: TObject);
- procedure QuitExecute(Sender: TObject);
- procedure TreeClick(Sender: TObject);
- procedure DBGridEh1DblClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- procedure BtnState();
- procedure loadTree(treeDb:TClientDataSet);//初始化树
- end;
- var
- sz_ztck2: Tsz_ztck2;
- gnode:TtreeNode;//当前节点
- lbjs_sm:string;//类别级数
- lb_dmgz:string;//代码规则
- dsState:string;//确定是增,删,改
- implementation
- uses DMs,u_public;
- {$R *.dfm}
- procedure Tsz_ztck2.BtnState();
- begin
- if add1.Enabled=true or xiugai.Enabled=true then
- begin
- add1.Enabled:=false;A1.Enabled:=false;
- xiugai.Enabled:=false;E1.Enabled:=false;
- dele1.Enabled:=false;D1.Enabled:=false;
- save1.Enabled:=true;
- refresh1.Enabled:=true;
- end
- else
- begin
- add1.Enabled:=true;A1.Enabled:=true;
- xiugai.Enabled:=true;E1.Enabled:=true;
- dele1.Enabled:=true;D1.Enabled:=true;
- save1.Enabled:=false;
- refresh1.Enabled:=true;
- end;
- end;
- //********************************************************************
- procedure Tsz_ztck2.loadTree(treeDb:TClientDataSet);//初始化树
- var
- nodeId,nodeTxt:string;
- SCodeFormat,SFirstNodeTxt:string;
- level:integer;
- mynode:array[0..6] of Ttreenode;
- begin
- //初始化变量
- SCodeFormat:=lbjs_sm ; //库位代码结构
- SFirstNodeTxt:= '库位'; //首节点显示的文字
- Screen.Cursor:=crHourGlass;
- Tree.enabled:=true;
- tree.Items.Clear;
- level:=0;
- //设置根节点
- mynode[level]:=tree.Items.Add(tree.TopItem,'库位');
- mynode[level].ImageIndex:=0;
- mynode[level].SelectedIndex:=1;
- //遍历数据表,利用编码字段记录排序规律,依次添加树节点
- with treeDB do
- begin
- try
- if not active then open;
- first;
- while not treedb.Eof do
- begin
- nodeId:=trim(fieldbyname('ztcl_dm').AsString);
- nodeTxt:=nodeId+'-'+trim(fieldbyname('ztcl_mc').AsString);
- level:=GetNodeLevel(SCodeFormat,nodeId);//获得节点层树
- //再这里返回代码的层次数
- if level>0 then
- begin
- //增加下一节点时,用添加子节点的方法可以轻松实现节点的层次关系
- //注意,这里的父节点是用当前节点的上一级节点mynode[level-1]
- mynode[level]:=tree.Items.AddChild(mynode[level-1],nodeTxt);
- mynode[level].ImageIndex:=0;
- mynode[level].SelectedIndex:=1;
- end;//end if
- next;//下一条纪录
- end;//end while
- finally;
- close;
- end;
- mynode[0].Expand(false);
- screen.Cursor:=crdefault;
- end;//end with
- end;
- procedure Tsz_ztck2.FormClose(Sender: TObject; var Action: TCloseAction);
- begin
- dm.sz_ztck.active:=false;
- dm.sz_ztcl.Active:=false;
- dm.xt_lbjs.active:=false;
- tree.Free;
- sz_ztck2:=Nil;
- action:=cafree;
- end;
- procedure Tsz_ztck2.FormCreate(Sender: TObject);
- begin
- dm.sz_ztcl.Close;
- dm.sz_ztcl.CommandText:='select * from sz_ztcl';
- dm.sz_ztcl.Open;
- dm.xt_lbjs.Close;
- dm.xt_lbjs.CommandText:='select lbjs_sm from xt_lbjs where lb_dm='+''''+'sz_ztcl'+''''+'';
- dm.xt_lbjs.Open;
- //-----------------------------------------------
- lbjs_sm:=dm.xt_lbjs.fieldbyname('lbjs_sm').AsString;
- loadTree(dm.sz_ztcl);//初始化树
- dm.sz_ztcl.Close;
- dm.sz_ztcl.CommandText:='select * from sz_ztcl';
- dm.sz_ztcl.Open;
- dm.sz_ztck.Close;
- dm.sz_ztck.CommandText:='select * from sz_ztck';
- dm.sz_ztck.Open;
- if dm.sz_ztcl.RecordCount=0 then add1.Enabled:=false
- else add1.Enabled:=true;
- end;
- procedure Tsz_ztck2.AddExecute(Sender: TObject);
- var s1,s2:string;
- i,Epos:integer;
- begin
- if tree.Selected.HasChildren then
- begin
- APPLICATION.MessageBox('必须在最底层增加','提示',MB_ok+mb_iconquestion);
- exit;
- end
- else
- s1:=Tree.Selected.Text;
- Epos:=pos('-',s1)-1;//取得'-'在节点名中的位置
- s2:=copy(s1,0,Epos);//
- dm.sz_ztcl.Close;
- dm.sz_ztcl.CommandText:='select ztcl_dm from sz_ztcl where ztcl_dm='+''''+s2+''''+'';
- dm.sz_ztcl.Open;
- //------------------------------------
- dm.sz_ztck.Close;
- dm.sz_ztck.CommandText:='select * from sz_ztck where ztck_dm='+''''+''''+'';
- dm.sz_ztck.Open;
- edit1.SetFocus;
- edit1.Text:='';
- edit2.Text:=dm.sz_ztcl.fieldbyname('ztcl_dm').AsString;
- edit3.Text:='';
- BtnState();//调用按钮的状态参数
- dsState:='add';
- end;
- procedure Tsz_ztck2.N5Click(Sender: TObject);
- begin
- tree.Selected.Expand(true);
- end;
- procedure Tsz_ztck2.N6Click(Sender: TObject);
- begin
- tree.Selected.Collapse(true);
- end;
- procedure Tsz_ztck2.EditExecute(Sender: TObject);
- var s1,s2:string;
- Epos:integer;
- begin
- if tree.selected=nil then
- exit
- else
- if tree.Items.Count<>0 then
- if Tree.Items[0].HasChildren<>false then
- begin
- dsState:='edit';
- BtnState();//调用按钮的状态参数
- s1:=Tree.Selected.Text;
- Epos:=pos('-',s1)-1;//取得'-'在节点名中的位置
- s2:=copy(s1,0,Epos);//
- dm.sz_ztcl.Close;
- dm.sz_ztcl.CommandText:='select * from sz_ztcl where ztcl_dm='+''''+s2+''''+'';
- dm.sz_ztcl.Open;
- dm.sz_ztck.edit;
- end
- else
- begin
- application.MessageBox('当前表中没有数据,不能修改','提示',mb_ok+mb_iconinformation);
- exit;
- end;
- end;
- procedure Tsz_ztck2.DeleteExecute(Sender: TObject);
- var
- epos:integer;
- s1,s2:string;
- begin
- if tree.Selected=nil then
- exit
- else
- if tree.Items[0].HasChildren then
- if tree.Selected.HasChildren=true then
- begin
- application.messagebox('该部门包含下级,不能删除','提示',MB_OKCANCEL+mb_iconinformation );
- end
- else
- begin
- s2:=dbgrideh1.Columns[0].DisplayText;
- if s2='' then
- application.MessageBox('当前表中没有数据'+#13#10+'不能删除','提示',mb_ok+mb_iconinformation)
- else
- if application.messagebox('您确实要删除当前记录吗?','提示',MB_OKCANCEL+mb_iconquestion )=IDOK then
- begin
- //-----------------
- if dm.sz_ztcl.recordcount=0 then
- begin
- xiugai.enabled:=false;
- dele1.enabled:=false;
- exit;
- end;
- edit2.text:='';edit3.Text:='';
- dm.sz_ztck.Close;
- dm.sz_ztck.CommandText:='delete from sz_ztck where ztck_dm='+''''+s2+''''+'';
- dm.sz_ztck.execute;
- dm.sz_ztck.Close;
- dm.sz_ztck.CommandText:='select * from sz_ztck';
- dm.sz_ztck.Open;
- //-----------------
- Clientdataset1.Close;
- Clientdataset1.CommandText:='select * from sz_ztck';
- Clientdataset1.Open;//
- if Clientdataset1.recordcount=0 then
- begin
- dele1.Enabled:=false;
- xiugai.Enabled:=false;
- end;
- end;
- end;
- end;
- procedure Tsz_ztck2.SaveExecute(Sender: TObject);
- var n,errorI:integer;
- s_dm:string;
- begin
- if (dsState='edit')=false then
- begin
- s_dm:=edit1.Text;
- dm.sz_ztck.Close;
- dm.sz_ztck.CommandText:='select * from sz_ztck where ztck_dm='+''''+s_dm+''''+'';
- dm.sz_ztck.Open; //查找是否有重复纪录
- if dm.sz_ztck.FieldByName('ztck_dm').AsString<>'' then
- begin
- application.MessageBox('已有重复纪录','提示',Mb_ok+mb_iconinformation);
- exit;
- end
- else
- begin
- dm.sz_ztck.edit;
- dm.sz_ztck.FieldByName('ztck_dm').AsString:=edit1.Text;
- dm.sz_ztck.FieldByName('ztcl_dm').AsString:=edit2.Text;
- dm.sz_ztck.FieldByName('ztck_ztc').AsString:=edit3.Text;
- dm.sz_ztck.ApplyUpdates(0);
- application.MessageBox('数据保存成功','提示',mb_ok+mb_iconinformation);
- BtnState();
- refresh.Execute;
- exit;
- end;
- end
- else
- begin
- dm.sz_ztck.edit;
- dm.sz_ztck.FieldByName('ztck_dm').AsString:=edit1.Text;
- dm.sz_ztck.FieldByName('ztcl_dm').AsString:=edit2.Text;
- dm.sz_ztck.FieldByName('ztck_ztc').AsString:=edit3.Text;
- dm.sz_ztck.ApplyUpdates(0);
- application.MessageBox('数据保存成功','提示',mb_ok+mb_iconinformation);
- BtnState();
- refresh.Execute;
- exit;
- end;
- end;
- procedure Tsz_ztck2.RefreshExecute(Sender: TObject);
- begin
- dm.sz_ztck.Close;
- dm.sz_ztck.CommandText:='select * from sz_ztck';
- dm.sz_ztck.Open;
- tree.Selected.Expand(true);
- end;
- procedure Tsz_ztck2.QuitExecute(Sender: TObject);
- begin
- close;
- end;
- procedure Tsz_ztck2.TreeClick(Sender: TObject);
- var
- s1,s2,s3:string;
- i,Epos:integer;
- begin
- if tree.selected=nil then
- exit
- else
- if Tree.Items[0].HasChildren<>false then
- begin //选中和不选中的图片显示
- for i:=0 to Tree.items.count-1 do
- begin
- Tree.Items[i].ImageIndex:=0;
- Tree.Items[i].SelectedIndex:=1;
- s1:=Tree.Selected.Text;
- Epos:=pos('-',s1);
- s2:=copy(s1,0,Epos-1);
- dm.sz_ztck.Close;
- dm.sz_ztck.CommandText:='select * from sz_ztck where ztcl_dm='+''''+s2+''''+'';
- dm.sz_ztck.Open;
- edit1.Text:=dm.sz_ztck.FieldByName('ztck_dm').AsString;
- edit2.Text:=dm.sz_ztck.FieldByName('ztcl_dm').AsString;
- edit3.Text:=dm.sz_ztck.FieldByName('ztck_ztc').AsString;
- end;
- end;
- end;
- procedure Tsz_ztck2.DBGridEh1DblClick(Sender: TObject);
- var
- s1,s2:string;
- i:integer;
- begin//--1单击每一行时,使树形控件也变化
- s1:=DBGridEh1.Columns[0].DisplayText;//易犯错误是表格的Columns弄错0,1,2
- dm.sz_ztck.Locate('ztck_dm','s1',[]);
- edit1.Text:=dm.sz_ztck.fieldbyname('ztck_dm').AsString;
- edit2.Text:=dm.sz_ztck.fieldbyname('ztcl_dm').AsString;
- edit3.Text:=dm.sz_ztck.fieldbyname('ztck_ztc').AsString;
- if Tree.Items[0].HasChildren<>false then
- begin//end if
- for i:=0 to Tree.items.count-1 do
- if Tree.Items[i].Text=s1+'-'+s2 then
- begin
- Tree.Items[i].Selected:=true;
- break;
- end;//end for
- end;//end if
- end;//--1
- end.