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 + -
显示快捷键?