⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdmenu.cpp

📁 邮 电 公 司 erp源码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
   }
   p->Assign(this);
   m_Child->Add((void *)p,p->SubMenuCode);
}


void TsdSubMenu::AddMenuItem()
{
  m_MenuItem->AddMenuItem();
}


bool TsdSubMenu::LocateItemByIndex(int Index)
{
  return m_MenuItem->LocateByIndex(Index);
}

bool TsdSubMenu::LocateItemByKey(AnsiString Key)
{
  return m_MenuItem->LocateByKey(Key);
}

void __fastcall TsdSubMenu::SubMenuClick(TObject *Sender)
{
  TImagePanel *p=dynamic_cast<TImagePanel *>(Sender);
  LocateByIndex(p->Tag);
}

void __fastcall TsdSubMenu::SubMenuItemClick(TObject *Sender, int Index)
{
  TImagePanel *p=dynamic_cast<TImagePanel *>(Sender);
  LocateByIndex(p->Tag);
  if(Index>0)
  {
    m_MenuItem->LocateByIndex(Index-1);
    if(m_MenuItem->RightLevel==0)
       throw Exception("您没有授权使用本功能!");
    m_Task->Show(m_MenuItem->ItemFormName,m_MenuItem->ItemCode,m_MenuItem->ItemCaption,m_MenuItem->ItemLib,m_MenuItem->RightLevel);
  }
}

void __fastcall TsdSubMenu::SubMenuMoveLeftClick(TObject * Sender)
{
  ShowPriorPageMenu();
}

void __fastcall TsdSubMenu::SubMenuMoveRightClick(TObject * Sender)
{
  ShowNextPageMenu();
}

void __fastcall TsdSubMenu::SetMenuItemCode(AnsiString value)
{
  m_MenuItem->ItemCode =value;
}

AnsiString __fastcall TsdSubMenu::GetMenuItemCode()
{
   return m_MenuItem->ItemCode;
}

void __fastcall TsdSubMenu::SetMenuItemLib(int value)
{
  m_MenuItem->ItemLib =value;
}

int __fastcall TsdSubMenu::GetMenuItemLib()
{
   return m_MenuItem->ItemLib;
}

void __fastcall TsdSubMenu::SetMenuItemUpperCode(AnsiString value)
{
  m_MenuItem->ItemUpperCode =value;
}

AnsiString __fastcall TsdSubMenu::GetMenuItemUpperCode()
{
  return m_MenuItem->ItemUpperCode;
}


void __fastcall TsdSubMenu::SetMenuItemCaption(AnsiString value)
{
  m_MenuItem->ItemCaption=value;
}

AnsiString __fastcall TsdSubMenu::GetMenuItemCaption()
{
  return m_MenuItem->ItemCaption;
}


void __fastcall TsdSubMenu::SetMenuItemDesc(AnsiString value)
{
  m_MenuItem->ItemDesc=value;
}

AnsiString __fastcall TsdSubMenu::GetMenuItemDesc()
{
  return m_MenuItem->ItemDesc;
}


void __fastcall TsdSubMenu::SetMenuItemNo(int value)
{
  m_MenuItem->ItemNo=value;
}

int __fastcall TsdSubMenu::GetMenuItemNo()
{
  return m_MenuItem->ItemNo;
}


void __fastcall TsdSubMenu::SetMenuItemRightLevel(int value)
{
  m_MenuItem->RightLevel =value;
}

int __fastcall TsdSubMenu::GetMenuItemRightLevel()
{
  return m_MenuItem->RightLevel;
}

int __fastcall TsdSubMenu::GetSubMenuCount()
{
  return m_Child->Count();
}

AnsiString __fastcall TsdSubMenu::GetMenuItemFormName()
{
  return m_MenuItem->ItemFormName;
}

void __fastcall TsdSubMenu::SetMenuItemFormName(AnsiString value)
{
  m_MenuItem->ItemFormName=value;
}

int __fastcall TsdSubMenu::GetMenuItemNeedCheck()
{
  return m_MenuItem->ItemNeedCheck;
}

void __fastcall TsdSubMenu::SetMenuItemNeedCheck(int value)
{
  m_MenuItem->ItemNeedCheck=value;
}

//====================================
//(TsdMenu)主菜单维护
//====================================

TsdMenu::TsdMenu(TsdTask *pm,TPanel *pl,TPanel *SubPl,TForm *FNavpic,TImage *FNavImg,Graphics::TBitmap *FBitmap)
{
   m_Task=pm;
   m_MenuPanel=pl;
   m_SubMenuPanel=SubPl;
   m_NavpicForm=FNavpic;
   m_NavImg=FNavImg;   
   m_Parent=new TsdCollection;
   m_Bitmap=FBitmap;
   m_sbUp=NULL;
   m_sbDown=NULL;
   m_FirstIndex=-1;
   m_Selected=0;
   m_Height=35;
   m_Width=90;
   m_Left=1;
   m_VStep=0;
   m_Space=22;
}


TsdMenu::~TsdMenu()
{
  delete m_Parent;
  delete SubMenu;
  delete Navpic;
  delete NavArrow;
}


void TsdMenu::ShowPageMenu()
{
  int YW_Selected;
  m_pVisNum=(m_MenuPanel->Height+1)/m_Height;
  if(m_pVisNum<m_Parent->Count())
    m_pVisNum=(m_MenuPanel->Height+1-m_Space)/m_Height;
  if(m_FirstIndex==-1)
    m_FirstIndex=0;
  YW_Selected=m_Parent->Index;
  for(int i=0;i<m_Parent->Count();i++)
  {
    LocateByIndex(i);
    if(i<m_FirstIndex||i>=m_FirstIndex+m_pVisNum)
    {
      if(m_Image!=NULL)
      {
        delete m_Image;
        m_Image=NULL;
        TsdMenu *p=new TsdMenu(m_Task,m_MenuPanel,m_SubMenuPanel,m_NavpicForm,m_NavImg,m_Bitmap);
        p->Assign(this);
        m_Parent->Change((void *)p,p->MenuCode,p->MenuCode);
      }
      m_BlackLine->Visible=false;
      m_SilverLine->Visible=false;
    }
    else
    {
      Graphics::TBitmap *FBmp=new Graphics::TBitmap();
      if(m_Image==NULL)
      {
        m_Image=new TImage(m_MenuPanel);
        m_Image->Parent=m_MenuPanel;
        m_Image->Cursor=crHandPoint;
        m_Image->Height=33;
        m_Image->Width=90;
        m_Image->Left=1;
        m_Image->Tag=i;
        m_Image->Hint=m_MenuDesc;
        m_Image->ShowHint=false;
        m_Image->BringToFront();
        m_Image->OnClick=MenuClick;
        TsdMenu *p=new TsdMenu(m_Task,m_MenuPanel,m_SubMenuPanel,m_NavpicForm,m_NavImg,m_Bitmap);
        p->Assign(this);
        m_Parent->Change((void *)p,p->MenuCode,p->MenuCode);
      }
      FBmp->LoadFromResourceID((int)HInstance,StrToInt(m_MenuCode+"01"));
      m_Image->Canvas->Draw(0,0,FBmp);
      m_Image->Visible=true;
      m_Image->Top =(i-m_FirstIndex)*m_Height;

      m_BlackLine->Top=m_Image->Top+m_Image->Height;
      m_BlackLine->Visible=true;
      m_SilverLine->Top=m_Image->Top+m_Image->Height+1;
      m_SilverLine->Visible=true;
      delete FBmp;
    }
  }
  if(YW_Selected!=m_Selected)
  {
    LocateByIndex(m_Selected);
    SubMenu->HideSubMenu();
    Navpic->HideNavigator();
    m_Selected=YW_Selected;
    LocateByIndex(m_Selected);
    SubMenu->ShowSubMenu();
    if(Navpic->Count==0)
      m_NavImg->Canvas->Draw(0,0,m_Bitmap);
    else
    {
      NavArrow->ShowNavArrow();
      Navpic->ShowNavigator();
    }
  }
  else
    LocateByIndex(m_Selected);
  Graphics::TBitmap *FBmp1=new Graphics::TBitmap();
  FBmp1->LoadFromResourceID((int)HInstance,StrToInt(m_MenuCode+"03"));
  m_Image->Canvas->Draw(0,0,FBmp1);
  delete FBmp1;
  if(m_FirstIndex>0)
  {
    m_sbUp->Visible =true;
    m_sbUp->Top=m_MenuPanel->Height-22;
  }
  else
    m_sbUp->Visible =false;
  if(m_FirstIndex+m_pVisNum<m_Parent->Count())
  {
    m_sbDown->Top =m_MenuPanel->Height-22;
    m_sbDown->Visible =true;
  }
  else
    m_sbDown->Visible =false;
}


void TsdMenu::ShowNextPageMenu()
{
  int YW_FirstIndex;
  YW_FirstIndex=m_FirstIndex;
  m_pVisNum=(m_MenuPanel->Height+1)/m_Height;
  if(m_pVisNum<m_Parent->Count())
    m_pVisNum=(m_MenuPanel->Height+1-m_Space)/m_Height;
  if(m_FirstIndex+m_pVisNum<m_Parent->Count()||m_FirstIndex==-1)
    m_FirstIndex++;
  for(int i=0;i<m_Parent->Count();i++)
  {
    LocateByIndex(i);
    if(i<m_FirstIndex||i>=m_FirstIndex+m_pVisNum)
    {
      if(m_Image!=NULL)
      {
        delete m_Image;
        m_Image=NULL;
        TsdMenu *p=new TsdMenu(m_Task,m_MenuPanel,m_SubMenuPanel,m_NavpicForm,m_NavImg,m_Bitmap);
        p->Assign(this);
        m_Parent->Change((void *)p,p->MenuCode,p->MenuCode);
      }
      m_BlackLine->Visible=false;
      m_SilverLine->Visible=false;
    }
    else
    {
      Graphics::TBitmap *FBmp=new Graphics::TBitmap();
      if(m_Image==NULL)
      {
        m_Image=new TImage(m_MenuPanel);
        m_Image->Parent=m_MenuPanel;
        m_Image->Cursor=crHandPoint;
        m_Image->Height=33;
        m_Image->Width=90;
        m_Image->Left=1;
        m_Image->Tag=i;
        m_Image->Hint=m_MenuDesc;
        m_Image->ShowHint=false;
        m_Image->BringToFront();
        m_Image->OnClick=MenuClick;
        TsdMenu *p=new TsdMenu(m_Task,m_MenuPanel,m_SubMenuPanel,m_NavpicForm,m_NavImg,m_Bitmap);
        p->Assign(this);
        m_Parent->Change((void *)p,p->MenuCode,p->MenuCode);
      }
      FBmp->LoadFromResourceID((int)HInstance,StrToInt(m_MenuCode+"01"));
      m_Image->Canvas->Draw(0,0,FBmp);
      delete FBmp;
      m_Image->Visible=true;
      m_Image->Top =(i-m_FirstIndex)*m_Height;

      m_BlackLine->Top=m_Image->Top+m_Image->Height;
      m_BlackLine->Visible=true;
      m_SilverLine->Top=m_Image->Top+m_Image->Height+1;
      m_SilverLine->Visible=true;
    }
  }
  if(m_Selected<m_FirstIndex)
  {
    LocateByIndex(m_Selected);
    SubMenu->HideSubMenu();
    Navpic->HideNavigator();
    m_Selected=m_FirstIndex;
    LocateByIndex(m_Selected);
    SubMenu->ShowSubMenu();
    if(Navpic->Count==0)
      m_NavImg->Canvas->Draw(0,0,m_Bitmap);
    else
    {
      NavArrow->ShowNavArrow();
      Navpic->ShowNavigator();
    }
  }
  else if(YW_FirstIndex==-1 && m_FirstIndex==0)
  {
    m_Selected=m_FirstIndex;
    LocateByIndex(m_Selected);
    SubMenu->ShowSubMenu();
    if(Navpic->Count==0)
      m_NavImg->Canvas->Draw(0,0,m_Bitmap);
    else
    {
      NavArrow->ShowNavArrow();
      Navpic->ShowNavigator();
    }
  }
  else
    LocateByIndex(m_Selected);
  Graphics::TBitmap *FBmp1=new Graphics::TBitmap();
  FBmp1->LoadFromResourceID((int)HInstance,StrToInt(m_MenuCode+"03"));
  m_Image->Canvas->Draw(0,0,FBmp1);
  delete FBmp1;
  if(m_FirstIndex>0)
  {
    m_sbUp->Visible =true;
    m_sbUp->Top=m_MenuPanel->Height-22;
  }
  else
    m_sbUp->Visible =false;
  if(m_FirstIndex+m_pVisNum<m_Parent->Count())
  {
    m_sbDown->Top =m_MenuPanel->Height-22;
    m_sbDown->Visible =true;
  }
  else
    m_sbDown->Visible =false;
}


void TsdMenu::ShowPriorPageMenu()
{
  m_pVisNum=(m_MenuPanel->Height+1)/m_Height;
  if(m_pVisNum<m_Parent->Count())
    m_pVisNum=(m_MenuPanel->Height+1-m_Space)/m_Height;
  if(m_FirstIndex>0)
    m_FirstIndex--;
  for(int i=0;i<m_Parent->Count();i++)
  {
    LocateByIndex(i);
    if(i<m_FirstIndex||i>=m_FirstIndex+m_pVisNum)
    {
      if(m_Image!=NULL)
      {
        delete m_Image;
        m_Image=NULL;
        TsdMenu *p=new TsdMenu(m_Task,m_MenuPanel,m_SubMenuPanel,m_NavpicForm,m_NavImg,m_Bitmap);
        p->Assign(this);
        m_Parent->Change((void *)p,p->MenuCode,p->MenuCode);        

⌨️ 快捷键说明

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