📄 mainform.cpp
字号:
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "MainForm.h"
#include "commfunction.h"
#include "sdenumtype.h"
#include "Func.h"
#include "Login.h"
#include "FormMgr.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma link "ImagePanel"
#pragma resource "*.dfm"
TfrmMainForm *frmMainForm;
TModuleForm *g_sdModuleForm;
//---------------------------------------------------------------------------
__fastcall TfrmMainForm::TfrmMainForm(TComponent* Owner)
: TForm(Owner)
{
//HWND h=Application->Handle;
AnsiString AgentIP,AgentPort;
TModalResult MR;
g_IComServer=NULL;
g_IComResultSet=NULL;
g_ClientComm=NULL;
g_sdRsGoods=NULL;
g_sdRsGlkm=NULL;
m_NavBit=NULL;
m_sdTask=NULL;
m_sdMenu=NULL;
g_sdSysPath=ExtractFileDir(Application->ExeName);
AgentIP=GetInifileValue("AgentServer","ServerIP",g_sdSysPath+"\\SdBod.dat");
AgentPort=GetInifileValue("AgentServer","ServerPort",g_sdSysPath+"\\SdBod.dat");
g_sdCompanyCode=GetInifileValue("Login","CompanyCode",g_sdSysPath+"\\SdBod.dat");
g_ClientComm=new TClientComm(Application,AgentIP,AgentPort.ToInt());
TfrmLogin *p=new TfrmLogin(this);
MR=p->ShowModal();
delete p;
if(MR!=mrOk)
{
Application->Terminate();
return;
}
m_sdTask=new TsdTask(g_ClientComm);
m_sdTask->Panel=pnlTaskbar;
FInitOK=false;
m_NavBit=new Graphics::TBitmap;
TJPEGImage *m_Jpeg=new TJPEGImage;
m_Jpeg->LoadFromFile(g_sdSysPath+"\\pic\\Title.jpg");
ImgTitle->Canvas->Draw(0,0,m_Jpeg);
m_Jpeg->LoadFromFile(g_sdSysPath+"\\pic\\Navigate.jpg");
m_NavBit->Assign(m_Jpeg);
delete m_Jpeg;
InitMenu();
g_sdModuleForm=new TModuleForm();
g_sdModuleForm->InitModuleForm(g_IComServer,g_IComResultSet,g_sdRsGoods,g_sdRsGlkm);
stbMain->Panels->Items[0]->Text="财务月份:"+g_sdFMonth;
stbMain->Panels->Items[1]->Text="在线用户:"+AnsiString(g_ClientComm->OnlineUsers);
stbMain->Panels->Items[2]->Text="操作员:"+g_sdUserCode;
stbMain->Panels->Items[3]->Text="登录:"+g_sdLoginTime;
stbMain->Panels->Items[4]->Text="日期:"+g_sdCurDate;
stbMain->Panels->Items[5]->Text=GetInifileValue("Link","DevName",ExtractFileDir(Application->ExeName)+"\\SdBod.dat");
NavImg->Top=ImgTitle->Top+ImgTitle->Height;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::suExitClick(TObject *Sender)
{
Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::pnlMenuResize(TObject *Sender)
{
if(FInitOK && m_sdMenu->MenuCount>0)
m_sdMenu->ShowPageMenu();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::smToolBarClick(TObject *Sender)
{
if(smToolBar->Checked==true)
{
smToolBar->Checked=false;
}
else
{
smToolBar->Checked=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::smStatusBarClick(TObject *Sender)
{
if(smStatusBar->Checked==true)
{
smStatusBar->Checked=false;
stbMain->Visible=false;
}
else
{
smStatusBar->Checked=true;
stbMain->Visible=true;
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::Label1MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
AnsiString LinkAddr;
LinkAddr=GetInifileValue("Link","HomePage",ExtractFileDir(Application->ExeName)+"\\sdbod.dat"),
ShellExecute(Handle,"open",LinkAddr.c_str(),0,0,SW_SHOW);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::Label2MouseDown(TObject *Sender,
TMouseButton Button, TShiftState Shift, int X, int Y)
{
m_sdMenu->ShowForm("1170101");
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::FormResize(TObject *Sender)
{
pnlTaskbar->Top=stbMain->Top-pnlTaskbar->Height;
pnlTaskbar->Width=this->Width-pnlMenu->Width;
pnlSubMenu->Top=stbMain->Top-pnlTaskbar->Height-pnlSubMenu->Height;
pnlSubMenu->Width=this->Width-pnlMenu->Width;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::suAboutClick(TObject *Sender)
{
AnsiString ProductSn="SD-ERP-10-001";
ShellAbout(Handle, AnsiString("关于<SD-ERP企业管理软件>#").c_str(),
AnsiString("产品号:"+ProductSn.SubString(1,6)+ProductSn.SubString(10,4)+ProductSn.SubString(7,3)+"\n速达软件技术有限公司(K) 版权所有!").c_str(),
Application->Icon->Handle);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::suTopicClick(TObject *Sender)
{
AnsiString FileName;
FileName=ExtractFilePath(Application->ExeName)+"\sdmrphelp.chm";
ShellExecute(Handle,"open",FileName.c_str(),NULL,ExtractFileDir(Application->ExeName).c_str(),SW_SHOW);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
AnsiString FileName;
if(Key==VK_F1)
{
FileName=ExtractFilePath(Application->ExeName)+"\sdmrphelp.chm";
ShellExecute(Handle,"open",FileName.c_str(),NULL,ExtractFileDir(Application->ExeName).c_str(),SW_SHOW);
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::InitMenu()
{
AnsiString SqlStr;
pnlSubMenu->Top=446;
pnlSubMenu->Height=62;
pnlTaskbar->Top=507;
pnlTaskbar->Height=29;
TComResultSet *m_RsNavpic;
TComServer *m_sdRight;
try
{
try
{
StartWaitForm("初始化系统,准备启动SD-ERP");
g_IComResultSet=new TIComResultSet(g_ClientComm);
g_sdRsGoods=NewResultSet();
g_sdRsGoods->Open("select * from sdgoods order by goodscode","GoodsCode");
g_sdRsGlkm=NewResultSet();
g_sdRsGlkm->Open("select * from sdglkm order by glkmtype,glkmcode","GlkmCode");
m_RsNavpic=NewResultSet();
m_sdRight=NewDcomAppSvr(euSdModule);
m_sdRight->FilterString="$"+g_sdUserCode;
m_sdRight->OrderString="ModuleCode,ModuleLevel";
m_sdRight->Query();
m_sdMenu=new TsdMenu(m_sdTask,this->pnlMenu,this->pnlSubMenu,this,this->NavImg,m_NavBit);
m_sdRight->MoveFirst();
while(m_sdRight->Eof==0)
{
if(m_sdRight->FieldValue[fiModuleLevel].ToInt()==1)
{
m_sdMenu->MenuCode=m_sdRight->FieldValue[fiModuleCode];
m_sdMenu->MenuCaption=m_sdRight->FieldValue[fiModuleCaption];
m_sdMenu->MenuDesc=m_sdRight->FieldValue[fiModuleDesc];
m_sdMenu->MenuNo=m_sdRight->FieldValue[fiModuleNo].ToInt();
m_sdMenu->MenuPicName=m_sdRight->FieldValue[fiModulePicName];
m_sdMenu->MenuSelPicName=m_sdRight->FieldValue[fiModuleSelPicName];
m_sdMenu->MenuMovePic=m_sdRight->FieldValue[fiModuleMovePic];
m_sdMenu->MenuNavpic=m_sdRight->FieldValue[fiModuleNavpic];
m_sdMenu->AddMenu();
SqlStr="Select * from sdNavpic where NavpicModule='"+m_sdMenu->MenuCode+"'";
m_RsNavpic->Close();
m_RsNavpic->Open(SqlStr,"");
if(m_RsNavpic->RecordCount>0)
{
m_RsNavpic->MoveFirst();
while(m_RsNavpic->Eof==0)
{
m_sdMenu->Navpic->NavpicModule=m_sdMenu->MenuCode;
m_sdMenu->Navpic->NavpicCode=m_RsNavpic->FieldByName("NavpicCode");
m_sdMenu->Navpic->NavpicCaption=m_RsNavpic->FieldByName("NavpicCaption");
m_sdMenu->Navpic->NavpicFormName=m_RsNavpic->FieldByName("NavpicFormName");
m_sdMenu->Navpic->NavpicPath=m_RsNavpic->FieldByName("NavpicPath");
m_sdMenu->Navpic->NavpicLeft=m_RsNavpic->FieldByName("NavpicLeft").ToInt();
m_sdMenu->Navpic->NavpicTop=m_RsNavpic->FieldByName("NavpicTop").ToInt();
m_sdMenu->Navpic->NavpicHeight=m_RsNavpic->FieldByName("NavpicHeight").ToInt();
m_sdMenu->Navpic->NavpicWidth=m_RsNavpic->FieldByName("NavpicWidth").ToInt();
m_sdMenu->Navpic->NavpicLib=m_RsNavpic->FieldByName("NavpicLib").ToInt();
m_sdMenu->Navpic->AddNavpic();
m_RsNavpic->MoveNext();
}
SqlStr="Select * from sdNavArrow where NavArrowModule='"+m_sdMenu->MenuCode+"' order by convert(int,NavArrowCode)";
m_RsNavpic->Close();
m_RsNavpic->Open(WideString(SqlStr),WideString(""));
m_RsNavpic->MoveFirst();
while(m_RsNavpic->Eof==0)
{
m_sdMenu->NavArrow->NavArrowModule=m_sdMenu->MenuCode;
m_sdMenu->NavArrow->NavArrowCode=m_RsNavpic->FieldByName("NavArrowCode");
m_sdMenu->NavArrow->NavArrowStyle=m_RsNavpic->FieldByName("NavArrowStyle").ToInt();
m_sdMenu->NavArrow->NavArrowDir=m_RsNavpic->FieldByName("NavArrowDir").ToInt();
m_sdMenu->NavArrow->NavArrow3D=m_RsNavpic->FieldByName("NavArrow3D").ToInt();
m_sdMenu->NavArrow->NavArrowX1=m_RsNavpic->FieldByName("NavArrowX1").ToInt();
m_sdMenu->NavArrow->NavArrowY1=m_RsNavpic->FieldByName("NavArrowY1").ToInt();
m_sdMenu->NavArrow->NavArrowX2=m_RsNavpic->FieldByName("NavArrowX2").ToInt();
m_sdMenu->NavArrow->NavArrowY2=m_RsNavpic->FieldByName("NavArrowY2").ToInt();
m_sdMenu->NavArrow->NavArrowAngle=m_RsNavpic->FieldByName("NavArrowAngle").ToInt();
m_sdMenu->NavArrow->NavArrowColor=m_RsNavpic->FieldByName("NavArrowColor");
m_sdMenu->NavArrow->AddNavArrow();
m_RsNavpic->MoveNext();
}
}
}
if(m_sdRight->FieldValue[fiModuleLevel].ToInt()==2)
{
m_sdMenu->SubMenu->SubMenuCode=m_sdRight->FieldValue[fiModuleCode];
m_sdMenu->SubMenu->SubMenuUpperCode=m_sdRight->FieldValue[fiModuleUpperCode];
m_sdMenu->SubMenu->SubMenuCaption=m_sdRight->FieldValue[fiModuleCaption];
m_sdMenu->SubMenu->SubMenuDesc=m_sdRight->FieldValue[fiModuleDesc];
m_sdMenu->SubMenu->SubMenuNo=m_sdRight->FieldValue[fiModuleNo].ToInt();
m_sdMenu->SubMenu->SubMenuPicName=m_sdRight->FieldValue[fiModulePicName];
m_sdMenu->SubMenu->SubMenuSelPicName=m_sdRight->FieldValue[fiModuleSelPicName];
m_sdMenu->SubMenu->AddSubMenu();
}
if(m_sdRight->FieldValue[fiModuleLevel].ToInt()==3)
{
m_sdMenu->SubMenu->MenuItemCode=m_sdRight->FieldValue[fiModuleCode];
m_sdMenu->SubMenu->MenuItemUpperCode=m_sdRight->FieldValue[fiModuleUpperCode];
m_sdMenu->SubMenu->MenuItemDesc=m_sdRight->FieldValue[fiModuleDesc];
m_sdMenu->SubMenu->MenuItemCaption=m_sdRight->FieldValue[fiModuleCaption];
m_sdMenu->SubMenu->MenuItemNo=m_sdRight->FieldValue[fiModuleNo].ToInt();
m_sdMenu->SubMenu->MenuItemRightLevel=m_sdRight->FieldValue[fiModuleRight].ToInt();
m_sdMenu->SubMenu->MenuItemFormName=m_sdRight->FieldValue[fiModuleFormName];
m_sdMenu->SubMenu->MenuItemLib=m_sdRight->FieldValue[fiModuleLib].ToInt();
m_sdMenu->SubMenu->AddMenuItem();
}
Application->ProcessMessages();
m_sdRight->MoveNext();
}
if(m_sdMenu->MenuCount>0)
m_sdMenu->ShowNextPageMenu();
FInitOK=true;
delete m_sdRight;
delete m_RsNavpic;
}
catch(Exception &e)
{
delete m_sdRight;
delete m_RsNavpic;
Application->MessageBox(e.Message.c_str(),"错误",MB_ICONERROR);
PostMessage(Application->Handle,WM_QUIT,0,0);
}
}
__finally
{
EndWaitForm();
}
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::LoginMessage(TMessage Message)
{
stbMain->Panels->Items[1]->Text="在线用户:"+AnsiString(Message.LParam);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::DelFormMessage(TMessage Message)
{
if(m_sdTask!=NULL)
m_sdTask->DeleteForm(AnsiString(Message.LParam));
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::ShowFormMessage(TMessage Message)
{
m_sdMenu->ShowForm(AnsiString(Message.LParam));
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::RefreshResultSet(TMessage Message)
{
if(Message.WParam==euSdGoods)
{
try
{
StartWaitForm("正在刷新物料数据集,请稍候...");
g_sdRsGoods->Close();
g_sdRsGoods->Open(WideString("select * from sdgoods order by goodscode"),WideString("GoodsCode"));
}
__finally
{
EndWaitForm();
}
}
else if(Message.WParam==euSdGlkm)
{
try
{
StartWaitForm("正在刷新科目数据集,请稍候...");
g_sdRsGlkm->Close();
g_sdRsGlkm->Open(WideString("select * from sdglkm order by glkmtype,glkmcode"),WideString("GlkmCode"));
}
__finally
{
EndWaitForm();
}
}
}
void __fastcall TfrmMainForm::FormDestroy(TObject *Sender)
{
if(g_sdRsGoods!=NULL)
delete g_sdRsGoods;
if(g_sdRsGlkm!=NULL)
delete g_sdRsGlkm;
if(g_IComServer!=NULL)
delete g_IComServer;
if(g_IComResultSet!=NULL)
delete g_IComResultSet;
if(m_NavBit!=NULL)
delete m_NavBit;
if(g_sdModuleForm!=NULL)
delete g_sdModuleForm;
if(m_sdMenu!=NULL)
delete m_sdMenu;
ExitProcess(0);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::FormCloseQuery(TObject *Sender,
bool &CanClose)
{
if(m_sdTask!=NULL)
{
delete m_sdTask;
m_sdTask=NULL;
}
CanClose=true;
}
//---------------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -