📄 dfm_team.pas
字号:
unit dfm_team;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
StdCtrls, DB, DBTables, ComCtrls, Grids, DBGrids, ExtCtrls,
DBCtrls, Mask, ImgList, Menus, Buttons, ActnList, ADODB;
type
Tdfmteam = class(TForm)
ImageList1: TImageList;
dstrole: TDataSource;
dstmenu: TDataSource;
Panel2: TPanel;
DataSource1: TDataSource;
ImageList2: TImageList;
dstworker: TDataSource;
ListView2: TListView;
Splitter1: TSplitter;
Panel1: TPanel;
ListView1: TListView;
Table1: TADOTable;
tbltworker: TADOTable;
tbltrole: TADOTable;
tbltmenu: TADOTable;
procedure FormCreate(Sender: TObject);
procedure tbltroleAfterInsert(DataSet: TDataSet);
procedure tbltroleAfterDelete(DataSet: TDataSet);
procedure tbltroleAfterPost(DataSet: TDataSet);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure FormShow(Sender: TObject);
procedure Table1AfterInsert(DataSet: TDataSet);
procedure Table1BeforeEdit(DataSet: TDataSet);
procedure Table1AfterPost(DataSet: TDataSet);
procedure Table1BeforeDelete(DataSet: TDataSet);
// procedure BitBtn3Click(Sender: TObject);
procedure BitBtn4Click(Sender: TObject);
procedure FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
procedure BitBtn9Click(Sender: TObject);
procedure Table1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
procedure BitBtn10Click(Sender: TObject);
procedure tbltrolePostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
procedure tbltroleDeleteError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
procedure ListView2DblClick(Sender: TObject);
procedure ListView1DblClick(Sender: TObject);
procedure ListView1Click(Sender: TObject);
procedure ListView2Click(Sender: TObject);
procedure Table1AfterDelete(DataSet: TDataSet);
procedure showlistview1;
procedure showlistview2;
private
{ Private-Deklarationen }
MenuItemList: TStringList;
public
{ Public-Deklarationen }
end;
var
dfmteam: Tdfmteam;
FieldList: TStringList;
ListItem: TListItem;
vgroup:string;
const
{Declare constants we're interested in}
eKeyViol = 9729;
eRequiredFieldMissing = 9732;
eForeignKey = 9733;
eDetailsExist = 9734;
implementation
uses TreeFunc, Main, dfm_userinfo, dfm_groupinfo, dbmRainbowMis ;
{$R *.DFM}
procedure Tdfmteam.showlistview1;
begin
tbltrole.Active :=false;
If Not tblTrole.Active Then tblTrole.Open;
tbltrole.first;
listview1.Items.clear;
with ListView1 do
begin
//@ added by Edward Lane : for faster view
Items.BeginUpdate;
while not tbltrole.Eof do
begin
ListItem := Items.Add;
ListItem.Caption := tbltrole.fieldbyname('crolename').asstring+' ('+tbltrole.fieldbyname('croleid').asstring+')';
ListItem.SubItems.Add(tbltrole.fieldbyname('crolecont').asstring);
Tbltrole.Next;
end;
Items.EndUpdate;
end;
end;
procedure Tdfmteam.Table1AfterPost(DataSet: TDataSet);
begin
showlistview2;
end;
procedure Tdfmteam.FormCreate(Sender: TObject); {画组列表}
begin
// dfmflow.Visible:=false;
table1.Active :=true;
tbltmenu.Active :=true;
tbltrole.Active :=true;
tbltworker.Active:=true;
MenuItemList:=TStringList.Create;
showlistview2;
showlistview1;
vgroup:=tbltrole.fieldbyname('croleid').asstring;
end;
procedure Tdfmteam.tbltroleAfterInsert(DataSet: TDataSet);
begin
FieldList.clear;
end;
procedure Tdfmteam.tbltroleAfterDelete(DataSet: TDataSet);
begin
showlistview1;
end;
procedure Tdfmteam.tbltroleAfterPost(DataSet: TDataSet);
begin
showlistview1;
end;
procedure Tdfmteam.FormClose(Sender: TObject; var Action: TCloseAction);
begin
//@ Added by Edward Lane : for safe
menuItemList.Free;
MenuItemList := Nil;
FieldList.Free;
table1.Active :=false;
tbltmenu.Active :=false;
tbltrole.Active :=false;
tbltworker.Active:=false;
// dfmflow.Visible:=true;
action:=cafree;
end;
procedure Tdfmteam.FormShow(Sender: TObject);
begin
{ TreeView2.Items.BeginUpdate;
ShowMenuItems(nil,mainform.mmMainMenu.Items);
TreeView2.Items.EndUpdate;}
end;
procedure Tdfmteam.Table1AfterInsert(DataSet: TDataSet);
begin
// FieldList.clear;
end;
procedure Tdfmteam.Table1BeforeEdit(DataSet: TDataSet);
begin
// GetFieldList;
end;
procedure Tdfmteam.Table1BeforeDelete(DataSet: TDataSet);
begin
// GetFieldList;
end;
procedure Tdfmteam.BitBtn4Click(Sender: TObject);
begin
tbltrole.cancel;
end;
procedure tdfmteam.showlistview2; {画用户列表}
begin
table1.Close;
table1.Open ;
table1.first;
ListView2.Items.Clear ;
with ListView2 do
begin
//@ added by Edward Lane : for faster view
Items.BeginUpdate;
while not table1.Eof do
begin
ListItem := Items.Add;
ListItem.Caption := table1.fieldbyname('cworkerid').asstring;
ListItem.SubItems.Add(table1.fieldbyname('cuser').asstring);
ListItem.SubItems.Add(table1.fieldbyname('croleid').asstring);
ListItem.SubItems.Add(table1.fieldbyname('croleid').asstring);
table1.Next;
end;
Items.EndUpdate;
end;
end;
procedure Tdfmteam.FormCanResize(Sender: TObject; var NewWidth,
NewHeight: Integer; var Resize: Boolean);
begin
// windowstate:=wsMaximized;
// resize:=false;
end;
procedure Tdfmteam.BitBtn9Click(Sender: TObject);
begin
table1.edit;
end;
procedure Tdfmteam.Table1PostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
if (E is EDBEngineError) then
if (E as EDBEngineError).Errors[0].Errorcode = eKeyViol then
begin
MessageDlg('此用户已存在,请重新输入!', mtWarning, [mbOK], 0);
Abort;
end;
if (E is EDBEngineError) then
if (E as EDBEngineError).Errors[0].Errorcode = eForeignKey then
begin
MessageDlg('此用户不在人员名单中,请重新输入!', mtWarning, [mbOK], 0);
Abort;
end;
end;
procedure Tdfmteam.BitBtn10Click(Sender: TObject);
begin
tbltrole.edit;
end;
procedure Tdfmteam.tbltrolePostError(DataSet: TDataSet; E: EDatabaseError;
var Action: TDataAction);
begin
if (E is EDBEngineError) then
if (E as EDBEngineError).Errors[0].Errorcode = eKeyViol then
begin
MessageDlg('此组编号已存在,请重新输入!', mtWarning, [mbOK], 0);
Abort;
end;
end;
procedure Tdfmteam.tbltroleDeleteError(DataSet: TDataSet;
E: EDatabaseError; var Action: TDataAction);
begin
if (E is EDBEngineError) then
if (E as EDBEngineError).Errors[0].Errorcode = eDetailsExist then
{the customer record has dependent details in the Orders table.}
begin
MessageDlg('只有先删除组中的所有用户,才能删除这个组!',
mtWarning, [mbOK], 0);
Abort;
end;
end;
//通过双击用户列表进入添加、编辑用户界面
procedure Tdfmteam.ListView2DblClick(Sender: TObject);
begin
IF Application.FindComponent('dfmuserinfo')=NIL THEN
dfmuserinfo :=Tdfmuserinfo.Create(Application);
dfmuserinfo.show;
end;
procedure Tdfmteam.ListView1DblClick(Sender: TObject);
begin
IF Application.FindComponent('dfmgroupinfo')=NIL THEN
dfmgroupinfo :=Tdfmgroupinfo.create(application);
dfmgroupinfo.Show;
end;
procedure Tdfmteam.ListView1Click(Sender: TObject);
var
vname:string;
lname:string;
wname:integer;
wsname:integer;
begin
If ( ListView1.Selected <> nil ) Then
begin
vname:=listview1.Selected.Caption;
wname:=Length(vname);
wsname:=pos('(',vname);
lname:=copy(vname,wsname+1,wname-wsname-1);
with tbltrole do
begin
indexfieldnames:='Croleid';
if locate('croleid',lname,[loPartialKey]) then
begin
vgroup:=fieldbyname('croleid').asstring;
end;
end;
end;
end;
procedure Tdfmteam.ListView2Click(Sender: TObject);
var
vname:string;
begin
If ( ListView2.Selected <> nil ) Then
begin
vname:=listview2.Selected.Caption;
with table1 do
begin
indexfieldnames:='Cworkerid';
if locate('cworkerid',vname,[loPartialKey]) then
end;
end;
end;
procedure Tdfmteam.Table1AfterDelete(DataSet: TDataSet);
begin
showlistview2;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -