📄 main.pas
字号:
unit Main;
interface
uses Windows, SysUtils, Classes, Graphics, Forms, Controls, Menus,
StdCtrls, Dialogs, Buttons, Messages, ExtCtrls, ComCtrls, StdActns,
ActnList, ToolWin, ImgList,login,Db,
ADODB, DBTables, Grids, DBGrids,comobj,wpfuncs,prefs,registry,vafuncs,
//
dlgGroup,frmusers,frmRoles,frmpwd,frmusergrp,Dbmain;
const
TYPE_PRJ=0;
TYPE_ROLE=1;
TYPE_DOC=2;
EN_PRJ=0;
EN_ROLE=1;
EN_DOC=2;
EN_TEMP=3;
type
TMainForm = class(TForm)
OpenDialog: TOpenDialog;
StatusBar: TStatusBar;
ImageList1: TImageList;
Panel: TPanel;
Splitter1: TSplitter;
PageControl1: TPageControl;
tsSecurity: TTabSheet;
tvOrg: TTreeView;
tsDocs: TTabSheet;
ImageList2: TImageList;
pmUser: TPopupMenu;
Modify1: TMenuItem;
SetPassword1: TMenuItem;
Delete1: TMenuItem;
pmGroup: TPopupMenu;
ModifyGroup1: TMenuItem;
Delete2: TMenuItem;
N2: TMenuItem;
AssignRights1: TMenuItem;
N3: TMenuItem;
AssignRights2: TMenuItem;
pmGroups: TPopupMenu;
pmiGroup: TMenuItem;
Referesh1: TMenuItem;
pmUsers: TPopupMenu;
pmiUser: TMenuItem;
MenuItem2: TMenuItem;
plClient: TPanel;
lv: TListView;
Panel1: TPanel;
ImgMenu: TImageList;
Members1: TMenuItem;
Splitter2: TSplitter;
pmType: TPopupMenu;
Delete3: TMenuItem;
pnDocs: TPanel;
spRoles: TSpeedButton;
Label9: TLabel;
tnav: TToolBar;
btins1: TToolButton;
ToolButton3: TToolButton;
ToolButton4: TToolButton;
btDelete1: TToolButton;
ToolButton6: TToolButton;
btmodify1: TToolButton;
ToolButton10: TToolButton;
Panel2: TPanel;
Image2: TImage;
SpeedButton1: TSpeedButton;
tbRefresh: TSpeedButton;
SpeedButton3: TSpeedButton;
Image1: TImage;
SpeedButton2: TSpeedButton;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
procedure HelpAbout1Execute(Sender: TObject);
procedure Preference1Click(Sender: TObject);
procedure tbRefreshClick(Sender: TObject);
procedure tvOrgMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure mExitClick(Sender: TObject);
procedure pmiGroupClick(Sender: TObject);
procedure Delete2Click(Sender: TObject);
procedure tvOrgClick(Sender: TObject);
procedure ModifyGroup1Click(Sender: TObject);
procedure tbclealogClick(Sender: TObject);
procedure pmiUserClick(Sender: TObject);
procedure Delete1Click(Sender: TObject);
procedure SetPassword1Click(Sender: TObject);
procedure Modify1Click(Sender: TObject);
procedure Members1Click(Sender: TObject);
procedure lvClick(Sender: TObject);
procedure Delete3Click(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure spPrjsClick(Sender: TObject);
procedure spRolesClick(Sender: TObject);
procedure spDocsClick(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure btins1Click(Sender: TObject);
procedure btmodify1Click(Sender: TObject);
procedure btDelete1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure btcommit1Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
private
{ Private declarations }
procedure InitSecurity;
procedure InitConfig;
procedure InitDocs;
procedure IconState(Node:TTReeNode;flag:integer);
procedure FreshTv(flag:integer);
procedure FreshTab(txt:string;flag,tab:integer);
public
{ Public declarations }
end;
var
//MainForm: TMainForm;
sUser:widestring;
iType:integer; // 0 - project type, 1-role type, 2- document type
dType:integer; // 0 -project, 1- role 2-document 3-template
implementation
{$R *.DFM}
uses dlgAbt;
procedure TMainForm.HelpAbout1Execute(Sender: TObject);
var
dlgAbout: TdlgAbout;
begin
dlgAbout:=TdlgAbout.Create(self);
dlgAbout.ShowModal;
end;
procedure TMainForm.Preference1Click(Sender: TObject);
var
dlgPreferences:TdlgPreferences;
begin
Application.CreateForm(TdlgPreferences, dlgPreferences);
dlgPreferences.ShowModal;
end;
procedure TMainForm.InitSecurity;
var root,GrpNode,Node,UserNode:TtreeNode;
str:TStrings;
i:integer;
rows:variant;
begin
iType:=-1;
dType:=-1;
lv.Columns.Clear;
lv.Items.Clear;
Rows:=unassigned;
tvOrg.Items.Clear;
Root:=tvOrg.Items.Add(nil,'日志');
IconState(Root,5);
Root:=tvOrg.Items.Add(nil,'部门/用户');
IconState(Root,0);
GrpNode:=tvOrg.Items.AddChild(Root,'部门');
IconState(GrpNode,1);
// Add groups
rows:=sup.PS_Get_groups('');
str:=Get_ColRecords(rows,2);
for i :=0 to (str.Count-1) do begin
Node:=tvOrg.Items.AddChild(GrpNode,str.Strings[i]);
IconState(Node,2);
end;
// Add users
UserNode:=tvOrg.Items.AddChild(Root,'用户');
IconState(UserNode,6);
rows:=sup.PS_Get_Users('');
str.Clear;
str:=Get_ColRecords(rows,1);
for i:=0 to (str.Count-1) do begin
Node:=tvOrg.Items.AddChild(UserNode,str.Strings[i]);
IconState(Node,3);
end;
// Add Users
{Node:=tvOrg.Items.AddChild(UserNode,'Admin');
IconState(Node,3);
Node:=tvOrg.Items.AddChild(UserNode,'Manager');
IconState(Node,3);
tvOrg.FullExpand;
}
tvOrg.FullExpand;
end;
procedure TMainForm.InitConfig;
begin
lv.Columns.Clear;
lv.Items.Clear;
end;
procedure TMainForm.InitDocs;
begin
lv.Columns.Clear;
lv.Items.Clear;
end;
procedure TMainForm.tbRefreshClick(Sender: TObject);
begin
tvOrg.Refresh;
InitSecurity;
end;
// Set imageindex for Treeview Node
procedure TmainForm.IconState(Node:TTReeNode;flag:integer);
begin
if flag=0 then begin
Node.ImageIndex:=0;
Node.SelectedIndex:=0;
end;
if flag=1 then begin
Node.ImageIndex:=1;
Node.SelectedIndex:=1;
end;
if flag=2 then begin
Node.ImageIndex:=2;
Node.SelectedIndex:=2;
end;
if flag=3 then begin
Node.ImageIndex:=3;
Node.SelectedIndex:=3;
end;
if flag=4 then begin
Node.ImageIndex:=4;
Node.SelectedIndex:=4;
end;
if flag=5 then begin
Node.ImageIndex:=5;
Node.SelectedIndex:=5;
end;
if flag=6 then begin
Node.ImageIndex:=6;
Node.SelectedIndex:=6;
end;
end;
procedure TMainForm.tvOrgMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var Node:TtreeNode;
sCapt:string;
begin
if Button<>mbRight then Exit;
tvOrg.PopupMenu:=nil;
Node:=tvOrg.Selected;
if (Node=nil) or (Node.Parent=nil) then Exit;
tvOrg.PopupMenu:=nil;
sCapt:=Node.Text;
if sCapt='部门' then begin
tvOrg.PopupMenu:=pmGroups;
end;
if sCapt='用户' then begin
tvOrg.PopupMenu:=pmUsers;
end;
if (Node.Parent.Text='部门') then begin
tvOrg.PopupMenu:=pmGroup;
end;
if (Node.Parent.Text='用户') then begin
tvOrg.PopupMenu:=pmUser;
end;
end;
procedure TMainForm.mExitClick(Sender: TObject);
begin
close;
end;
procedure TMainForm.pmiGroupClick(Sender: TObject);
var
dlgGroups: TdlgGroups;
rows:variant;
role:Tstrings;
begin
dlgGroups:=TdlgGroups.Create(self);
with dlgGroups do begin
rows:=sup.PS_Get_Users('');
role:=Get_ColRecords(rows,1);
edCreator.Text:=sUser;
edDate.Text:=DateTimeTostr(now);
edGroupDes.Items:=role;
if ShowModal=mrOK then begin
if sup.PS_Ins_Groups(edGroupName.Text,edGroupDes.Text) <0 then begin
Showmessage(sup.PS_LastError);
Exit;
end;
freshtv(2);
tbRefresh.Click;
end;
end;
end;
procedure TMainForm.Delete2Click(Sender: TObject);
var Node:TtreeNode;
sCapt:string;
begin
Node:=tvOrg.Selected;
if (Node=nil) or (Node.Parent=nil) then Exit;
sCapt:=Node.Parent.Text;
if (sCapt='部门') then begin
if MessageDlg('你想删除部门: '+''''+Node.Text+''''+'?',
mtConfirmation, [mbYes, mbNo], 0) = mrNo then Exit;
if sup.PS_Del_Groups(Node.Text)<0 then begin
Showmessage(sup.PS_LastError);
end else begin
freshtv(2);
tbRefresh.Click;
end;
end;
if (sCapt='用户') then begin
end;
end;
procedure TMainForm.tvOrgClick(Sender: TObject);
var Node:TtreeNode;
sCapt:string;
begin
Node:=tvOrg.Selected;
tvOrg.PopupMenu:=nil;
if (Node=nil) then exit; // or (Node.Parent=nil) then Exit;
tvOrg.PopupMenu:=nil;
if Node.Parent<>nil then begin
sCapt:=Node.Parent.Text;
if (sCapt='部门') then begin
tvOrg.PopupMenu:=pmGroup;
end;
if (sCapt='用户') then begin
tvOrg.PopupMenu:=pmUser;
end;
end;
//tvOrg.FullExpand;
Node:=tvOrg.Selected;
if (Node=nil) then Exit;
sCapt:=Node.Text;
if (sCapt='日志') then begin
freshtv(1);
//tbRefresh.Click;
Exit;
end;
if tvOrg.Selected.Parent=nil then exit;
if (sCapt='部门') or (tvOrg.Selected.Parent.Text='部门') then begin
freshtv(2);
Exit;
//tbRefresh.Click;
end;
if ((sCapt='用户') and (tvOrg.Selected.Parent=nil)) or (tvOrg.Selected.Parent.Text='用户')then begin
freshtv(3);
Exit;
end;
end;
procedure TMainForm.freshtv(flag:integer);
var
rows:olevariant;
begin
if (flag=1) then begin
lv.Columns.Clear;
lv.Items.Clear;
lv.Items.BeginUpdate;
Lv.Columns.BeginUpdate;
rows:=sup.PS_Get_Logs('','');
ListViewAddColumns(['类型','时间','使用','原因','描述'],[75,150,75,75,550],lv);
ListViewAddRows(rows,lv);
StatusBar.Panels[0].Text:=' Logs Infomation:';
lv.Items.EndUpdate;
Lv.Columns.EndUpdate;
//tbRefresh.Click;
Exit;
end;
if (flag=2) then begin
lv.Items.BeginUpdate;
Lv.Columns.BeginUpdate;
lv.Columns.Clear;
lv.Items.Clear;
rows:=sup.PS_Get_Groups('');
ListViewAddColumns(['','','部门名称','描述','','建立者','建立时间'],[0,0,150,150,0,75,150],lv);
ListViewAddRows(rows,lv);
StatusBar.Panels[0].Text:='部门信息:';
lv.Items.EndUpdate;
Lv.Columns.EndUpdate;
Exit;
//tbRefresh.Click;
end;
if (flag=3) then begin
lv.Items.BeginUpdate;
Lv.Columns.BeginUpdate;
lv.Columns.Clear;
lv.Items.Clear;
rows:=sup.PS_Get_Users('');
ListViewAddColumns(['','用户名','帐号','','部门','建立者','建立日期','最后一次登陆','密码日期','密码过期时间','权限','状态'],
[0,150,150,0,150,75,150,0,150,150,150,150],lv);
ListViewAddRows(rows,lv);
StatusBar.Panels[0].Text:='用户信息:';
lv.Items.EndUpdate;
Lv.Columns.EndUpdate;
Exit;
//showmessage(sup.PS_Lasterror);
//tbRefresh.Click;
end;
if (flag=4) then begin
end;
if (flag=5) then begin
end;
if (flag=6) then begin
end;
if (flag=7) then begin
end;
if flag=8 then begin
dtype:=1;
lv.Items.BeginUpdate;
Lv.Columns.BeginUpdate;
lv.Columns.Clear;
lv.Items.Clear;
rows:=sup.PB_Get_Roles('');
ListViewAddColumns(['职务','描述','建立者','建立时间'],
[150,250,150,150],lv);
ListViewAddRows(rows,lv);
lv.Items.EndUpdate;
Lv.Columns.EndUpdate;
dType:=1;
Exit;
end;
if flag=9 then begin
end;
if flag=10 then begin
end;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -