Skip to main content

TdxBarTreeViewCombo Example

  • 2 minutes to read

This example populates a TdxBarTreeViewCombo‘s dropdown tree view with data from a self-referenced table. The self-referenced table represents a firm’s management structure. Large departments consist of small departments. The table has the following structure:

Field Name Field Type Field Length
DepId Number 2
DepParent Number 2
DepName Character 20

DepId is a department identification number, DepParent is the identification number of the parent department. The DepId field of the largest departments is equal to -1. You can use this example with smaller datasets.

procedure TForm1.FillTheTreeViewNode;
  procedure AddProject(ACode: Integer; ANode: TTreeNode);
  var
    OldFilterTmp   : String;
    OldFilteredTmp : Boolean;
    OldRecNo       : Integer;
    NewTreeNode    : TTreeNode;
  begin
    dxBarTreeViewCombo1.Items.Clear;
    with DataSource1.Dataset do
    begin
      OldRecNo := RecNo;
      OldFilterTmp := Filter;
      OldFilteredTmp := Filtered;
      Filtered := False;
      Filter := 'DepParent = '+IntToStr(ACode);
      Filtered := True;
      First;
      while not Eof do
      begin
        NewTreeNode := dxBarTreeViewCombo1.Items.AddChild(ANode,FieldValues['DepName']);
        AddProject(FieldValues['DepId'], NewTreeNode);
        Next;
      end;
      Filter := OldFilterTmp;
      Filtered := OldFilteredTmp;
      RecNo := OldRecNo;
    end;
  end;
var
  OldFilter   : String;
  OldFiltered : Boolean;
  NewRootNode : TTreeNode;
begin
  with DataSource1.Dataset do
  begin
    OldFilter := Filter;
    OldFiltered := Filtered;
    Filtered := False;
    Filter := ' DepParent = -1';
    Filtered := True;
    First;
    while not Eof do
    begin
      NewRootNode :=
        dxBarTreeViewCombo1.Items.Add(nil,FieldValues['DepName']);
      AddProject(FieldValues['DepId'], NewRootNode );
      Next;
    end;
    Filtered := False;
    Filter := OldFilter;
    Filtered := OldFiltered;
  end;
end;