📄 basedept01p.pas
字号:
unit basedept01p;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, DBGrids, StdCtrls, Buttons, ToolWin, ComCtrls, ImgList,
DB, DBTables, STRUTILS, rmBaseEdit, rmBtnEdit, rmTVComboBox, ExtCtrls;
type
Tbasedept01f = class(TForm)
cbcszl: TCoolBar;
spappend: TSpeedButton;
Label56: TLabel;
spexit: TSpeedButton;
sppost: TSpeedButton;
spedit: TSpeedButton;
spcancel: TSpeedButton;
Label57: TLabel;
spdelete: TSpeedButton;
Query1: TQuery;
Query2: TQuery;
ImageList1: TImageList;
Splitter1: TSplitter;
Panel1: TPanel;
Label3: TLabel;
Edit3: TEdit;
Label1: TLabel;
Edit1: TEdit;
StatusBar1: TStatusBar;
gb2: TLabel;
workmantxt: TEdit;
Panel2: TPanel;
TreeView1: TTreeView;
Cbtmp: TComboBox;
Label2: TLabel;
SpeedButton1: TSpeedButton;
Tbasedept: TTable;
Label4: TLabel;
StateNum: TEdit;
procedure spexitClick(Sender: TObject);
procedure spappendClick(Sender: TObject);
procedure REFRESHDATA;
procedure REFRESHTREEVIEW;
procedure FormShow(Sender: TObject);
procedure spcancelClick(Sender: TObject);
procedure TreeView1Click(Sender: TObject);
procedure sppostClick(Sender: TObject);
procedure spdeleteClick(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure TreeView1DblClick(Sender: TObject);
procedure speditClick(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure FormClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
function checkdata:boolean;
end;
var
basedept01f: Tbasedept01f;
flag,ADDMODE, EDITMODE: BOOLEAN;
seltxt: string;
implementation
uses global, basedept02p;
{$R *.dfm}
procedure Tbasedept01f.spexitClick(Sender: TObject);
begin
CLOSE;
end;
function tbasedept01f.checkdata:boolean;
var
sql:string;
i:integer;
begin
perform(WM_NEXTDLGCTL,0,0);
result:=true;
flag:=true;
// 编号,部门是否为空
if edit3.Text='' then
begin
showmessage('部门编号不能为空');
edit3.SetFocus;
flag:=false;
result:=flag;
exit;
end;
if edit1.Text='' then
begin
showmessage('部门名称不能为空');
edit1.SetFocus;
flag:=false;
result:=flag;
exit;
end;
// 编号是否已存在
if addmode then
begin
sql:='select * from basedept where dept_no='+''''+edit3.text+'''';
query1.Close;
query1.SQL.Clear;
query1.SQL.Add(sql);
query1.Open;
if not query1.IsEmpty then
begin
showmessage('该编号已存在');
edit3.SetFocus;
flag:=false;
result:=flag;
exit;
end;
end;
//现场作业员工数栏是否合法
if workmantxt.Text<>'' then
begin
try
strtoint(workmantxt.Text);//是否全为数字型
except
showmessage('错误,输入的员工数包含非数字型字符!');
workmantxt.SetFocus;
flag:=false;
result:=flag;
exit;
end;
end;
end;
procedure Tbasedept01f.REFRESHData;
var
POS, LEN, STR: INTEGER;
SQL: string;
begin
try
if Tbasedept.State=dsinactive then
Tbasedept.Open;
except
end;
StatusBar1.Panels[0].text := '当前用户名:' + global.puser;
StatusBar1.Panels[1].Text := '登录时间:' + global.logintime;
StatusBar1.Panels[2].Text := '总部门数:' + inttostr(Tbasedept.RecordCount);
if ADDMODE then
begin
EDIT1.Text := '';
edit3.Text := '';
workmantxt.Text :='';
cbtmp.ItemIndex:=0;
EDIT1.ReadOnly := FALSE;
edit3.ReadOnly := false;
workmantxt.ReadOnly :=FALSE;
end
else
begin
if treeview1.Selected = nil then
begin
edit1.Text := '';
edit3.Text := '';
workmantxt.Text :='';
cbtmp.ItemIndex:=0;
end // END if treeview1.Selected = nil then
else
begin
SQL := ' SELECT * FROM BASEDEPT WHERE ID=' +
INTTOSTR(INTEGER(TREEVIEW1.Selected.DATA));
QUERY1.CLOSE;
QUERY1.SQL.Clear;
QUERY1.SQL.ADD(SQL);
QUERY1.Open;
sql:='select count(*) as statenum from person where state=''是'' and '+
' depart_no='+''''+query1.fieldbyname('Dept_no').AsString+'''';
query2.Close;
query2.SQL.Clear;
query2.SQL.Add(sql);
query2.Open;
if not QUERY1.IsEmpty then
begin
EDIT3.Text := QUERY1.FIELDBYNAME('DEPT_NO').ASSTRING;
EDIT1.Text := QUERY1.FIELDBYNAME('DEPART').ASSTRING;
workmantxt.TEXT:= QUERY1.FIELDBYNAME('WORKMAN').ASSTRING;
stateNum.Text:=Query2.fieldbyname('statenum').AsString;
if QUERY1.FieldByName('TYPE').ASSTRING = 'Y' then
cbtmp.ItemIndex := 0
else
cbtmp.ItemIndex := 1;
end;
end; // if treeview1.Selected = nil then
end;
if ADDMODE or EDITMODE then
begin
SPPOST.Visible := TRUE;
SPAPPEND.Visible := FALSE;
SPCANCEL.Visible := TRUE;
SPEDIT.Visible := FALSE;
SPDELETE.Enabled := FALSE;
EDIT1.ReadOnly := FALSE;
PANEL1.Enabled := TRUE;
panel2.Enabled:=false;
end
else
begin
SPPOST.Visible := FALSE;
SPAPPEND.Visible := TRUE;
SPCANCEL.Visible := FALSE;
SPEDIT.Visible := TRUE;
SPDELETE.Enabled := TRUE;
PANEL1.Enabled := FALSE;
panel2.Enabled:=true;
end;
end;
procedure Tbasedept01f.spappendClick(Sender: TObject);
begin
ADDMODE := TRUE;
REFRESHDATA;
if PANEL1.Enabled then
EDIT3.SetFocus;
end;
procedure Tbasedept01f.REFRESHTREEVIEW;
var
SQL, STR: string;
len, i: INTEGER;
NODE: TTREENODE;
begin
TREEVIEW1.Items.Clear;
SQL := 'SELECT * FROM BASEDEPT ORDER BY len(TYPE_NO),TYPE_NO';
QUERY1.Close;
QUERY1.SQL.Clear;
QUERY1.SQL.Add(SQL);
QUERY1.OPEN;
while not QUERY1.Eof do
begin
//定位其父节点
len := LENGTH(QUERY1.FIELDBYNAME('TYPE_NO').AsString);
//如果为第一层
case len of
2:
begin
TREEVIEW1.Selected := nil;
STR := '(' + QUERY1.FIELDBYNAME('DEPT_NO').ASSTRING +
')' + QUERY1.FIELDBYNAME('DEPART').AsString;
NODE := TREEVIEW1.Items.Add(nil, STR);
NODE.Data := POINTER(QUERY1.FIELDBYNAME('ID').ASINTEGER);
end;
4:
begin // 4 case
//找出父节点
SQL := MIDSTR(QUERY1.FIELDBYNAME('TYPE_NO').AsString, 0, 2);
SQL := ' SELECT * FROM BASEDEPT WHERE TYPE_NO=' + '''' + SQL + '''';
QUERY2.Close;
QUERY2.SQL.Clear;
QUERY2.SQL.Add(SQL);
QUERY2.Open;
if not QUERY2.IsEmpty then
begin
I := 0;
while I < TREEVIEW1.Items.Count do
begin
NODE := TREEVIEW1.Items[I];
if INTEGER(TREEVIEW1.Items[I].Data) =
QUERY2.FieldByName('ID').AsInteger then
begin
STR := '(' + QUERY1.FIELDBYNAME('DEPT_NO').ASSTRING +
')' + QUERY1.FIELDBYNAME('DEPART').AsString;
NODE := TREEVIEW1.Items.AddChild(NODE, STR);
NODE.Data := POINTER(QUERY1.FieldByName('ID').AsInteger);
end; // end if INTEGER(TREEVIEW1.Items[I].Data) =
I := I + 1;
end; // end while I < TREEVIEW1.Items.Count do
end; // end if not QUERY2.IsEmpty then
end; // end case 4
6:
begin // 6 case
//找出父节点
SQL := MIDSTR(QUERY1.FIELDBYNAME('TYPE_NO').AsString, 0, 4);
SQL := ' SELECT * FROM BASEDEPT WHERE TYPE_NO=' + '''' + SQL + '''';
QUERY2.Close;
QUERY2.SQL.Clear;
QUERY2.SQL.Add(SQL);
QUERY2.Open;
if not QUERY2.IsEmpty then
begin
I := 0;
while I < TREEVIEW1.Items.Count do
begin
NODE := TREEVIEW1.Items[I];
if INTEGER(TREEVIEW1.Items[I].Data) =
QUERY2.FieldByName('ID').AsInteger then
begin
STR := '(' + QUERY1.FIELDBYNAME('DEPT_NO').ASSTRING +
')' + QUERY1.FIELDBYNAME('DEPART').AsString;
NODE := TREEVIEW1.Items.AddChild(NODE, STR);
NODE.Data := POINTER(QUERY1.FieldByName('ID').AsInteger);
end; // end if INTEGER(TREEVIEW1.Items[I].Data) =
I := I + 1;
end; // end while I < TREEVIEW1.Items.Count do
end; // end if not QUERY2.IsEmpty then
end; // end case 6
end; // end case
QUERY1.Next;
end; // end while not QUERY1.Eof do
TREEVIEW1.FullExpand;
end;
procedure Tbasedept01f.FormShow(Sender: TObject);
begin
REFRESHTREEVIEW;
REFRESHDATA;
end;
procedure Tbasedept01f.spcancelClick(Sender: TObject);
begin
ADDMODE := FALSE;
EDITMODE := FALSE;
REFRESHDATA;
end;
procedure Tbasedept01f.TreeView1Click(Sender: TObject);
begin
refreshdata;
end;
procedure Tbasedept01f.sppostClick(Sender: TObject);
var
SQL, LSQL,FTYPE_NO, deptno, deptname,ftype,ftmp,workmen:string;
I, len: INTEGER;
FLAG: BOOLEAN;
NODE: TTREENODE;
begin
if cbtmp.ItemIndex=0 then
begin
ftype:='Y';
ftmp:='本厂';
end;
if cbtmp.ItemIndex=1 then
begin
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -