//--------------------------------------------------------------------------- #include #pragma hdrstop #include "UnboundModeDemoMain.h" #include "UnboundModeDemoData.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma link "cxClasses" #pragma link "cxControls" #pragma link "cxCustomData" #pragma link "cxData" #pragma link "cxDBData" #pragma link "cxEdit" #pragma link "cxFilter" #pragma link "cxGraphics" #pragma link "cxStyles" #pragma link "cxLookAndFeels" #pragma link "DemoBasicMain" #pragma link "cxEditRepositoryItems" #pragma link "cxInplaceContainer" #pragma link "cxTextEdit" #pragma link "cxTL" #pragma resource "*.dfm" TUnboundModeDemoMainForm *UnboundModeDemoMainForm; //--------------------------------------------------------------------------- __fastcall TUnboundModeDemoMainForm::TUnboundModeDemoMainForm(TComponent* Owner) : TDemoBasicMainForm(Owner) { } //--------------------------------------------------------------------------- void __fastcall TUnboundModeDemoMainForm::FormShow(TObject *Sender) { /* remove/add the closing slash on this line to disable/enable the following code * ShowMessage("WARNING: tutorial not completed. First, please apply the steps " "shown in the doc file"); //*/ } //--------------------------------------------------------------------------- void __fastcall TUnboundModeDemoMainForm::LookAndFeelChange(TObject *Sender) { if (((TMenuItem*)Sender)->Tag > 3){ cxLookAndFeelController->NativeStyle = !cxLookAndFeelController->NativeStyle; ((TMenuItem*)Sender)->Checked = cxLookAndFeelController->NativeStyle; } else{ ((TMenuItem*)Sender)->Checked = true; cxLookAndFeelController->Kind = (TcxLookAndFeelKind)((TMenuItem*)Sender)->Tag; cxLookAndFeelController->NativeStyle = false; miNativeStyle->Checked = false; } } //--------------------------------------------------------------------------- void __fastcall TUnboundModeDemoMainForm::FormCreate(TObject *Sender) { /* remove/add the closing slash on this line to disable/enable the following code */ CustomizeColumns(); LoadData(); tlPlanets->FullCollapse(); tlPlanets->Nodes->Root->Items[0]->Expanded = true; //*/ } //--------------------------------------------------------------------------- void __fastcall TUnboundModeDemoMainForm::CustomizeColumns() { const String DecimalSeparator = '.'; for (int I = 0; I < tlPlanets->ColumnCount; I++) if (I == DistanceColIndex || I == RadiusColIndex || I == ImageIndexColIndex) tlPlanets->Columns[I]->DataBinding->ValueTypeClass = __classid(TcxIntegerValueType); else{ if (I == PeriodColIndex) tlPlanets->Columns[I]->DataBinding->ValueTypeClass = __classid(TcxFloatValueType); else tlPlanets->Columns[I]->DataBinding->ValueTypeClass = __classid(TcxStringValueType); } } //--------------------------------------------------------------------------- void __fastcall TUnboundModeDemoMainForm::LoadData() { if (!FileExists(FileName)) throw Exception("Data file not found"); FRecords = new TStringList(); FValues = new TStringList(); tlPlanets->BeginUpdate(); __try{ FRecords->LoadFromFile(FileName); for (int I = 0; I < HeaderLineCount; I++) FRecords->Delete(0); AddNodes(tlPlanets->Nodes->Root, "-"); } __finally{ tlPlanets->EndUpdate(); delete FRecords; delete FValues; } } //--------------------------------------------------------------------------- TcxTreeListNode* __fastcall TUnboundModeDemoMainForm::AddNode( TcxTreeListNode *AParentNode, String ARecord) { String S; TcxTreeListNode *Result = AParentNode->AddChild(); FValues->CommaText = ARecord; for (int J = 0; J < FValues->Count; J++) if (FValues->Strings[J] != "-"){ S = FValues->Strings[J]; if (S.Pos('.')!=0) {S[S.Pos('.')] = DecimalSeparator;} Variant V = S; if (!VarIsNull(V)) Result->Values[J] = V; } Result->ImageIndex = Result->Values[ImageField]; Result->SelectedIndex = Result->Values[ImageField]; return Result; } //--------------------------------------------------------------------------- void __fastcall TUnboundModeDemoMainForm::AddNodes(TcxTreeListNode *AParentNode, String AParentKeyValue) { TcxTreeListNode *ANode; for (int J = 0; J < FRecords->Count; J++) if (GetFieldValue(FRecords->Strings[J], ParentKeyField) == AParentKeyValue){ ANode = AddNode(AParentNode, FRecords->Strings[J]); AddNodes(ANode, GetFieldValue(FRecords->Strings[J], KeyField)); } } //--------------------------------------------------------------------------- String __fastcall TUnboundModeDemoMainForm::GetFieldValue(String ARecord, int AFieldIndex) { FValues->CommaText = ARecord; return FValues->Strings[AFieldIndex]; } //--------------------------------------------------------------------------- void __fastcall TUnboundModeDemoMainForm::tlPlanetsDragOver( TObject *Sender, TObject *Source, int X, int Y, TDragState State, bool &Accept) { // } //---------------------------------------------------------------------------