我用建立了一个chart控件,在chart的Editor中新增了两个Series,现在想通过传进来的参数控制Series的显示。控制chart直接用chart.visible属性控制就行了,请教各位哥哥,怎么访问并设置series的属性Active?在chart的Editor中可以设置,就是不知道代码是怎么写的

解决方案 »

  1.   

    delphi獲取fastreport 中chart:(請LZ參考)
    var
    VChart :TfrxChartView;
    begin
    VChart := TfrxChartView(frxReportConstrue.FindObject('Chart'));
    end;procedure TForm_DesignReport.SetChart;
    var
    i: Integer;
    sSeriesType, sFieldName: String;
    pChart: TDBChart;
    sSeries: TChartSeries;vMemo: TfrMemoView;
    vBand2: TFrBandView;
    myDataSet: TClientDataSet;
    myFrDataSet: TFrDBDataSet;
    myChart: TFrChartView;
    begin
    //尋找報表中是否有特定的Chart
    myChart:=TfrChartView(FRReport.Pages[0].FindObject('myChart'));
    if myChart=nil then Exit;//尋找報表中是否有特定的Memo, 然後根據Memo對Chart進行設置
    vMemo := TfrMemoView(FRReport.FindObject('SetmyChart'));
    if vMemo=nil then Exit;//得到主項資料
    vBand2:=TfrBandView(FRReport.Pages[0].FindObject('myPageMasterData_myDataSet'));
    if vBand2=nil then Exit;//得到主項資料對應的資料集
    myFrDataSet:=(Self.FindComponent(vBand2.DataSet) as TFrDBDataSet);
    if myFrDataSet=nil then Exit;
    myDataSet:=TClientDataSet(myFrDataSet.DataSet);pChart:=TDBChart.Create(Self);
    try
    pChart.RemoveAllSeries;
    pChart.View3D:=vMemo.Memo.Values['View3D']='1';
    pChart.LeftAxis.Title.Font.Name:='@宋體';
    pChart.LeftAxis.Title.Font.Size:=10;
    pChart.LeftAxis.Title.Angle:=270;
    pChart.LeftAxis.Automatic:=True;if trim(vMemo.Memo.Values['LeftAxisMax'])<>'-1' then
    begin
    pChart.LeftAxis.Automatic:=False;
    pChart.LeftAxis.AutomaticMaximum:=False;
    pChart.LeftAxis.Maximum:=StrToFloat(trim(vMemo.Memo.Values['LeftAxisMax']));
    //ShowMessage('111"'+vMemo.Memo.Values['LeftAxisMax']+'"'+vMemo.Memo.Values['LeftAxisMin']+'"');
    end;
    if trim(vMemo.Memo.Values['LeftAxisMin'])<>'-1' then
    begin
    //ShowMessage('222"'+vMemo.Memo.Values['LeftAxisMax']+'"'+vMemo.Memo.Values['LeftAxisMin']+'"');
    pChart.LeftAxis.Automatic:=False;
    pChart.LeftAxis.AutomaticMinimum:=False;
    pChart.LeftAxis.Minimum:=StrToFloat(trim(vMemo.Memo.Values['LeftAxisMin']));
    end;
    pChart.LeftAxis.AutomaticMaximum:=trim(vMemo.Memo.Values['LeftAxisMax'])='-1';
    pChart.LeftAxis.AutomaticMinimum:=trim(vMemo.Memo.Values['LeftAxisMin'])='-1';pChart.LeftAxis.Title.Caption:=vMemo.Memo.Values['YLabel'];
    pChart.BottomAxis.Title.Caption:=vMemo.Memo.Values['XLabel'];sSeriesType:=vMemo.Memo.Values['Series'];
    for i:=0 to myDataSet.FieldCount - 1 do
    begin
    sFieldName:=myDataSet.Fields.FieldName;
    if vMemo.Memo.Values[sFieldName]<>'' then
    begin
    if sSeriesType='Line' then sSeries:=TLineSeries.Create(pChart)
    else if sSeriesType='Bar' then sSeries:=TBarSeries.Create(pChart)
    else if sSeriesType='Pie' then sSeries:=TPieSeries.Create(pChart);
    pChart.AddSeries(sSeries);
    sSeries.DataSource:=myDataSet;
    sSeries.Title:=vMemo.Memo.Values[sFieldName];
    sSeries.YValues.ValueSource:=sFieldName;
    end;
    end;
    myChart.AssignChart(pChart);
    except
    ShowMessage('圖形設置錯誤!')
    end;
    end;  
     
      

  2.   

    自己摸索出来了Tbarseries(chart1.series[0]).active:=false