Effect of the present embodiment FIG:
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, DBGrids, DB, DBClient, StdCtrls, ComCtrls, ExtCtrls; type TForm1 = class(TForm) DataSource1: TDataSource; ClientDataSet1: TClientDataSet; DBGrid1: TDBGrid; TreeView1: TTreeView; Splitter1: TSplitter; procedure FormCreate(Sender: TObject); procedure TreeView1Change(Sender: TObject; Node: TTreeNode); end; var Form1: TForm1; implementation {$R *.dfm} procedureTForm1.FormCreate (Sender: TObject); var I: Integer; Node: TTreeNode; List: a TStringList; S: String ; the begin {country.xml Delphi is an exemplary data file, can also be used} country.cds ClientDataSet1.FileName: = 'C: \ TEMP \ country.xml' ; ClientDataSet1.Active: = True; DataSource1.DataSet: = ClientDataSet1; DBGrid1.DataSource: = to DataSource1; {four rows above the data member is to mount each other, may be provided in the design } set {} establish List List: = TStringList.Create; List.Sorted: = True; {specified sort} List.Duplicates: = dupIgnore; {} to avoid duplication {} the added data to the TreeView for I: = 0 to ClientDataSet1.FieldDefs.Count - . 1 do the begin Node: = TreeView1.Items.Add ( nil , ClientDataSet1.FieldDefs [I] .Name); {field name} {avoid duplicate data, to the first data} List List.Clear ; ClientDataSet1.First; the while Not ClientDataSet1.Eof do the begin List.Add (ClientDataSet1.Fields [I] .Value); ClientDataSet1.Next; End ; {the data added to the List} the TreeView for S in List do TreeView1.Items .AddChild (Node, S); End ; List.Free; End ; Procedure TForm1.TreeView1Change (Sender: TObject; the Node: TTreeNode); the begin IF Node.Parent <> nil the then the begin {Filter the following SQL query statement in fact, if the other database is replaced} ClientDataSet1.Filter: = Node.Parent.Text + '=' '' + Node.text + '' '' ; ClientDataSet1.Filtered: = True; End the else ClientDataSet1.Filtered: = False; {cancel misplaced when selected field name} End ; End .
Attached sample database:
<?xml version="1.0" standalone="yes"?> <DATAPACKET Version="2.0"> <METADATA> <FIELDS> <FIELD attrname="Name" fieldtype="string" WIDTH="24"/> <FIELD attrname="Capital" fieldtype="string" WIDTH="24"/> <FIELD attrname="Continent" fieldtype="string" WIDTH="24"/> <FIELD attrname="Area" fieldtype="r8"/> <FIELD attrname="Population" fieldtype="r8"/> </FIELDS> <PARAMS DEFAULT_ORDER="1" PRIMARY_KEY="1" LCID="2057"/> </METADATA> <ROWDATA> <ROW Name="Argentina" Capital="Buenos Aires" Continent="South America" Area="2777815" Population="32300003"/> <ROW Name="Bolivia" Capital="La Paz" Continent="South America" Area="1098575" Population="7300000"/> <ROW Name="Brazil" Capital="Brasilia" Continent="South America" Area="8511196" Population="150400000"/> <ROW Name="Canada" Capital="Ottawa" Continent="North America" Area="9976147" Population="26500000"/> <ROW Name="Chile" Capital="Santiago" Continent="South America" Area="756943" Population="13200000"/> <ROW Name="Colombia" Capital="Bagota" Continent="South America" Area="1138907" Population="33000000"/> <ROW Name="Cuba" Capital="Havana" Continent="North America" Area="114524" Population="10600000"/> <ROW Name="Ecuador" Capital="Quito" Continent="South America" Area="455502" Population="10600000"/> <ROW Name="El Salvador" Capital="San Salvador" Continent="North America" Area="20865" Population="5300000"/> <ROW Name="Guyana" Capital="Georgetown" Continent="South America" Area="214969" Population="800000"/> <ROW Name="Jamaica" Capital="Kingston" Continent="North America" Area="11424" Population="2500000"/> <ROW Name="Mexico" Capital="Mexico City" Continent="North America" Area="1967180" Population="88600000"/> <ROW Name="Nicaragua" Capital="Managua" Continent="North America" Area="139000" Population="3900000"/> <ROW Name="Paraguay" Capital="Asuncion" Continent="South America" Area="406576" Population="4660000"/> <ROW Name="Peru" Capital="Lima" Continent="South America" Area="1285215" Population="21600000"/> <ROW Name="United States of America" Capital="Washington" Continent="North America" Area="9363130" Population="249200000"/> <ROW Name="Uruguay" Capital="Montevideo" Continent="South America" Area="176140" Population="3002000"/> <ROW Name="Venezuela" Capital="Caracas" Continent="South America" Area="912047" Population="19700000"/> </ROWDATA> </DATAPACKET>