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

📄 sdmenu.cpp

📁 邮 电 公 司 erp源码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
      }
      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+m_pVisNum)
  {
    LocateByIndex(m_Selected);
    SubMenu->HideSubMenu();
    Navpic->HideNavigator();
    m_Selected=m_FirstIndex+m_pVisNum-1;
    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;
}

bool TsdMenu::LocateByIndex(int Index)
{
  try
  {
    TsdMenu *p=(TsdMenu *)m_Parent->Item(Index);
    Assign(p);
    return true;
  }
  catch(Exception &e)
  {
    return false;
  }
}


bool TsdMenu::LocateByKey(AnsiString Key)
{
  try
  {
    TsdMenu *p=(TsdMenu *)m_Parent->Value(Key);
    Assign(p);
    return true;
  }
  catch(Exception &e)
  {
    return false;
  }
}

void TsdMenu::ShowForm(AnsiString Key)
{
  int OldIndex;
  OldIndex=m_Parent->Index;
  if(LocateByKey(Key.SubString(1,3)))
  {
    if(SubMenu->LocateByKey(Key.SubString(1,5)))
    {
      if(SubMenu->LocateItemByKey(Key))
      {
        if(SubMenu->MenuItem->RightLevel==0)
          throw Exception("您没有授权使用本功能!");
        m_Task->Show(SubMenu->MenuItem->ItemFormName,SubMenu->MenuItem->ItemCode,SubMenu->MenuItem->ItemCaption,SubMenu->MenuItem->ItemLib,SubMenu->MenuItem->RightLevel);
      }
    }
  }
  LocateByIndex(OldIndex);
}

void TsdMenu::Assign(TsdMenu * p)
{
  this->SubMenu=p->SubMenu;
  this->Navpic=p->Navpic;
  this->NavArrow=p->NavArrow;
  this->m_Image=p->m_Image;
  this->m_MenuCode=p->m_MenuCode;
  this->m_MenuCaption=p->m_MenuCaption;
  this->m_MenuDesc=p->m_MenuDesc;
  this->m_MenuNo=p->m_MenuNo;
  this->m_RightLevel=p->m_RightLevel;
  this->m_MenuPicName=p->m_MenuPicName;
  this->m_MenuSelPicName=p->m_MenuSelPicName;
  this->m_MenuMovePic=p->m_MenuMovePic;
  this->m_BlackLine=p->m_BlackLine;
  this->m_SilverLine=p->m_SilverLine;
}


void TsdMenu::AddMenu()
{
    SubMenu=new TsdSubMenu(m_SubMenuPanel,m_Task);
    Navpic=new TsdNavpic(m_NavpicForm,m_Task);
    NavArrow=new TsdNavArrow(m_NavImg);
    m_Image=NULL;
    m_BlackLine=new TShape(m_MenuPanel);
    m_BlackLine->Parent=m_MenuPanel;
    m_BlackLine->Shape=stRectangle;
    m_BlackLine->Pen->Color=clBlack;
    m_BlackLine->Height=1;
    m_BlackLine->Width=94;
    m_BlackLine->Left=-1;
    m_BlackLine->BringToFront();
    m_BlackLine->Visible=false;
    m_SilverLine=new TShape(m_MenuPanel);
    m_SilverLine->Parent=m_MenuPanel;
    m_SilverLine->Shape=stRectangle;
    m_SilverLine->Pen->Color=clSilver;
    m_SilverLine->Height=1;
    m_SilverLine->Width=94;
    m_SilverLine->Left=-1;
    m_SilverLine->BringToFront();
    m_SilverLine->Visible=false;
    TsdMenu *p=new TsdMenu(m_Task,m_MenuPanel,m_SubMenuPanel,m_NavpicForm,m_NavImg,m_Bitmap);
    if(m_sbUp==NULL)
    {
      m_sbUp=new TSpeedButton(m_MenuPanel);
      m_sbUp->Parent=m_MenuPanel;
      m_sbUp->Flat=true;
      m_sbUp->Glyph->LoadFromResourceName((int)HInstance,"MenuUp");
      m_sbUp->Left=14;
      m_sbUp->Top =m_MenuPanel->Height-2-m_sbUp->Height;
      m_sbUp->Height=20;
      m_sbUp->Width=33;
      m_sbUp->Visible =false;
      m_sbUp->OnClick=MenuMoveUpClick;
    }
    if(m_sbDown==NULL)
    {
      m_sbDown=new TSpeedButton(m_MenuPanel);
      m_sbDown->Parent=m_MenuPanel;
      m_sbDown->Flat=true;
      m_sbDown->Glyph->LoadFromResourceName((int)HInstance,"MenuDown");
      m_sbDown->Left=47;
      m_sbDown->Height=20;
      m_sbDown->Width=33;
      m_sbDown->Top =m_MenuPanel->Height-2-m_sbDown->Height;
      m_sbDown->Visible =false;
      m_sbDown->OnClick=MenuMoveDownClick;
    }
    SubMenu->sdParent=this;
    Navpic->sdParent=this;
    NavArrow->sdParent=this;
    p->Assign(this);
    m_Parent->Add((void *)p,p->MenuCode);
}


void __fastcall TsdMenu::MenuClick(TObject * Sender)
{
    TImage *p=dynamic_cast<TImage *>(Sender);
    if(p->Tag==m_Selected)
      return;
    LocateByIndex(p->Tag);
    ShowPageMenu();
}


void __fastcall TsdMenu::MenuMoveUpClick(TObject * Sender)
{
  ShowPriorPageMenu();
}


void __fastcall TsdMenu::MenuMoveDownClick(TObject * Sender)
{
  ShowNextPageMenu();
}

int __fastcall TsdMenu::GetMenuCount()
{
  return m_Parent->Count();
}

/*
void __fastcall TsdMenu::MenuPanelResize(TObject *Sender)
{
    if(m_FirstIndex!=-1)
        m_OccurPos=1;
    else
        m_OccurPos=0;
   ShowNextPageMenu();
}
*/


//--------------------------------------------------------------------
TsdNavpic::TsdNavpic(TForm *FForm,TsdTask *FTask)
{
  m_sdNavpics=new TsdCollection;
  m_Task=FTask;
  m_ParentForm=FForm;
}

//--------------------------------------------------------------------

TsdNavpic::~TsdNavpic()
{
  delete m_sdNavpics;
}

//--------------------------------------------------------------------
void TsdNavpic::ShowNavigator()
{
  AnsiString DispBmp,MoveBmp;
  for(int i=0;i<m_sdNavpics->Count();i++)
  {
    LocateByIndex(i);
    if(m_ImagePanel==NULL)
    {
      m_ImagePanel=new TImagePanel(m_ParentForm);
      m_ImagePanel->Parent=m_ParentForm;
      m_ImagePanel->Cursor=crHandPoint;
      m_ImagePanel->Top=m_NavpicTop;
      m_ImagePanel->Left=m_NavpicLeft;
      m_ImagePanel->Height=m_NavpicHeight;
      m_ImagePanel->Width=m_NavpicWidth;
      m_ImagePanel->OnClick=NavpicClick;
      m_ImagePanel->Tag=i;
      m_ImagePanel->Top=m_NavpicTop;
      m_ImagePanel->Left=m_NavpicLeft;
      DispBmp=m_NavpicCode+"01";
      MoveBmp=m_NavpicCode+"02";
      Graphics::TBitmap *FBmp1=new Graphics::TBitmap();
      Graphics::TBitmap *FBmp2=new Graphics::TBitmap();
      TImage *FImg=new TImage(m_ParentForm);
      FBmp1->LoadFromResourceName((int)HInstance,DispBmp);
      FImg->Height=m_NavpicHeight;
      FImg->Width=m_NavpicWidth;
      FImg->Canvas->Draw(0,0,(TGraphic *)FBmp1);
      m_ImagePanel->Picture->Assign(FImg->Picture);
      FBmp2->LoadFromResourceName((int)HInstance,MoveBmp);
      FImg->Canvas->Draw(0,0,(TGraphic *)FBmp2);
      m_ImagePanel->PictureSelected->Assign(FImg->Picture);
      delete FBmp1;
      delete FBmp2;
      delete FImg;
      TsdNavpic *p=new TsdNavpic(m_ParentForm,m_Task);
      p->Assign(this);
      m_sdNavpics->Change((void *)p,p->NavpicCode,p->NavpicCode);
    }
    m_ImagePanel->Visible=true;
  }
}
//--------------------------------------------------------------------
void TsdNavpic::HideNavigator()
{
  for(int i=0;i<m_sdNavpics->Count();i++)
  {
    LocateByIndex(i);
    if(m_ImagePanel!=NULL)
    {
      delete m_ImagePanel;
      m_ImagePanel=NULL;
    }
    TsdNavpic *p=new TsdNavpic(m_ParentForm,m_Task);
    p->Assign(this);
    m_sdNavpics->Change((void *)p,p->NavpicCode,p->NavpicCode);
  }
}
//--------------------------------------------------------------------
void TsdNavpic::Assign(TsdNavpic *p)
{
  this->m_ImagePanel=p->m_ImagePanel;
  this->m_NavpicModule=p->m_NavpicModule;
  this->m_NavpicCode=p->m_NavpicCode;
  this->m_NavpicLib=p->m_NavpicLib;
  this->m_NavpicCaption=p->m_NavpicCaption;
  this->m_NavpicFormName=p->m_NavpicFormName;
  this->m_NavpicPath=p->m_NavpicPath;
  this->m_NavpicLeft=p->m_NavpicLeft;
  this->m_NavpicTop=p->m_NavpicTop;
  this->m_NavpicHeight=p->m_NavpicHeight;
  this->m_NavpicWidth=p->m_NavpicWidth;
}

//--------------------------------------------------------------------
void TsdNavpic::LocateByIndex(int Index)
{
  TsdNavpic *p=(TsdNavpic *)m_sdNavpics->Item(Index);
  Assign(p);
}
//--------------------------------------------------------------------
void TsdNavpic::LocateByKey(AnsiString Key)
{
  TsdNavpic *p=(TsdNavpic *)m_sdNavpics->Value(Key);
  Assign(p);
}
//--------------------------------------------------------------------
void TsdNavpic::AddNavpic()
{
  m_ImagePanel=NULL;
  TsdNavpic *p=new TsdNavpic(m_ParentForm,m_Task);
  p->Assign(this);
  m_sdNavpics->Add((void *)p,p->NavpicCode);
}
//--------------------------------------------------------------------
void __fastcall TsdNavpic::NavpicClick(TObject *Sender)
{
  TImagePanel *p=dynamic_cast<TImagePanel *>(Sender);
  LocateByIndex(p->Tag);
  if(m_NavpicRight==0)
    throw Exception("您没有授权使用本功能!");
  m_Task->Show(m_NavpicFormName,m_NavpicCode,m_NavpicCaption,m_NavpicLib,m_NavpicRight);
}
//--------------------------------------------------------------------
int TsdNavpic::GetNavpicCount()
{
  return m_sdNavpics->Count();
}


//**************************************************
//  Navigator Arrows class implement
//  Kallen
//*************************************************

//--------------------------------------------------------------------
void TsdNavArrow::Assign(TsdNavArrow * p)
{
  this->m_NavArrowModule=p->m_NavArrowModule;
  this->m_NavArrowCode=p->m_NavArrowCode;
  this->m_NavArrowStyle=p->m_NavArrowStyle;
  this->m_NavArrowDir=p->m_NavArrowDir;
  this->m_NavArrow3D=p->m_NavArrow3D;
  this->m_NavArrowX1=p->m_NavArrowX1;
  this->m_NavArrowY1=p->m_NavArrowY1;
  this->m_NavArrowX2=p->m_NavArrowX2;
  this->m_NavArrowY2=p->m_NavArrowY2;
  this->m_NavArrowAngle=p->m_NavArrowAngle;
  this->m_NavArrowColor=p->m_NavArrowColor;
}

//--------------------------------------------------------------------
int TsdNavArrow::GetNavArrowCount()
{
  return m_sdNavArrows->Count();
}
//--------------------------------------------------------------------
TsdNavArrow::TsdNavArrow(TImage *FImage)
{
  m_sdNavArrows=new TsdCollection;
  m_Image=FImage;
}
//--------------------------------------------------------------------
TsdNavArrow::~TsdNavArrow()
{
  delete m_sdNavArrows;
}
//--------------------------------------------------------------------
void TsdNavArrow::ShowNavArrow()
{
  Windows::TPoint points[3];
  TColor colors[4];
  colors[0]=(TColor)RGB(128,112,128);
  colors[1]=(TColor)RGB(143,103,80);

⌨️ 快捷键说明

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