ksmenu.cpp

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

CPP
1,372
字号
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "KSMenu.h"
#include "MainForm.h"
#pragma link "ImagePanel"
//---------------------------------------------------------------------------

#pragma package(smart_init)
__fastcall TKSSubMenu::TKSSubMenu(TPanel *AOwner)
{
  l_AOwner=AOwner;
  l_DataSet=new TKSSet;
  l_DataSet->AddField("modulecode");
  l_DataSet->AddField("modulecaption");
  l_DataSet->AddField("imagepanel");
  l_DataSet->AddField("menuitem");
  l_DataSet->KeyField="modulecode";
}
//---------------------------------------------------------------------------
__fastcall TKSSubMenu::~TKSSubMenu()
{
  delete l_DataSet;
 }
//---------------------------------------------------------------------------

void __fastcall TKSSubMenu::AddMenu(AnsiString modulecode,AnsiString uppercode,
    AnsiString modulecaption,AnsiString formid,int level,int moduletype)
{
  TKSSubMenuItems *MenuItems;
  if(level==2)
  {
    MenuItems=new TKSSubMenuItems();
    if(moduletype!=1)
	  MenuItems->AddMenuItems(modulecode,uppercode,modulecaption,formid);
    l_DataSet->AddNew();
    l_DataSet->FieldValues["modulecode"]=modulecode;
    l_DataSet->FieldValues["modulecaption"]=modulecaption;
    l_DataSet->FieldValues["imagepanel"]="";
    l_DataSet->FieldValues["menuitem"]=AnsiString((int)MenuItems);
    l_DataSet->Update();
  }
  else if(level==3)
  {
    l_DataSet->LocateField("modulecode",uppercode);
    MenuItems=(TKSSubMenuItems*)l_DataSet->FieldValues["menuitem"].ToInt();
    MenuItems->AddMenuItems(modulecode,uppercode,modulecaption,formid);
  }
}
//---------------------------------------------------------------------------
void __fastcall TKSSubMenu::HidePageMenu()
{
  TImagePanel *p1;
  TKSSubMenuItems *menuitem;
  l_DataSet->First();
  while(!l_DataSet->Eof)
  {
    p1=(TImagePanel*)l_DataSet->FieldValues["imagePanel"].ToInt();
    menuitem=(TKSSubMenuItems*)l_DataSet->FieldValues["menuitem"].ToInt();
	menuitem->HideMenuItems();
    delete p1;
    l_DataSet->Edit();
    l_DataSet->FieldValues["imagePanel"]="";
    l_DataSet->Update();
    l_DataSet->Next();
  }
}
//---------------------------------------------------------------------------
void __fastcall TKSSubMenu::ShowPageMenu()
{
  int i;
  int ileft=30;
  TImagePanel *p1;
  TKSSubMenuItems *menuItem;
  l_DataSet->First();
  i=0;
  while(!l_DataSet->Eof)
  {
      p1=new TImagePanel(l_AOwner);
      p1->Parent=l_AOwner;
      p1->Top=0;
      p1->Cursor=crHandPoint;
      p1->Tag=l_DataSet->FieldValues["modulecode"].ToInt();
      menuItem=(TKSSubMenuItems*)l_DataSet->FieldValues["menuitem"].ToInt();
      menuItem->OwnerPanel=p1;
      menuItem->ShowMenuItems();
      Graphics::TBitmap *FBmp1=new Graphics::TBitmap();
      Graphics::TBitmap *FBmp2=new Graphics::TBitmap();
      FBmp1->LoadFromResourceName((int)HInstance,AnsiString(p1->Tag)+AnsiString("-1"));
      p1->Picture->Assign(FBmp1);
      FBmp2->LoadFromResourceName((int)HInstance,AnsiString(p1->Tag)+AnsiString("-2"));
      p1->PictureSelected->Assign(FBmp2);
      delete FBmp1;
      delete FBmp2;
      l_DataSet->Edit();
      l_DataSet->FieldValues["imagepanel"]=AnsiString((int)p1);
      l_DataSet->Update();
      p1->OnClick=ImagePanelClick;
      p1->OnPopupClick=MenuItemClick;
      p1->Left=ileft+i*75;
      p1->Visible=true;
      l_DataSet->Next();
      i++;
  }
}
//---------------------------------------------------------------------------
void __fastcall TKSSubMenu::ShowForm(AnsiString formid)
{
  frmMainForm->ShowChildForm(formid.ToInt());
}
//---------------------------------------------------------------------------
void __fastcall TKSSubMenu::ImagePanelClick(TObject *Sender)
{
  TImagePanel *mp;
  mp=dynamic_cast<TImagePanel *>(Sender);
  try{
    if(mp->Items->Count==0)
     ShowForm(mp->Tag);
   }
   catch(...)
  {
  }
}
//---------------------------------------------------------------------------
int __fastcall TKSSubMenu::GetPicCount()
{
     return  l_DataSet->RecordCount;
}
//---------------------------------------------------------------------------
void __fastcall TKSSubMenu::MenuItemClick(TObject *Sender, int Index)
{
 TImagePanel *p=dynamic_cast<TImagePanel *>(Sender);
 try{
 if(Index>0)
 {
 TObject *modulecode=p->Items->Objects[Index];
 ShowForm((int)modulecode);
 }
 }
 catch(...)
 {
 }
}
//---------------------------------------------------------------------------
//TKSNavPic
//---------------------------------------------------------------------------
__fastcall TKSNavPic::TKSNavPic(TPanel *AOwner)
{
  l_AOwner=AOwner;
  l_DataSet=new TKSSet;
  l_DataSet->AddField("navpicmodule");
  l_DataSet->AddField("navpiccode");
  l_DataSet->AddField("navpicform");
  l_DataSet->AddField("imagepanel");
  l_DataSet->AddField("left");
  l_DataSet->AddField("Top");
  l_DataSet->AddField("width");
  l_DataSet->AddField("Height");
  l_DataSet->KeyField="navpicmodule";
}
//---------------------------------------------------------------------------
__fastcall TKSNavPic::~TKSNavPic()
{
  //HidePagePic();
  delete l_DataSet;
}
//---------------------------------------------------------------------------

void __fastcall TKSNavPic::AddPic(AnsiString Navpicmodule,AnsiString Navpiccode,
      AnsiString NavpicForm,int top,int left,int height,int width)
{
    l_DataSet->AddNew();
    l_DataSet->FieldValues["navpicmodule"]=Navpicmodule;
    l_DataSet->FieldValues["navpiccode"]=Navpiccode;
    l_DataSet->FieldValues["navpicform"]=NavpicForm;
	l_DataSet->FieldValues["imagepanel"]="";
    l_DataSet->FieldValues["left"]=left;
    l_DataSet->FieldValues["top"]=top;
    l_DataSet->FieldValues["width"]=width;
    l_DataSet->FieldValues["height"]=height;
    l_DataSet->Update();

  }
//---------------------------------------------------------------------------
void __fastcall TKSNavPic::HidePagePic()
{
  TImage *p1;
  l_DataSet->First();
  while(!l_DataSet->Eof)
  {
    p1=(TImage*)l_DataSet->FieldValues["imagePanel"].ToInt();
    l_DataSet->Edit();
    l_DataSet->FieldValues["imagePanel"]="";
    l_DataSet->Update();
    delete p1;
    l_DataSet->Next();
  }
}
//---------------------------------------------------------------------------
void __fastcall TKSNavPic::ShowPagePic()
{
  TImage *p;
  l_DataSet->First();
  while(!l_DataSet->Eof)
  {
    TImage *p;
	p=new TImage(l_AOwner);
    p->Parent=l_AOwner;
    p->Top=l_DataSet->FieldValues["top"].ToInt();
	p->Left=l_DataSet->FieldValues["left"].ToInt();
    p->Height=l_DataSet->FieldValues["height"].ToInt();
    p->Width=l_DataSet->FieldValues["width"].ToInt();
    p->Transparent=true;
    p->OnClick=ImagePanelClick;
	p->Cursor=crHandPoint;
    p->Tag=l_DataSet->FieldValues["navpiccode"].ToInt();
	p->Visible=true;
    Graphics::TBitmap *FBmp2=new Graphics::TBitmap();
  try{
	FBmp2->LoadFromResourceName((int)HInstance,AnsiString(p->Tag)+"02");
    }
  catch ( ... ){  ;
    FBmp2->LoadFromResourceName((int)HInstance,"999");
	 }
    p->Picture->Assign(FBmp2);
   delete FBmp2;
    l_DataSet->Edit();
    l_DataSet->FieldValues["imagePanel"]=AnsiString((int)p);
    l_DataSet->Update();
    l_DataSet->Next();
  }
}
//---------------------------------------------------------------------------
void __fastcall TKSNavPic::ShowForm(AnsiString formid)
{
  frmMainForm->ShowChildForm(formid.ToInt());
}
//---------------------------------------------------------------------------
void __fastcall TKSNavPic::ImagePanelClick(TObject *Sender)
{
   TImage *mp;
   mp=dynamic_cast<TImage *>(Sender);
   ShowForm(mp->Tag);
}
//---------------------------------------------------------------------------
__fastcall TKSNavArrow::TKSNavArrow(TImage *AOwner)
{
  l_AOwner=AOwner;
  l_DataSet=new TKSSet;
  l_DataSet->AddField("NavArrowModule");
  l_DataSet->AddField("NavArrowCode");
  l_DataSet->AddField("NavArrowStyle");
  l_DataSet->AddField("NavArrowDir");
  l_DataSet->AddField("NavArrow3D");
  l_DataSet->AddField("NavArrowX1");
  l_DataSet->AddField("NavArrowY1");
  l_DataSet->AddField("NavArrowX2");
  l_DataSet->AddField("NavArrowY2");
  l_DataSet->AddField("NavArrowColor");
  l_DataSet->KeyField="NavArrowModule";
}
//---------------------------------------------------------------------------
__fastcall TKSNavArrow::~TKSNavArrow()
{
  delete l_DataSet;
 }
//---------------------------------------------------------------------------

void __fastcall TKSNavArrow::AddArrow(AnsiString NavArrowModule,AnsiString NavArrowCode,int NavArrowStyle,  int NavArrowDir, int NavArrow3D,  int NavArrowX1, int NavArrowY1, int NavArrowX2,  int NavArrowY2,AnsiString NavArrowColor)
  {
  l_DataSet->AddNew();
  l_DataSet->FieldValues["NavArrowModule"]=NavArrowModule;
  l_DataSet->FieldValues["NavArrowCode"]=NavArrowCode;
  l_DataSet->FieldValues["NavArrowStyle"]=NavArrowStyle;
  l_DataSet->FieldValues["NavArrowDir"]=NavArrowDir;
  l_DataSet->FieldValues["NavArrow3D"]=NavArrow3D;
  l_DataSet->FieldValues["NavArrowX1"]=NavArrowX1;
  l_DataSet->FieldValues["NavArrowY1"]=NavArrowY1;
  l_DataSet->FieldValues["NavArrowX2"]=NavArrowX2;
  l_DataSet->FieldValues["NavArrowY2"]=NavArrowY2;
  l_DataSet->FieldValues["NavArrowColor"]=NavArrowColor;
  l_DataSet->Update();
}
//---------------------------------------------------------------------------
void __fastcall TKSNavArrow::HidePageArrow()
{
  l_AOwner->Canvas->Brush->Color=clWhite;
  l_AOwner->Canvas->FillRect(TRect(0,0,l_AOwner->Width,l_AOwner->Height));
}
//---------------------------------------------------------------------------
void __fastcall TKSNavArrow::ShowPageArrow()
{
  AnsiString l_NavArrowModule;
  AnsiString l_NavArrowCode;
  int        l_NavArrowStyle;
  int        l_NavArrowDir;
  int        l_NavArrow3D;
  int        l_NavArrowX1;
  int        l_NavArrowY1;
  int        l_NavArrowX2;
  int        l_NavArrowY2;
  AnsiString l_NavArrowColor;
  Windows::TPoint points[3];
  TColor colors[4];
  colors[0]=(TColor)RGB(128,112,128);
  colors[1]=(TColor)RGB(143,103,80);
  colors[2]=(TColor)RGB(175,159,128);
  colors[3]=(TColor)RGB(224,207,176);

  l_AOwner->Canvas->Brush->Color=clWhite;
  l_AOwner->Canvas->FillRect(TRect(0,0,l_AOwner->Width,l_AOwner->Height));

  l_DataSet->First();
  while(!l_DataSet->Eof)
  {
    l_NavArrowModule=l_DataSet->FieldValues["NavArrowModule"];
    l_NavArrowCode=l_DataSet->FieldValues["NavArrowCode"];
    l_NavArrowStyle=l_DataSet->FieldValues["NavArrowStyle"].ToInt();
    l_NavArrowDir=l_DataSet->FieldValues["NavArrowDir"].ToInt();
    l_NavArrow3D=l_DataSet->FieldValues["NavArrow3D"].ToInt();
    l_NavArrowX1=l_DataSet->FieldValues["NavArrowX1"].ToInt();
    l_NavArrowY1=l_DataSet->FieldValues["NavArrowY1"].ToInt();
    l_NavArrowX2=l_DataSet->FieldValues["NavArrowX2"].ToInt();
    l_NavArrowY2=l_DataSet->FieldValues["NavArrowY2"].ToInt();
    l_NavArrowColor=l_DataSet->FieldValues["NavArrowColor"];
    l_AOwner->Canvas->Brush->Color=(TColor)(l_NavArrowColor.ToInt());
    l_AOwner->Canvas->Pen->Color=(TColor)(l_NavArrowColor.ToInt());
    l_AOwner->Canvas->Pen->Style= psSolid;
    l_AOwner->Canvas->Pen->Mode=pmCopy	;
    switch(l_NavArrowDir)
    {
      case 0:
        if(l_NavArrow3D==1)
        {
	  if(l_NavArrowStyle==1)
          {
            l_AOwner->Canvas->FillRect(TRect(l_NavArrowX1-l_AOwner->Left,l_NavArrowY1-l_AOwner->Top,l_NavArrowX2-l_AOwner->Left,l_NavArrowY2-l_AOwner->Top-3));
            l_AOwner->Canvas->Pen->Color=colors[0];
            l_AOwner->Canvas->MoveTo(l_NavArrowX1-l_AOwner->Left,l_NavArrowY2-l_AOwner->Top-3);
            l_AOwner->Canvas->LineTo(l_NavArrowX2-l_AOwner->Left,l_NavArrowY2-l_AOwner->Top-3);
            l_AOwner->Canvas->Pen->Color=colors[1];

⌨️ 快捷键说明

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