mainform.cpp

来自「一个以前收集的基于C/S架构的ERP客户端源代码」· C++ 代码 · 共 404 行

CPP
404
字号
//---------------------------------------------------------------------------
#include <vcl.h>
#include "MainForm.h"
#include "KSFunction.h"
//---------------------------------------------------------------------------
#pragma hdrstop
#pragma package(smart_init)
#pragma resource "*.dfm"
TfrmMainForm *frmMainForm;
//---------------------------------------------------------------------------
__fastcall TfrmMainForm::TfrmMainForm(TComponent* Owner)
  : TForm(Owner)
{
  try
  {
    FClientComm=new TKSClientMgr(Application->Handle);
    SetSystemStatus(0);
    bHaveMenu=false;
  }
  catch(...)
  {
  }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::MenuItemClick(TObject *Sender)
{
  TMenuItem *p=dynamic_cast<TMenuItem*>(Sender);
  ShowChildForm(p->Tag);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::ShowChildForm(int formid)
{
  try
  {
    switch(formid)
    {
      case 11601://初始化系统
        ShowClientForm(FClientComm->Handle,11601,"");
        break;
      default:
        ShowClientForm(FClientComm->Handle,formid,"");
    }
  }
  __finally
  {
  }
  Image_BakGup->Destroying();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::suLogInClick(TObject *Sender)
{
  FClientComm->LogIn();
  frmMainForm->Refresh();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::SetSystemStatus(int status)
{
  TMenuItem *p1,*p2;
  if(status==0)
  {
    for(int i=0;i<MainMenu->Items->Count;i++)
    {
      p1=MainMenu->Items->Items[i];
      for(int j=0;j<p1->Count;j++)
      {
        p2=p1->Items[j];
        if(p2->Name=="suLogIn" || p2->Name=="suSetup" || p2->Name=="suConn")
          p2->Enabled=true;
        else
          p2->Enabled=false;
      }
    }
  }
  else
  {
    for(int i=0;i<MainMenu->Items->Count;i++)
    {
      p1=MainMenu->Items->Items[i];
      for(int j=0;j<p1->Count;j++)
      {
        p2=p1->Items[j];
        if(p2->Name=="suLogIn" || p2->Name=="suSetup" || p2->Name=="suConn")
          p2->Enabled=false;
        else
          p2->Enabled=true;
      }
    }
  }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::suLogOutClick(TObject *Sender)
{
  FClientComm->LogOut();
  SetSystemStatus(0);
  CloseChildren();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::CloseChildren()
{
  for(int i = MDIChildCount-1; i >= 0; i--)
    MDIChildren[i]->Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::FormClose(TObject *Sender,
      TCloseAction &Action)
{

    FClientComm->LogOut();
    FClientComm->Terminate();
    while(FClientComm->Suspended)
          FClientComm->Resume();
    if(FavorDataSet!=NULL)
     delete FavorDataSet;
    if(InitDataSet!=NULL)
     delete InitDataSet;
    Action = caFree;
 }
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::suExitClick(TObject *Sender)
{
    Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::LogInStatus(TMessage &message)
{
    if(message.WParam==0)
    {
      SetSystemStatus(0);
      if(bHaveMenu)
      {
        delete l_Menu;
        bHaveMenu=false;
      }
    }
    else if(message.WParam==1)
    {
      SetSystemStatus(1);
      if(!bHaveMenu)
         InitMenu();
      StatusBar->Panels->Items[0]->Text=FClientComm->UserInfo->FieldValues["companyname"];
      StatusBar->Panels->Items[1]->Text="财务月份:"+FClientComm->UserInfo->FieldValues["FMonth"];
      StatusBar->Panels->Items[2]->Text="登陆时间:"+FClientComm->UserInfo->FieldValues["CurDateTime"];
      StatusBar->Panels->Items[3]->Text="操作员:"+FClientComm->UserInfo->FieldValues["UserCode"];
    }
    else if(message.WParam==2)
    {
      Close();
    }
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::FormsChanged(TMessage &message)
{
   if(message.WParam==0&&bHaveMenu)
     l_Menu->ManageFormsMenu(FClientComm->ClientForms);
}
//---------------------------------------------------------------------------
bool __fastcall TfrmMainForm::FindForm(AnsiString FormName)
{
    for (int i = 0; i < Screen->CustomFormCount; i++)
    {
      if(FormName==Screen->CustomForms[i]->Name)
        return true;
    }
    return false;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::InitMenu()
{
    bHaveMenu=false;
    AnsiString modulecode,uppercode,modulecaption,formid;
    int level,height;
    int moduletype;

    l_Menu=new TKSMenu(this);
    FClientComm->Module->First();
    while(!FClientComm->Module->Eof)
    {
      modulecode=FClientComm->Module->FieldValues["modulecode"];
      uppercode=FClientComm->Module->FieldValues["moduleupper"];
      modulecaption=FClientComm->Module->FieldValues["modulecaption"];
      height=FClientComm->Module->FieldValues["moduleheight"];
      level=FClientComm->Module->FieldValues["modulelevel"];
      moduletype=FClientComm->Module->FieldValues["moduletype"];
      l_Menu->AddMenu(modulecode,uppercode,modulecaption,formid,level,moduletype,height);
      FClientComm->Module->Next();
    }
    AnsiString NavpicModule;
    AnsiString NavpicCode;
    AnsiString NavpicFormName;
    int NavpicLeft;
    int NavpicTop;
    int NavpicHeight;
    int NavpicWidth;
    try{

    FClientComm->NavPic->First();
    while(!FClientComm->NavPic->Eof)
     {
      NavpicModule=FClientComm->NavPic->FieldValues["modulecode"];
      NavpicCode=FClientComm->NavPic->FieldValues["piccode"];
      NavpicFormName="";
      NavpicTop=FClientComm->NavPic->FieldValues["pictop"];
      NavpicLeft=FClientComm->NavPic->FieldValues["picleft"];
      NavpicHeight=FClientComm->NavPic->FieldValues["picheight"];
      NavpicWidth=FClientComm->NavPic->FieldValues["picwidth"];
      l_Menu->AddNavpic(NavpicModule,NavpicCode,NavpicFormName,NavpicTop,NavpicLeft,NavpicHeight,NavpicWidth);
      FClientComm->NavPic->Next();
    }
    }
    catch(...)
    {
      throw Exception(AnsiString(FClientComm->Module->RecNo));
    }

    AnsiString NavArrowModule;
    AnsiString NavArrowCode;
    int        NavArrowStyle;
    int        NavArrowDir;
    int        NavArrow3D;
    int        NavArrowX1;
    int        NavArrowY1;
    int        NavArrowX2;
    int        NavArrowY2;
    AnsiString NavArrowColor;
    FClientComm->LogicLine->First();
    while(!FClientComm->LogicLine->Eof)
    {
      NavArrowModule=FClientComm->LogicLine->FieldValues["modulecode"];
      NavArrowCode=FClientComm->LogicLine->FieldValues["arrowcode"];
      NavArrowStyle=FClientComm->LogicLine->FieldValues["arrowstyle"];
      NavArrowDir=FClientComm->LogicLine->FieldValues["arrowdir"];
      NavArrow3D=FClientComm->LogicLine->FieldValues["arrow3d"];
      NavArrowX1=FClientComm->LogicLine->FieldValues["arrowx1"];
      NavArrowY1=FClientComm->LogicLine->FieldValues["arrowy1"];
      NavArrowX2=FClientComm->LogicLine->FieldValues["arrowx2"];
      NavArrowY2=FClientComm->LogicLine->FieldValues["arrowy2"];
      NavArrowColor=FClientComm->LogicLine->FieldValues["arrowcolor"];
      l_Menu->AddNavArrow(NavArrowModule,NavArrowCode,NavArrowStyle,NavArrowDir,
                 NavArrow3D,NavArrowX1,NavArrowY1,NavArrowX2,NavArrowY2,NavArrowColor);
      FClientComm->LogicLine->Next();
    }
    bHaveMenu=true;
    l_Menu->ShowPageMenu();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::suBookClick(TObject *Sender)
{
    AnsiString FileName;
    FileName=ExtractFilePath(Application->ExeName)+"\\ksERPhelp.chm";
    ShellExecute(Handle,"open",FileName.c_str(),NULL,ExtractFileDir(Application->ExeName).c_str(),SW_SHOWMAXIMIZED);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::FormKeyDown(TObject *Sender, WORD &Key,
      TShiftState Shift)
{
    AnsiString FileName;
    if(Key==VK_F1)
    {
      FileName=ExtractFilePath(Application->ExeName)+"\\ksERPhelp.chm";
      ShellExecute(Handle,"open",FileName.c_str(),NULL,ExtractFileDir(Application->ExeName).c_str(),SW_SHOWMAXIMIZED);
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMainForm::Image_TitleDblClick(TObject *Sender)
{
    frmMainForm->Top 	= Screen->DesktopTop;
    frmMainForm->Left	= Screen->DesktopLeft;
    frmMainForm->Width 	= Screen->DesktopWidth;
    frmMainForm->Height 	= Screen->DesktopHeight-30;

    ImgClose->Left = frmMainForm->Width - ImgClose->Width - 5 ;
    ImgMin->Left = ImgClose->Left - ImgClose->Width - 3;

     WinMovFlg=0;
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::Image_TitleMouseDown(TObject *Sender,
      TMouseButton Button, TShiftState Shift, int X, int Y)
{
     opoint.x=X;
     opoint.y=Y;	
}
//---------------------------------------------------------------------------

void __fastcall TfrmMainForm::Image_TitleMouseMove(TObject *Sender,
	  TShiftState Shift, int X, int Y)
{
    if (WinMovFlg==0){
            WinMovFlg=1;
       return;
    }
    cpoint.x=X;
    cpoint.y=Y;
    if (Shift.Contains(ssLeft) ){
    frmMainForm->ClientToScreen(cpoint);
            MoveWindow(frmMainForm->Handle,
                    frmMainForm->Left+cpoint.x-opoint.x,
                    frmMainForm->Top+cpoint.y-opoint.y,
                    frmMainForm->Width,frmMainForm->Height,true);
     }
     try{
	if (ImgMMovFlg){
		ImgMin->Picture->LoadFromFile(".\\Pic\\btnMinNu.bmp");
		ImgMMovFlg = !ImgMMovFlg;
	}
	if (ImgCMovFlg){
		ImgClose->Picture->LoadFromFile(".\\Pic\\btnCloseNu.bmp");
		ImgCMovFlg = !ImgCMovFlg;
	}
    }
    catch(...){}  // 异常勿略

}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::ImgMinClick(TObject *Sender)
{
   PostMessage(frmMainForm->Handle,WM_SYSCOMMAND, SC_MINIMIZE,0);
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::ImgCloseClick(TObject *Sender)
{
   Close();
}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::FormResize(TObject *Sender)
{
    frmMainForm->Top 	= Screen->DesktopTop;
    frmMainForm->Left	= Screen->DesktopLeft;
    frmMainForm->Width 	= Screen->DesktopWidth;
    frmMainForm->Height 	= Screen->DesktopHeight-30;
    ImgClose->Left = frmMainForm->Width - ImgClose->Width - 5 ;
    ImgMin->Left = ImgClose->Left - ImgClose->Width - 3;

}
//---------------------------------------------------------------------------

void __fastcall TfrmMainForm::ImgMinMouseMove(TObject *Sender,
	  TShiftState Shift, int X, int Y)
{
    if (!ImgMMovFlg){
    try{
      ImgMin->Picture->LoadFromFile(".\\Pic\\btnMinMov.bmp");
    }
    catch(...){}  // 异常勿略

      ImgMMovFlg = !ImgMMovFlg;
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMainForm::ImgMinMouseDown(TObject *Sender,
	  TMouseButton Button, TShiftState Shift, int X, int Y)
{
    try{
            ImgMin->Picture->LoadFromFile(".\\Pic\\btnMinDown.bmp");
    }
    catch(...){}  // 异常勿略

}
//---------------------------------------------------------------------------

void __fastcall TfrmMainForm::ImgCloseMouseMove(TObject *Sender,
	  TShiftState Shift, int X, int Y)
{
    if (!ImgCMovFlg){
    try{
            ImgClose->Picture->LoadFromFile(".\\Pic\\btnCloseMov.bmp");
    }
    catch(...){}  // 异常勿略

            ImgCMovFlg = !ImgCMovFlg;
    }
}
//---------------------------------------------------------------------------

void __fastcall TfrmMainForm::ImgCloseMouseDown(TObject *Sender,
	  TMouseButton Button, TShiftState Shift, int X, int Y)
{
    try{
            ImgClose->Picture->LoadFromFile(".\\Pic\\btnCloseDown.bmp");
    }
    catch(...){}  // 异常勿略
}
//---------------------------------------------------------------------------

void __fastcall TfrmMainForm::FormCreate(TObject *Sender)
{
    try{
      Image_BakGup->Picture->LoadFromFile(".\\Pic\\bakGup.jpg");
      Image_Title->Picture->LoadFromFile(".\\Pic\\Title.jpg");
    }
    catch(...){}  // 异常勿略

}
//---------------------------------------------------------------------------
void __fastcall TfrmMainForm::suSetupClick(TObject *Sender)
{
   ShellExecute(NULL, "open", "ClientCfg.exe" , NULL,NULL , SW_SHOW);
}
//---------------------------------------------------------------------------


⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?