277 lines
7.2 KiB
ObjectPascal
277 lines
7.2 KiB
ObjectPascal
unit U_SYDept;
|
||
|
||
interface
|
||
|
||
uses
|
||
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
|
||
Dialogs, cxGraphics, cxCustomData, cxStyles, cxTL, cxMaskEdit, DB, ADODB,
|
||
cxInplaceContainer, cxDBTL, cxControls, cxTLData, ComCtrls, ToolWin, StdCtrls,
|
||
ExtCtrls, DBClient, cxFilter, cxData, cxDataStorage, cxEdit, cxDBData,
|
||
cxGridLevel, cxGridCustomTableView, cxGridTableView, cxGridDBTableView,
|
||
cxClasses, cxGridCustomView, cxGrid, cxTextEdit, cxLookAndFeels,
|
||
cxLookAndFeelPainters, cxTLdxBarBuiltInMenu, cxNavigator, U_BaseList,
|
||
dxSkinsCore, dxSkinsDefaultPainters, dxDateRanges;
|
||
|
||
type
|
||
TfrmSYDept = class(TfrmBaseList)
|
||
ToolBar1: TToolBar;
|
||
TBRafresh: TToolButton;
|
||
TBAdd: TToolButton;
|
||
TBDel: TToolButton;
|
||
TBClose: TToolButton;
|
||
cxDBTreeList1: TcxDBTreeList;
|
||
cxDBTreeList1cxDBTreeListColumn2: TcxDBTreeListColumn;
|
||
DataSource1: TDataSource;
|
||
ADOQueryTree: TADOQuery;
|
||
ToolButton1: TToolButton;
|
||
ADOQueryTemp: TADOQuery;
|
||
ADOQueryCmd: TADOQuery;
|
||
Panel1: TPanel;
|
||
Label1: TLabel;
|
||
Label2: TLabel;
|
||
Label3: TLabel;
|
||
DPTopName: TEdit;
|
||
DPName: TEdit;
|
||
DPNo: TEdit;
|
||
CDS_Tree: TClientDataSet;
|
||
Label4: TLabel;
|
||
ToolButton2: TToolButton;
|
||
Label5: TLabel;
|
||
DPOrder: TEdit;
|
||
procedure FormDestroy(Sender: TObject);
|
||
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||
procedure TBRafreshClick(Sender: TObject);
|
||
procedure TBCloseClick(Sender: TObject);
|
||
procedure TBAddClick(Sender: TObject);
|
||
procedure cxDBTreeList1Click(Sender: TObject);
|
||
procedure ToolButton1Click(Sender: TObject);
|
||
procedure TBDelClick(Sender: TObject);
|
||
procedure DPNameKeyPress(Sender: TObject; var Key: Char);
|
||
procedure FormShow(Sender: TObject);
|
||
private
|
||
{ Private declarations }
|
||
PState: Integer;
|
||
FCPID, FTopID: string;
|
||
procedure InitTree();
|
||
public
|
||
{ Public declarations }
|
||
end;
|
||
|
||
var
|
||
frmSYDept: TfrmSYDept;
|
||
|
||
implementation
|
||
|
||
uses
|
||
U_DataLink, U_RTFun;
|
||
|
||
{$R *.dfm}
|
||
|
||
procedure TfrmSYDept.InitTree();
|
||
var
|
||
i: Integer;
|
||
begin
|
||
try
|
||
ADOQueryTree.DisableControls;
|
||
with ADOQueryTree do
|
||
begin
|
||
Close;
|
||
SQL.Clear;
|
||
SQL.Add('select * from SY_Dept order by DPlevel,DPOrder,DPName');
|
||
Open;
|
||
end;
|
||
SCreateCDS(ADOQueryTree, CDS_Tree);
|
||
SInitCDSData(ADOQueryTree, CDS_Tree);
|
||
//cxDBTreeList1.Items[0].Expand(false);
|
||
cxDBTreeList1.Items[0].Expand(True);
|
||
finally
|
||
ADOQueryTree.EnableControls;
|
||
end;
|
||
//cxDBTreeList1.Items[1].Expand(False);
|
||
end;
|
||
|
||
procedure TfrmSYDept.FormDestroy(Sender: TObject);
|
||
begin
|
||
inherited;
|
||
frmSYDept := nil;
|
||
end;
|
||
|
||
procedure TfrmSYDept.FormClose(Sender: TObject; var Action: TCloseAction);
|
||
begin
|
||
inherited;
|
||
Action := caFree;
|
||
end;
|
||
|
||
procedure TfrmSYDept.TBRafreshClick(Sender: TObject);
|
||
begin
|
||
InitTree();
|
||
end;
|
||
|
||
procedure TfrmSYDept.TBCloseClick(Sender: TObject);
|
||
begin
|
||
Close;
|
||
end;
|
||
|
||
procedure TfrmSYDept.TBAddClick(Sender: TObject);
|
||
begin
|
||
PState := 11;
|
||
DPTopName.Text := Trim(CDS_Tree.fieldbyname('DPName').AsString);
|
||
//FTopID:=Trim(ADOQueryTree.fieldbyname('CPID').AsString);
|
||
FCPID := '';
|
||
DPName.Text := '';
|
||
DPNo.Text := '';
|
||
DPName.SetFocus;
|
||
end;
|
||
|
||
procedure TfrmSYDept.cxDBTreeList1Click(Sender: TObject);
|
||
begin
|
||
PState := 22;
|
||
with ADOQueryTemp do
|
||
begin
|
||
Close;
|
||
sql.Clear;
|
||
sql.Add('select * from SY_Dept where DPID=''' + Trim(CDS_Tree.fieldbyname('DPParent').AsString) + '''');
|
||
Open;
|
||
end;
|
||
FCPID := Trim(CDS_Tree.fieldbyname('DPID').AsString);
|
||
DPTopName.Text := Trim(ADOQueryTemp.fieldbyname('DPName').AsString);
|
||
DPName.Text := Trim(CDS_Tree.fieldbyname('DPName').AsString);
|
||
DPNo.Text := Trim(CDS_Tree.fieldbyname('DPNo').AsString);
|
||
DPOrder.Text := Trim(CDS_Tree.fieldbyname('DPOrder').AsString);
|
||
end;
|
||
|
||
procedure TfrmSYDept.ToolButton1Click(Sender: TObject);
|
||
var
|
||
maxId: string;
|
||
FInt: Integer;
|
||
begin
|
||
if Trim(DPName.Text) = '' then
|
||
begin
|
||
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʋ<EFBFBD><C6B2><EFBFBD>Ϊ<EFBFBD>գ<EFBFBD>', '<27><>ʾ', 0);
|
||
Exit;
|
||
end;
|
||
{if Trim(DPNo.Text)='' then
|
||
begin
|
||
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>벻<EFBFBD><EBB2BB>Ϊ<EFBFBD>գ<EFBFBD>','<27><>ʾ',0);
|
||
Exit;
|
||
end;}
|
||
if Trim(DPOrder.Text) = '' then
|
||
begin
|
||
DPOrder.Text := '99';
|
||
end;
|
||
if TryStrToInt(Trim(DPOrder.Text), FInt) = False then
|
||
begin
|
||
Application.MessageBox('˳<><CBB3><EFBFBD>ŷǷ<C5B7><C7B7><EFBFBD><EFBFBD><EFBFBD>!', '<27><>ʾ', 0);
|
||
Exit;
|
||
end;
|
||
try
|
||
ADOQueryCmd.Connection.BeginTrans;
|
||
if PState = 11 then
|
||
begin
|
||
if GetLSNo(ADOQueryCmd, maxId, 'DP', 'SY_Dept', 3, 1) = False then
|
||
begin
|
||
ADOQueryCmd.Connection.RollbackTrans;
|
||
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʧ<EFBFBD>ܣ<EFBFBD>', '<27><>ʾ', 0);
|
||
Exit;
|
||
end;
|
||
end
|
||
else
|
||
begin
|
||
maxId := Trim(FCPID);
|
||
end;
|
||
with ADOQueryCmd do
|
||
begin
|
||
Close;
|
||
SQL.Clear;
|
||
sql.Add('select * from SY_Dept where DPID=''' + Trim(FCPID) + '''');
|
||
Open;
|
||
end;
|
||
with ADOQueryCmd do
|
||
begin
|
||
if PState = 11 then
|
||
begin
|
||
Append;
|
||
FieldByName('DPID').Value := Trim(maxId);
|
||
FieldByName('DPName').Value := Trim(DPName.Text);
|
||
FieldByName('DPNo').Value := Trim(DPNo.Text);
|
||
FieldByName('DPParent').Value := Trim(CDS_Tree.fieldbyname('DPID').AsString);
|
||
FieldByName('DPLevel').Value := CDS_Tree.fieldbyname('DPLevel').AsInteger + 1;
|
||
FieldByName('DPOrder').Value := StrToInt(Trim(DPOrder.Text));
|
||
Post;
|
||
end
|
||
else if PState = 22 then
|
||
begin
|
||
Edit;
|
||
FieldByName('DPID').Value := Trim(maxId);
|
||
FieldByName('DPName').Value := Trim(DPName.Text);
|
||
FieldByName('DPNo').Value := Trim(DPNo.Text);
|
||
FieldByName('DPOrder').Value := StrToInt(Trim(DPOrder.Text));
|
||
//FieldByName('CPParent').Value:=Trim(ADOQueryTree.fieldbyname('CPID').AsString);
|
||
//FieldByName('CPOrder').Value:=ADOQueryTree.fieldbyname('CPOrder').AsInteger+1;
|
||
Post;
|
||
end;
|
||
end;
|
||
ADOQueryCmd.Connection.CommitTrans;
|
||
Application.MessageBox('<27><><EFBFBD><EFBFBD><EFBFBD>ɹ<EFBFBD>!', '<27><>ʾ', 0);
|
||
except
|
||
ADOQueryCmd.Connection.RollbackTrans;
|
||
Application.MessageBox('<27><><EFBFBD><EFBFBD>ʧ<EFBFBD><CAA7>!', '<27><>ʾ', 0);
|
||
end;
|
||
end;
|
||
|
||
procedure TfrmSYDept.TBDelClick(Sender: TObject);
|
||
begin
|
||
if ADOQueryTree.FieldByName('DPLevel').AsInteger = 0 then
|
||
Exit;
|
||
with ADOQueryTemp do
|
||
begin
|
||
Close;
|
||
sql.Clear;
|
||
sql.Add('select * from SY_Dept where DPParent=''' + Trim(CDS_Tree.fieldbyname('DPID').AsString) + '''');
|
||
Open;
|
||
if not IsEmpty then
|
||
begin
|
||
Application.MessageBox('<27>Ѿ<EFBFBD><D1BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC><EFBFBD>֯<EFBFBD><D6AF><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>', '<27><>ʾ', 0);
|
||
Exit;
|
||
end;
|
||
end;
|
||
with ADOQueryTemp do
|
||
begin
|
||
Close;
|
||
sql.Clear;
|
||
sql.Add('select * from SY_User where DPID=''' + Trim(CDS_Tree.fieldbyname('DPID').AsString) + '''');
|
||
Open;
|
||
if not IsEmpty then
|
||
begin
|
||
Application.MessageBox('<27><><EFBFBD><EFBFBD>֯<EFBFBD><D6AF><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ա<EFBFBD><D4B1><EFBFBD><EFBFBD>ɾ<EFBFBD><C9BE><EFBFBD><EFBFBD>', '<27><>ʾ', 0);
|
||
Exit;
|
||
end;
|
||
end;
|
||
if Application.MessageBox('ȷ<><C8B7>Ҫɾ<D2AA><C9BE><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', '<27><>ʾ', 32 + 4) <> IDYES then
|
||
Exit;
|
||
with ADOQueryCmd do
|
||
begin
|
||
Close;
|
||
SQL.Clear;
|
||
sql.Add('delete SY_Dept where DPID=''' + Trim(CDS_Tree.fieldbyname('DPID').AsString) + '''');
|
||
sql.Add('delete SY_Dept where DPParent=''' + Trim(CDS_Tree.fieldbyname('DPID').AsString) + '''');
|
||
ExecSQL;
|
||
end;
|
||
InitTree();
|
||
end;
|
||
|
||
procedure TfrmSYDept.DPNameKeyPress(Sender: TObject; var Key: Char);
|
||
begin
|
||
if Key = #13 then
|
||
DPNo.SetFocus;
|
||
end;
|
||
|
||
procedure TfrmSYDept.FormShow(Sender: TObject);
|
||
begin
|
||
inherited;
|
||
InitTree();
|
||
end;
|
||
|
||
end.
|
||
|