DBTreeSample.cpp
上传用户:hylc_2004
上传日期:2014-01-23
资源大小:46800k
文件大小:6k
源码类别:

Delphi控件源码

开发平台:

Delphi

  1. //---------------------------------------------------------------------------
  2. #include <vcl.h>
  3. #include <stdio.h>
  4. #pragma hdrstop
  5. #include "DBTreeSample.h"
  6. //---------------------------------------------------------------------------
  7. #pragma package(smart_init)
  8. #pragma link "fcdbtreeview"
  9. #pragma link "fcDemoRichEdit"
  10. #pragma link "fcImager"
  11. #pragma resource "*.dfm"
  12. TDMTreeViewForm *DMTreeViewForm;
  13. //---------------------------------------------------------------------------
  14. __fastcall TDMTreeViewForm::TDMTreeViewForm(TComponent* Owner)
  15.         : TForm(Owner)
  16. {
  17. }
  18. //---------------------------------------------------------------------------
  19. void __fastcall TDMTreeViewForm::fcDBTreeView1CalcNodeAttributes(
  20.       TfcDBCustomTreeView *TreeView, TfcDBTreeNode *Node)
  21. {
  22.    if (Node->DataSet == CustomersTbl) {
  23.       // Use lookupfield to determine if expand icon (+) should be displayed
  24.       Node->HasChildren = !(Node->DataSet->FieldByName("LookupOrders")->IsNull);
  25.       // Use US bitmap for US customers
  26.       if (Node->DataSet->FieldByName("Country")->AsString == "US") {
  27.          Node->StateIndex = 0;
  28.       } else Node->StateIndex = 1;
  29.    }
  30. }
  31. //---------------------------------------------------------------------------
  32. void __fastcall TDMTreeViewForm::fcDBTreeView1Change(
  33.       TfcDBCustomTreeView *TreeView, TfcDBTreeNode *Node)
  34. {
  35.   String s;
  36.   char temps[500];
  37.   TfcDBTreeNode * tempNode;
  38.   for (int i=0;i<100;i++) temps[i] = ' ';
  39.   // Compute label to indicate tree state
  40.   tempNode=Node;
  41.   do {
  42.      s=temps;
  43.      sprintf(temps,"%srn%s",tempNode->Text,s);
  44.      tempNode = tempNode->Parent;
  45.   } while (tempNode!=NULL);
  46.   TreeStateLabel->Caption = temps;
  47.   // Select appropriate tab sheet based on active node
  48.   if (Node->DataSet==CustomersTbl) {
  49.     PageControl1->ActivePage = CustomersTabSheet;
  50.   } else if (Node->DataSet==OrdersTbl) {
  51.     PageControl1->ActivePage = OrdersTabSheet;
  52.   } else if (Node->DataSet==ItemsTbl) {
  53.     PageControl1->ActivePage = ItemsTabSheet;
  54.   }
  55. }
  56. //---------------------------------------------------------------------------
  57. void __fastcall TDMTreeViewForm::PageControl2Change(TObject *Sender)
  58. {
  59.    /* This code causes the treeview to highlight the
  60.       dataset associated with the ActivePage of the tab control */
  61.    if (PageControl1->ActivePage == OrdersTabSheet) {
  62.       fcDBTreeView1->MakeActiveDataSet(OrdersTbl, False);
  63.    } else if (PageControl1->ActivePage == ItemsTabSheet) {
  64.       fcDBTreeView1->MakeActiveDataSet(ItemsTbl, False);
  65.    } else if (PageControl1->ActivePage == CustomersTabSheet) {
  66.       fcDBTreeView1->MakeActiveDataSet(CustomersTbl, False);
  67.    }
  68. }
  69. //---------------------------------------------------------------------------
  70. void __fastcall TDMTreeViewForm::ComboBox1Change(TObject *Sender)
  71. {
  72.    // Update treeview's fields based on active index }
  73.    if (((TComboBox *)Sender)->Text == "By Company") {
  74.       CustomersTbl->IndexName = "ByCompany";
  75.       fcDBTreeView1->DisplayFields->Strings[0] = ""Company" ("CustNo")";
  76.    } else {
  77.       CustomersTbl->IndexName = "";
  78.       fcDBTreeView1->DisplayFields->Strings[0] = ""CustNo", "Company"";
  79.    }
  80. }
  81. //---------------------------------------------------------------------------
  82. void __fastcall TDMTreeViewForm::FilterComboChange(TObject *Sender)
  83. {
  84.   if (((TComboBox *)Sender)->ItemIndex==0) {
  85.     CustomersTbl->Filtered = False;
  86.   } else if (((TComboBox *)Sender)->ItemIndex>0) CustomersTbl->Filtered = True;
  87. }
  88. //---------------------------------------------------------------------------
  89. void __fastcall TDMTreeViewForm::CustomersTblFilterRecord(TDataSet *DataSet,
  90.       bool &Accept)
  91. {
  92.    if (FilterCombo->ItemIndex==1) {
  93.       Accept = (DataSet->FieldByName("Country")->AsString == "US");
  94.    } else if (FilterCombo->ItemIndex==2)
  95.       Accept = !(DataSet->FieldByName("Country")->AsString == "US");
  96. }
  97. //---------------------------------------------------------------------------
  98. void __fastcall TDMTreeViewForm::CheckBox1Click(TObject *Sender)
  99. {
  100.      if (((TCheckBox *)Sender)->Checked == True){
  101.         fcDBTreeView1->Options << dtvoExpandButtons3D;
  102.      }
  103.      else fcDBTreeView1->Options >> dtvoExpandButtons3D;
  104.      fcDBTreeView1->Invalidate();
  105. }
  106. //---------------------------------------------------------------------------
  107. void __fastcall TDMTreeViewForm::CheckBox2Click(TObject *Sender)
  108. {
  109.      if (((TCheckBox *)Sender)->Checked == True){
  110.         fcDBTreeView1->Options << dtvoRowSelect;
  111.      }
  112.      else fcDBTreeView1->Options >> dtvoRowSelect;
  113.      fcDBTreeView1->Invalidate();
  114. }
  115. //---------------------------------------------------------------------------
  116. void __fastcall TDMTreeViewForm::CheckBox3Click(TObject *Sender)
  117. {
  118.      if (((TCheckBox *)Sender)->Checked == True){
  119.         fcDBTreeView1->MultiSelectAttributes->Enabled = true;
  120.         fcDBTreeView1->MultiSelectAttributes->MultiSelectCheckbox = True;
  121.      }
  122.      else {
  123.         fcDBTreeView1->MultiSelectAttributes->Enabled = false;
  124.         fcDBTreeView1->MultiSelectAttributes->MultiSelectCheckbox = False;
  125.      }
  126. }
  127. //---------------------------------------------------------------------------
  128. void __fastcall TDMTreeViewForm::CheckBox4Click(TObject *Sender)
  129. {
  130.      if (((TCheckBox *)Sender)->Checked == True){
  131.         fcDBTreeView1->Options << dtvoHotTracking;
  132.      }
  133.      else fcDBTreeView1->Options >> dtvoHotTracking;
  134. }
  135. //---------------------------------------------------------------------------
  136. void __fastcall TDMTreeViewForm::CheckBox5Click(TObject *Sender)
  137. {
  138.    if (((TCheckBox *)Sender)->Checked)
  139.    {
  140.       fcDBTreeView1->Imager= fcImager1;
  141.       fcDBTreeView1->InactiveFocusColor= clNone;
  142.       fcDBTreeView1->LineColor= clWhite;
  143.       fcDBTreeView1->Font->Color= clWhite;
  144.       fcDBTreeView1->Font->Style << fsBold;
  145.    }
  146.    else {
  147.      fcDBTreeView1->Imager=NULL;
  148.      fcDBTreeView1->InactiveFocusColor= clBtnFace;
  149.      fcDBTreeView1->LineColor= clBtnShadow;
  150.      fcDBTreeView1->Font->Color= clBlack;
  151.      fcDBTreeView1->Font->Style >> fsBold;
  152.    }
  153. }
  154. //---------------------------------------------------------------------------