user.cpp
来自「速达开源ERP系统」· C++ 代码 · 共 461 行
CPP
461 行
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "User.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "RecBaseForm"
#pragma link "SDGrid"
#pragma link "fpanel"
#pragma link "SDEdit"
#pragma link "DateEdit"
#pragma link "SDComboBox"
#pragma link "DateEdit"
#pragma link "SDComboBox"
#pragma resource "*.dfm"
TfrmUser *frmUser;
AnsiString oldusercode;
//---------------------------------------------------------------------------
AnsiString __fastcall TfrmUser::GetFieldValue(int FieldIndex)
{
WideString S;
S = ReadFieldValue(comServer,FieldIndex);
return(S);
}
void __fastcall TfrmUser::ClearControl(bool BringToNext)
{
// BringToNext为真时,不清空
if(BringToNext)
return;
seUserCode->Text = "";
seUserName->Text = "";
seUserDesc->Text = "";
seUserUsergroupCode->Text= "";
seUserPassword->Text = "";
seAffirmPassword->Text = "";
scUserDept->ItemIndex = -1;
cbUserLanguage->ItemIndex= 0;
deUserExpireDate->Text = "";
scUserRestrict->ItemIndex= 0;
cbUserNetFlag->ItemIndex= 0;
seUserNetAddress->Visible=false;
seUserNetAddress->Text = "";
seUserStime->Text = "";
seUserEtime->Text = "";
}
void __fastcall TfrmUser::GetDataFromComObject()
{
AnsiString s;
seUserCode->Text = GetFieldValue(fiUserCode);
seUserName->Text = GetFieldValue(fiUserName);
seUserDesc->Text = GetFieldValue(fiUserDesc);
seUserUsergroupCode->Text = GetFieldValue(fiUserGroup);
s = GetFieldValue(fiUserPassword);
if (s != "")
s=EncAndDec(GetFieldValue(fiUserPassword),false);//Decrypt
seUserPassword->Text = s;
seAffirmPassword->Text = s;
s=GetFieldValue(fiUserDept);
scUserDept->LocateKey(s);
scUserDept->Text = scUserDept->ItemData[0];
cbUserLanguage->ItemIndex= StrToInt(GetFieldValue(fiUserLanguage))-1;
deUserExpireDate->Text = GetFieldValue(fiUserExpireDate);
scUserRestrict->ItemIndex= StrToInt(GetFieldValue(fiUserRestrict))-1;
cbUserNetFlag->ItemIndex = StrToInt(GetFieldValue(fiUserNetFlag));
if (cbUserNetFlag->ItemIndex != 1)
seUserNetAddress->Visible=false;
else
seUserNetAddress->Visible=true;
seUserNetAddress->Text = GetFieldValue(fiUserNetAddress);
seUserStime->Text = GetFieldValue(fiUserStime);
seUserEtime->Text = GetFieldValue(fiUserEtime);
}
void __fastcall TfrmUser::SendDataToComObject()
{
AnsiString s;
if(seUserPassword->Text != seAffirmPassword->Text)
{
throw Exception("用户密码和确认密码不一致");
}
WriteFieldValue(comServer,fiUserCode,WideString(seUserCode->Text));
WriteFieldValue(comServer,fiUserName,WideString(seUserName->Text));
WriteFieldValue(comServer,fiUserDesc,WideString(seUserDesc->Text));
s = seUserUsergroupCode->Text.Trim();
WriteFieldValue(comServer,fiUserGroup,WideString(s));
s = EncAndDec(seUserPassword->Text); //Encrypt
// s = EncAndDec("safecl"); //Encrypt
WriteFieldValue(comServer,fiUserPassword,WideString(s));
WriteFieldValue(comServer,fiUserDept,WideString(scUserDept->ItemData[1]));
WriteFieldValue(comServer,fiUserLanguage,WideString(IntToStr(cbUserLanguage->ItemIndex+1)));
WriteFieldValue(comServer,fiUserExpireDate,WideString(deUserExpireDate->Text));
WriteFieldValue(comServer,fiUserRestrict,WideString(IntToStr(scUserRestrict->ItemIndex+1)));
WriteFieldValue(comServer,fiUserNetFlag,WideString(IntToStr(cbUserNetFlag->ItemIndex)));
WriteFieldValue(comServer,fiUserNetAddress,WideString(seUserNetAddress->Text));
WriteFieldValue(comServer,fiUserStime,WideString(seUserStime->Text));
WriteFieldValue(comServer,fiUserEtime,WideString(seUserEtime->Text));
}
void __fastcall TfrmUser::WaitUserInput()
{
seUserCode->SetFocus();
}
AnsiString __fastcall TfrmUser::GetDataToGrid()
{
AnsiString s;
s = "\t" + GetFieldValue(fiUserCode) +
"\t" + GetFieldValue(fiUserName) +
"\t" + GetFieldValue(fiUserDesc);
return(s);
}
void __fastcall TfrmUser::RefreshGridData(int mAction)
{
AnsiString str;
TTreeNode *tempnode;
str="("+seUserCode->Text+")"+seUserName->Text;
// 新增
if (mAction == 0)
{
//定位新增用户所属组的节点
tempnode=LocateNode(seUserUsergroupCode->Text,2);
if (tempnode != NULL)
AddNodeToTree(tempnode,str,1);
}
// 修改
else
if(mAction == 1)
{
//定位修改的用户节点
tempnode=LocateNode(oldusercode,1);
if (tempnode != NULL)
tempnode->Text=str;
}
// 删除
else
if(mAction == 2)
{
//定位删除的用户节点
tempnode=LocateNode(seUserCode->Text,1);
if (tempnode != NULL)
tempnode->Delete();
}
}
void __fastcall TfrmUser::FillGridWithData()
{
return;
}
//---------------------------------------------------------------------------
inline AnsiString __fastcall TfrmUser::GetCodeFromNode(AnsiString sNodeText)
{
int i;
i=sNodeText.Pos(")");
return sNodeText.SubString(2,i-2);
}
//---------------------------------------------------------------
//Name :ReadUserToTree
//Function :从用户表中读取数据到树
//input : tv 存放用户组的树
//output : 无
//Return : 无
//-----------------------------------------------------
void __fastcall TfrmUser::ReadUserToTree(TTreeView *tv)
{
TComResultSet *pResultSet = NewResultSet();
TTreeNode *UserGroupNode,*tempnode;
AnsiString sUserText;
AnsiString sCode;
bool firstusernode=true;
tv->Items->BeginUpdate();
try
{
pResultSet->Open("SELECT * FROM sdUser order by usergroup","");
pResultSet->MoveFirst();
while (pResultSet->Eof==0)
{
sCode=pResultSet->FieldByName("UserGroup"); //用户表中的用户组代码
UserGroupNode=LocateNode(sCode,2);
if (UserGroupNode != NULL)
{
sUserText= "("
+ pResultSet->FieldByName("UserCode")
+ ")"
+ pResultSet->FieldByName("UserName");
tempnode=tv->Items->AddChild(UserGroupNode,sUserText);//增加属于该组的用户
tempnode->ImageIndex=1;
tempnode->SelectedIndex=1;
if (firstusernode)
{
tv->Selected=tempnode;
tvUserChange(NULL,tempnode);//显示第一个用户节点
firstusernode=false;
}
} //end if
pResultSet->MoveNext();
} //end while
tv->Items->EndUpdate();
}
__finally
{
delete pResultSet;
}
}
//-----------------------------------------------------
//Name :AddNodeToTree
//Function :在用户树中增加一个节点
//input : Node是新增节点的父节点,str是新增节点的内容,nodetype是节点类型
//output : 无
//Return : 无
//-----------------------------------------------------
void __fastcall TfrmUser::AddNodeToTree(TTreeNode *Node,AnsiString str,int notetype)
{
TTreeNode *tempnode;
tempnode=tvUser->Items->AddChild(Node,str);//增加用户
if (notetype == 2)
{ //用户组
tempnode->ImageIndex=0;
tempnode->SelectedIndex=0;
}
else
{ //用户
tempnode->ImageIndex=1;
tempnode->SelectedIndex=1;
}
tvUser->Repaint();
}
//-----------------------------------------------------
//Name :LocateNode
//Function :定位指定类型和代码的节点
//input : code是查找节点的代码,nodetype是节点类型
//output : 无
//Return : 定位的节点指针
//-----------------------------------------------------
TTreeNode * __fastcall TfrmUser::LocateNode(AnsiString code,int nodetype)
{
TTreeNode *tempnode;
for(int i=0;i<tvUser->Items->Count;i++)
{
tempnode=tvUser->Items->Item[i];
if ((nodetype==1)&&(tempnode->ImageIndex==1))
if (GetCodeFromNode(tempnode->Text)==code)
return(tempnode);
if ((nodetype==2)&&(tempnode->ImageIndex==0))
if (GetCodeFromNode(tempnode->Text)==code)
return(tempnode);
}
return(NULL);
}
//-----------------------------------------------------
void __fastcall TfrmUser::FillTreeWithData()
{
AnsiString tmpText;
TTreeNode* TempNode[10];
int mLevel;
TComResultSet *rsUserGroup = NewResultSet();
tvUser->Items->Clear();
TempNode[0]=tvUser->Items->Add(NULL,"全部用户组");
TempNode[0]->ImageIndex=-1;
TempNode[0]->SelectedIndex=-1;
try
{
rsUserGroup->Open("select UsergroupCode,UsergroupName,UsergroupLevel from sdUsergroup where UsergroupCode <> '001' order by UsergroupCode","");
rsUserGroup->MoveFirst();
while( rsUserGroup->Eof == 0 )
{
mLevel = rsUserGroup->FieldByName("UsergroupLevel").ToInt();
if( (mLevel <= 0) || (mLevel > 7) )
{
::MessageBox(Handle,"用户组级别出错","错误",MB_OK|MB_ICONSTOP);
rsUserGroup->MoveNext();
continue;
}
tmpText = "("
+ rsUserGroup->FieldByName("UsergroupCode")
+ ")"
+ rsUserGroup->FieldByName("UsergroupName");
TempNode[mLevel] = tvUser->Items->AddChild(TempNode[mLevel-1],tmpText);
TempNode[mLevel]->ImageIndex=0;
TempNode[mLevel]->SelectedIndex=0;
rsUserGroup->MoveNext();
}
rsUserGroup->Close();
TempNode[0]->Expand(false);
}
__finally
{
delete rsUserGroup;
}
}
void __fastcall TfrmUser::InitEditControl()
{
ClientGroup->AddComponent(2,true,true,false,Panel1,Panel1->Name);
ClientGroup->AddComponent(2,false,false,true,FloatPanel1,FloatPanel1->Name);
ClientGroup->AddComponent(2,true,true,true, seUserUsergroupCode,seUserUsergroupCode->Name);
FillComboBox(scUserDept,"select '('+DeptCode+')'+DeptName memo,DeptCode from sdDept where DeptEnd=1","memo","DeptCode");
}
__fastcall TfrmUser::TfrmUser(TComponent* Owner)
: TRecBaseForm(Owner,euSdUser,"")
{
}
//---------------------------------------------------------------------------
void __fastcall TfrmUser::FormShow(TObject *Sender)
{
ClearControl(false);
FillTreeWithData();
ReadUserToTree(tvUser);
}
//---------------------------------------------------------------------------
void __fastcall TfrmUser::tvUserChange(TObject *Sender, TTreeNode *Node)
{
AnsiString strcode;
if ((Node == NULL)||(Node->ImageIndex != 1)) return;
strcode=GetCodeFromNode(Node->Text);
comServer->LocateByKey(WideString(strcode));
if (!comServer->Eof)
{
GetDataFromComObject();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmUser::muAddDetailClick(TObject *Sender)
{
if(tvUser->Selected == NULL)
return;
if(tvUser->Selected->ImageIndex != 0)
{
::MessageBox(Handle,"请选定要加入的用户组","系统提示", MB_OK|MB_ICONINFORMATION);
return;
}
TRecBaseForm::muAddDetailClick(Sender);
seUserUsergroupCode->Text=GetCodeFromNode(tvUser->Selected->Text);
}
//---------------------------------------------------------------------------
void __fastcall TfrmUser::cbUserNetFlagChange(TObject *Sender)
{
if (cbUserNetFlag->ItemIndex != 1)
seUserNetAddress->Visible=false;
else
seUserNetAddress->Visible=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmUser::muEditDetailClick(TObject *Sender)
{
if(tvUser->Selected == NULL)
return;
if(tvUser->Selected->ImageIndex == 0)
{
::MessageBox(Handle,"不能修改用户组,操作被禁止!","错误", MB_OK|MB_ICONSTOP);
return;
}
TRecBaseForm::muEditDetailClick(Sender);
//保存修改前的用户代码
oldusercode=GetFieldValue(fiUserCode);
}
//---------------------------------------------------------------------------
void __fastcall TfrmUser::muSaveClick(TObject *Sender)
{
TRecBaseForm::muSaveClick(Sender);
Panel1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmUser::muCancelClick(TObject *Sender)
{
TRecBaseForm::muCancelClick(Sender);
Panel1->Enabled=true;
}
//---------------------------------------------------------------------------
void __fastcall TfrmUser::muDeleteDetailClick(TObject *Sender)
{
if(tvUser->Selected == NULL)
return;
if(tvUser->Selected->ImageIndex == 0)
{
::MessageBox(Handle,"不能删除用户组,操作被禁止!","错误", MB_OK|MB_ICONSTOP);
return;
}
TRecBaseForm::muDeleteDetailClick(Sender);
}
//---------------------------------------------------------------------------
void __fastcall TfrmUser::TreeViewLocation()
{
AnsiString s,c;
s = GetFieldValue(fiUserCode);
for(int i = 1 ; i < tvUser->Items->Count ; i ++)
{
c = tvUser->Items->Item[i]->Text; //取关键字
c = c.SubString(2,c.AnsiPos(")")-2);
if(s == c)
{
tvUser->Selected = tvUser->Items->Item[i];
break;
}
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmUser::muFirstClick(TObject *Sender)
{
TRecBaseForm::muFirstClick(Sender);
TreeViewLocation();
}
//---------------------------------------------------------------------------
void __fastcall TfrmUser::muPreviousClick(TObject *Sender)
{
TRecBaseForm::muPreviousClick(Sender);
TreeViewLocation();
}
//---------------------------------------------------------------------------
void __fastcall TfrmUser::muNextClick(TObject *Sender)
{
TRecBaseForm::muNextClick(Sender);
TreeViewLocation();
}
//---------------------------------------------------------------------------
void __fastcall TfrmUser::muLastClick(TObject *Sender)
{
TRecBaseForm::muLastClick(Sender);
TreeViewLocation();
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?