我想做出如下图的效果
只是tchart部分,一点击字段就会统计,自己昨天弄了一下,很不成功,我的问题代码procedure TForm9.bsSkinTreeView1MouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
varSeries: TpieSeries;
begin
if bsskintreeview1.Selected.Text = '性别' then
//点中第一个根节点后
begin
adoquery1.Close;
adoquery1.SQL.clear;
adoquery1.SQL.Add('select * from 员工基本信息表 ');
adoquery1.open;
sumday1:=adoquery1.RecordCount;
end
else if bsskintreeview1.Selected.Text = '男' then
//点中第二个根节点后
begin
adoquery1.Close;
adoquery1.SQL.clear;
adoquery1.SQL.Add('select * from 员工基本信息表 where  性别=''男''');
adoquery1.open;
sumday2:=adoquery1.RecordCount;
end
else if bsskintreeview1.Selected.Text ='女' then
//点中第二个根节点后
begin
adoquery1.Close;
adoquery1.SQL.clear;
adoquery1.SQL.Add('select * from 员工基本信息表 where  性别=''女''');
adoquery1.open;
sumday3:=adoquery1.RecordCount;
Series := TpieSeries.Create(Chart1);Series.Add(100, '男  '''+floattostr((sumday2/sumday1)*100)+'''''%', clRed);Series.Add(200, '女  '''+floattostr((sumday3/sumday1)*100)+'''''%', clGreen);
Chart1.AddSeries(Series);
end;end;
盼望高手能帮我写一下‘性别’部分的功能实现,以及别的字段切换的思路

解决方案 »

  1.   

    我只要它的TCHART和TREE部分就可以
      

  2.   

    你上面的處理算法,沒有錯。procedure TForm9.bsSkinTreeView1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
    varSeries: TpieSeries;
    begin if bsskintreeview1.Selected = nil then exit;  //  底下語句就用你自己的就行了。沒有發現在錯誤。
      

  3.   

    现在不知道把TCHART放到哪里,现在放的位置每点击一下‘女’就多出来一个PIE,放到FORMCREATE里又接受不到sumday的值
      

  4.   

    procedure TForm2.Button1Click(Sender: TObject);
    var
       Series : TChartSeries ;
    begin
    Chart1.SeriesList.Clear;  // 先清掉。
    Series := TChartSeries.Create(Chart1);Series.Add(100, 'aaa', clRed);Series.Add(200, 'AAA', clGreen);Chart1.AddSeries(Series);
    end;
      

  5.   

    这是一个树的事件,比如说我点击‘性别’‘男’‘女’希望Ttchart是一样的。另外那个分块是怎么根据数据分的?http://www.skycn.com/soft/27396.html你看看美萍的‘综合统计’》‘人事统计’的功能,我就想实现它
      

  6.   

    我用的是TCHART 没和数据库相连  只是用到了adoquery.RecordCount
      

  7.   

    那个series>datasource要怎么设啊
      

  8.   

    我想点击性别和男女时,显示的是同一个chart,同时还想获得sumday 的值
      

  9.   

    不好意思,这二天一直比较忙,你的是TCHART,不是TDBCHART。其实你的已经实现了一个分类了,其它的都是大同小异,没有太明白,你现在遇到的难题是?
      

  10.   


    procedure TForm9.bsSkinTreeView1MouseDown(Sender: TObject;
      Button: TMouseButton; Shift: TShiftState; X, Y: Integer);begin
    if bsskintreeview1.Selected = nil then exit;
    if bsskintreeview1.Selected.Text = '性别' then
    //点中第一个根节点后
    begin
    adoquery1.Close;
    adoquery1.SQL.clear;
    adoquery1.SQL.Add('select * from 员工基本信息表 ');
    adoquery1.open;
    Chart1.SeriesList[1].Active := False;
    Chart1.SeriesList[0].Active := True;
    Chart1.SeriesList[0].Clear;
    Series1.Add(sumday2, '男  ', clRed);
    Series1.Add(sumday3, '女  ', clGreen);
    end
    else if bsskintreeview1.Selected.Text = '男' then
    //点中第二个根节点后
    begin
    adoquery1.Close;
    adoquery1.SQL.clear;
    adoquery1.SQL.Add('select * from 员工基本信息表 where  性别=''男''');
    adoquery1.open;
    Chart1.SeriesList[1].Active := False;
    Chart1.SeriesList[0].Active := True;
    Chart1.SeriesList[0].Clear;
    Series1.Add(sumday2, '男  ', clRed);
    Series1.Add(sumday3, '女  ', clGreen);
    end
    else if bsskintreeview1.Selected.Text ='女' then
    //点中第二个根节点后
    begin
    adoquery1.Close;
    adoquery1.SQL.clear;
    adoquery1.SQL.Add('select * from 员工基本信息表 where  性别=''女''');
    adoquery1.open;
    Chart1.SeriesList[1].Active := False;
    Chart1.SeriesList[0].Active := True;
    Chart1.SeriesList[0].Clear;
    Series1.Add(sumday2, '男  ', clRed);
    Series1.Add(sumday3, '女  ', clGreen);
    end
    else if bsskintreeview1.Selected.Text ='婚姻状况' then
    //点中第二个根节点后
    begin
    adoquery1.Close;
    adoquery1.SQL.clear;
    adoquery1.SQL.Add('select * from 员工基本信息表 ');
    adoquery1.open;
    Chart1.SeriesList[0].Active := False;
    Chart1.SeriesList[1].Active := True;
    Chart1.SeriesList[1].Clear;
    Series2.Add(sumday4, '已婚  ', clRed);
    Series2.Add(sumday5, '未婚  ', clGreen);
    end
    else  if bsskintreeview1.Selected.Text='已婚' then
    begin
    adoquery1.Close;
    adoquery1.SQL.clear;
    adoquery1.SQL.Add('select * from 员工基本信息表 where  婚姻状况=''已婚''');
    adoquery1.open;
    Chart1.SeriesList[0].Active := False;
    Chart1.SeriesList[1].Active := True;
    Chart1.SeriesList[1].Clear;
    Series2.Add(sumday4, '已婚  ', clRed);
    Series2.Add(sumday5, '未婚  ', clGreen);
    end
    else  if  bsskintreeview1.Selected.Text='未婚' then
    begin
    adoquery1.Close;
    adoquery1.SQL.clear;
    adoquery1.SQL.Add('select * from 员工基本信息表 where  婚姻状况=''未婚''');
    adoquery1.open;
    Chart1.SeriesList[0].Active := False;
    Chart1.SeriesList[1].Active := True;
    Chart1.SeriesList[1].Clear;
    Series2.Add(sumday4, '已婚  ', clRed);
    Series2.Add(sumday5, '未婚  ', clGreen);
    end;end;