Componentes.Terceros.DevExp.../official/x.36/ExpressQuantumGrid 6/Demos/CBuilder/IssueList/IssueListFrames.cpp
2008-06-02 17:37:37 +00:00

134 lines
3.5 KiB
C++

//---------------------------------------------------------------------------
#include "IssueListFrames.h"
TFrameManager* FInstance;
TFrameManager* FrameManager()
{
if (!FInstance)
FInstance = new TFrameManager();
return FInstance;
}
//---------------------------------------------------------------------------
TFrameInfo::TFrameInfo(int ID, String ACaption)
{
FID = ID;
FCaption = ACaption;
FFrame = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TFrameInfo::CreateFrame(TfrmBasic* AFrame)
{
FFrame = AFrame;
Frame->Caption = FCaption;
}
//---------------------------------------------------------------------------
void __fastcall TFrameInfo::DestroyFrame()
{
delete FFrame;
FFrame = NULL;
}
//---------------------------------------------------------------------------
void __fastcall TFrameInfo::HideFrame()
{
Frame->Visible = false;
}
//---------------------------------------------------------------------------
void __fastcall TFrameInfo::ShowFrame(TWinControl* AParent)
{
Frame->Parent = AParent;
Frame->Visible = true;
}
//---------------------------------------------------------------------------
TFrameManager::TFrameManager()
{
FFrameInfoList = new TList();
FActiveFrameInfo = NULL;
}
//---------------------------------------------------------------------------
TFrameManager::~TFrameManager()
{
for (int i = 0; i < FrameInfoList->Count; i++)
delete (TFrameInfo*)FrameInfoList->Items[i];
delete FFrameInfoList;
}
//---------------------------------------------------------------------------
TFrameInfo* __fastcall TFrameManager::GetFrameInfoByID(int AFrameID)
{
for (int i= 0; i< FrameInfoList->Count; i++)
if (Items[i]->ID == AFrameID)
return Items[i];
return 0;
}
//---------------------------------------------------------------------------
int TFrameManager::GetCount()
{
if (FrameInfoList)
return FrameInfoList->Count;
return 0;
}
//---------------------------------------------------------------------------
TFrameInfo* __fastcall TFrameManager::GetItem(int Index)
{
return (TFrameInfo*)FrameInfoList->Items[Index];
}
//---------------------------------------------------------------------------
void __fastcall TFrameManager::RegisterFrame(int AFrameID, String ACaption)
{
TFrameInfo* AInfo = new TFrameInfo(AFrameID, ACaption);
FrameInfoList->Add(AInfo);
}
//---------------------------------------------------------------------------
void __fastcall TFrameManager::ShowFrame(int AFrameID, TWinControl* AParent)
{
if (ActiveFrameInfo)
if (ActiveFrameInfo->ID == AFrameID)
return;
else {
ActiveFrameInfo->HideFrame();
FActiveFrameInfo = NULL;
}
TFrameInfo* AFrameInfo = GetFrameInfoByID(AFrameID);
if (AFrameInfo) {
AFrameInfo->ShowFrame(AParent);
FActiveFrameInfo = AFrameInfo;
}
}
//---------------------------------------------------------------------------
bool __fastcall TFrameManager::CanCreate(int AFrameID)
{
for(int i = 0; i < FrameInfoList->Count; i++)
if (Items[i]->ID == AFrameID)
return Items[i]->Frame == NULL;
return false;
}
//---------------------------------------------------------------------------
void __fastcall TFrameManager::CreateFrame(int AFrameID, TfrmBasic* AFrame)
{
GetFrameInfoByID(AFrameID)->CreateFrame(AFrame);
}
//---------------------------------------------------------------------------