123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409 |
- //---------------------------------------------------------------------------
- #include <vcl.h>
- #include "ITSSkinF.h"
- #include "ITSUtilF.h"
- #include "ITSDbF.h"
- #include "FrmResourceF.h"
- #include "ITSLangTransF.h"
- #pragma hdrstop
- //---------------------------------------------------------------------------
- #include "CDSItsCrossInfoF.h"
- //---------------------------------------------------------------------------
- #include "FRAME_ItsCrossF.h"
- //---------------------------------------------------------------------------
- #pragma package(smart_init)
- #pragma link "cxButtons"
- #pragma link "cxCalc"
- #pragma link "cxContainer"
- #pragma link "cxControls"
- #pragma link "cxCustomData"
- #pragma link "cxEdit"
- #pragma link "cxGraphics"
- #pragma link "cxInplaceContainer"
- #pragma link "cxLabel"
- #pragma link "cxLookAndFeelPainters"
- #pragma link "cxLookAndFeels"
- #pragma link "cxStyles"
- #pragma link "cxTextEdit"
- #pragma link "cxTL"
- #pragma link "cxTLdxBarBuiltInMenu"
- #pragma link "dxSkinBlack"
- #pragma link "dxSkinBlue"
- #pragma link "dxSkinsCore"
- #pragma link "dxSkinMcSkin"
- #pragma resource "*.dfm"
- //TFRAMEItsCross *FRAMEItsCross;
- //---------------------------------------------------------------------------
- __fastcall TFRAMEItsCross::TFRAMEItsCross(TComponent* Owner)
- : TFrame(Owner)
- {
- LangTrans->Translate(this, ITSDb_GetConnection());
- FCompleted = false;
- tlItsCross->Clear();
- }
- //---------------------------------------------------------------------------
- void __fastcall TFRAMEItsCross::InitItsCross()
- {
- FCompleted = false;
- try
- {
- tlItsCross->BeginUpdate();
- tlItsCross->Clear();
- TcxTreeListNode *pRoot = tlItsCross->Root;
- FOR_STL(TRCrossRoad*, pObjSido, RCrossManager->FLists)
- {
- if (pObjSido->FCrosss.Size() == 0) continue;
- if (!pObjSido->FShow) continue;
- TcxTreeListNode *pCenter = pRoot->AddChild();
- pCenter->CheckGroupType = ncgCheckGroup;
- pCenter->Values[colItsCross->ItemIndex] = pObjSido->ROAD_NAME;
- pCenter->Values[colMem->ItemIndex] = 0;
- FOR_STL(TRCross*, pObjCross, pObjSido->FCrosss)
- {
- if (!pObjCross->FShow) continue;
- TcxTreeListNode *pCross = pCenter->AddChild();
- pCross->CheckGroupType = ncgCheckGroup;
- pCross->Values[colItsCross->ItemIndex] = pObjCross->CROSS_NAME;
- pCross->Values[colMem->ItemIndex] = 0;//(int)pObjCross;
- FOR_STL(TRCrossDir*, pObjLink, pObjCross->FLinks)
- {
- if (!pObjLink->FShow) continue;
- TcxTreeListNode *pLink = pCross->AddChild();
- pLink->CheckGroupType = ncgCheckGroup;
- pLink->Values[colItsCross->ItemIndex] = pObjLink->DIR_NAME;
- pLink->Values[colMem->ItemIndex] = (int)pObjLink;
- }
- }
- }
- }
- __finally
- {
- tlItsCross->EndUpdate();
- FCompleted = true;
- }
- //ShowMessage("Node count = " + IntToStr(tlItsCross->AbsoluteCount));
- //tlItsCross->FullExpand;
- }
- //---------------------------------------------------------------------------
- class TcxTreeListAccess : public TcxTreeList
- {
- };
- //---------------------------------------------------------------------------
- void __fastcall TFRAMEItsCross::InitFilter(bool AShow)
- {
- #if 0
- FOR_STL(TRSido*, pObjSido, RLinkManager->FLists)
- {
- pObjSido->FShow = AShow;
- FOR_STL(TRCross*, pObjCross, pObjSido->FCrosss)
- {
- pObjCross->FShow = AShow;
- FOR_STL(TRLink*, pObjLink, pObjCross->FLinks)
- {
- pObjLink->FShow = AShow;
- }
- }
- }
- #endif
- }
- //---------------------------------------------------------------------------
- void __fastcall TFRAMEItsCross::FilterItsCross(String AFilter)
- {
- #if 0
- if (AFilter.IsEmpty())
- {
- InitFilter(true);
- InitItsCross();
- return;
- }
- InitFilter(false);
- FOR_STL(TRSido*, pObjSido, RLinkManager->FLists)
- {
- if (pObjSido->NAME.Pos(AFilter) > 0)
- {
- pObjSido->FShow = true;
- FOR_STL(TRCross*, pObjCross, pObjSido->FCrosss)
- {
- pObjCross->FShow = true;
- FOR_STL(TRLink*, pObjLink, pObjCross->FLinks)
- {
- pObjLink->FShow = true;
- }
- }
- }
- else
- {
- FOR_STL(TRCross*, pObjCross, pObjSido->FCrosss)
- {
- if (pObjCross->NAME.Pos(AFilter) > 0)
- {
- pObjSido->FShow = true;
- pObjCross->FShow = true;
- FOR_STL(TRLink*, pObjLink, pObjCross->FLinks)
- {
- pObjLink->FShow = true;
- }
- }
- else
- {
- FOR_STL(TRLink*, pObjLink, pObjCross->FLinks)
- {
- if (pObjLink->LINKID.Pos(AFilter) > 0 ||
- pObjLink->STNODENAME.Pos(AFilter) > 0 ||
- pObjLink->EDNODENAME.Pos(AFilter) > 0 )
- {
- pObjSido->FShow = true;
- pObjCross->FShow = true;
- pObjLink->FShow = true;
- }
- }
- }
- }
- }
- }
- InitItsCross();
- #endif
- tlItsCross->FullExpand();
- }
- //---------------------------------------------------------------------------
- void __fastcall TFRAMEItsCross::FilterItsCrossA(String AFilter)
- {
- if (AFilter.IsEmpty())
- {
- UnFilterItsCross();
- return;
- }
- //TcxTreeListAccess *pTlList = (TcxTreeListAccess*)tlItsCross;
- //pTlList->ChangesLocked = true;
- int ii;
- tlItsCross->BeginUpdate();
- try
- {
- //그룹을 모두 숨긴다.
- for (ii = 0; ii < tlItsCross->AbsoluteCount; ii++)
- {
- if (tlItsCross->AbsoluteItems[ii]->IsGroupNode)
- {
- tlItsCross->AbsoluteItems[ii]->Visible = false;
- }
- }
- for (ii = 0; ii < tlItsCross->AbsoluteCount; ii++)
- {
- if (tlItsCross->AbsoluteItems[ii]->IsGroupNode) continue;
- tlItsCross->AbsoluteItems[ii]->CheckState = cbsUnchecked;
- String sItsCrossName = tlItsCross->AbsoluteItems[ii]->Texts[colItsCross->ItemIndex];
- if (sItsCrossName.Pos(AFilter) == 0)
- {
- tlItsCross->AbsoluteItems[ii]->Visible = false;
- }
- else
- {
- TcxTreeListNode *pCenter = tlItsCross->AbsoluteItems[ii]->Parent;
- if (pCenter)
- {
- pCenter->Visible = true;
- }
- tlItsCross->AbsoluteItems[ii]->Visible = true;
- }
- }
- }
- __finally
- {
- tlItsCross->EndUpdate();
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TFRAMEItsCross::UnFilterItsCross()
- {
- int ii;
- tlItsCross->BeginUpdate();
- try
- {
- for (ii = 0; ii < tlItsCross->AbsoluteCount; ii++)
- {
- if (!tlItsCross->AbsoluteItems[ii]->IsGroupNode)
- {
- tlItsCross->AbsoluteItems[ii]->CheckState = cbsUnchecked;
- }
- tlItsCross->AbsoluteItems[ii]->Visible = true;
- }
- }
- __finally
- {
- tlItsCross->EndUpdate();
- }
- }
- //---------------------------------------------------------------------------
- AnsiString __fastcall TFRAMEItsCross::GetHTMLString()
- {
- AnsiString sHtml = "";
- AnsiString sTemp;
- if (!FCompleted) return lblAll->Caption;//"전체";
- int ii, jj;
- tlItsCross->BeginUpdate();
- try
- {
- TcxTreeListNode *pRoot = tlItsCross->Root->GetNext();
- while(pRoot)
- {
- if (pRoot->CheckState == cbsUnchecked ||
- pRoot->Visible == false)
- {
- pRoot = pRoot->GetNext();
- continue;
- }
- for (ii = 0; ii < pRoot->Count; ii++)
- {
- TcxTreeListNode *pCross = pRoot->Items[ii];
- if (!pCross->Visible ||
- pCross->CheckState == cbsUnchecked)
- {
- continue;
- }
- int nChecked = 0;
- for (jj = 0; jj < pCross->Count; jj++)
- {
- if (!pCross->Items[jj]->Visible)
- continue;
- if (pCross->Items[jj]->Checked) nChecked++;
- }
- if (nChecked > 0)
- {
- sTemp = pCross->Texts[colItsCross->ItemIndex] + "(" + String(nChecked) + ")";
- if (sHtml.IsEmpty() == false)
- {
- sHtml += ", ";
- }
- sHtml += sTemp;
- }
- }
- pRoot = pRoot->GetNext();
- }
- }
- __finally
- {
- tlItsCross->EndUpdate();
- }
- if (sHtml.IsEmpty()) sHtml = lblAll->Caption;//"전체";
- return sHtml;
- }
- //---------------------------------------------------------------------------
- void __fastcall TFRAMEItsCross::GetCondition(STCondition& ACondition)
- {
- ACondition.bUse = false;
- ACondition.Codes.clear();
- FSelNm = lblAll->Caption;//"전체";
- int ii, jj;
- tlItsCross->BeginUpdate();
- try
- {
- int nMemIdx;
- TcxTreeListNode *pRoot = tlItsCross->Root->GetNext();
- while(pRoot)
- {
- if (pRoot->CheckState == cbsUnchecked ||
- pRoot->Visible == false)
- {
- pRoot = pRoot->GetNext();
- continue;
- }
- for (ii = 0; ii < pRoot->Count; ii++)
- {
- TcxTreeListNode *pCross = pRoot->Items[ii];
- if (!pCross->Visible ||
- pCross->CheckState == cbsUnchecked)
- {
- continue;
- }
- for (jj = 0; jj < pCross->Count; jj++)
- {
- if (!pCross->Items[jj]->Visible) continue;
- if (!pCross->Items[jj]->Checked) continue;
- String sMemIdx = pCross->Items[jj]->Texts[colMem->ItemIndex];
- nMemIdx = StrToIntDef(sMemIdx, 0);
- if (nMemIdx != 0)
- {
- try {
- TRCrossDir* pObj = (TRCrossDir*)nMemIdx;
- ACondition.Codes.push_back(pObj->VDS_CTLR_NMBR+","+pObj->VDS_CMRA_NO);
- if (FSelNm == lblAll->Caption)//"전체")
- {
- FSelNm = pObj->DIR_NAME;
- }
- } catch(...) {}
- }
- }
- }
- pRoot = pRoot->GetNext();
- }
- }
- __finally
- {
- tlItsCross->EndUpdate();
- }
- ACondition.bUse = !ACondition.Codes.empty();
- }
- //------------------------------------------------------------------------------
- void __fastcall TFRAMEItsCross::EdFilterKeyDown(TObject *Sender, WORD &Key, TShiftState Shift)
- {
- if (VK_RETURN == Key)
- {
- btnFilterClick(NULL);
- }
- }
- //---------------------------------------------------------------------------
- void __fastcall TFRAMEItsCross::btnFilterClick(TObject *Sender)
- {
- String sFilter = EdFilter->Text.Trim();
- FilterItsCross(sFilter);
- }
- //---------------------------------------------------------------------------
- void __fastcall TFRAMEItsCross::btnNoFilterClick(TObject *Sender)
- {
- EdFilter->Text = "";
- UnFilterItsCross();
- }
- //---------------------------------------------------------------------------
|