使用fastreport4.011,制作出与数据库相联的chart图形,chart包含的图形bar有三个?(fastreport中显示的就是bar,并没有名称的属性?)
偶现在想用语句实现的功能如下
1:获取其chart与bar(chart所包含的bar),获取后,对bar进行图形转换!例如:柱形图换为园形图等等!获取chart已经搞定,可是获取其中的chart所包含的bar应该怎样实现,实在是没有办法了?获取其chart的语句是这样写的,
var
VChart :TfrxChartView;
begin
VChart := TfrxChartView(frxReportConstrue.FindObject('Chart'));
end;
偶现在想用语句实现的功能如下
1:获取其chart与bar(chart所包含的bar),获取后,对bar进行图形转换!例如:柱形图换为园形图等等!获取chart已经搞定,可是获取其中的chart所包含的bar应该怎样实现,实在是没有办法了?获取其chart的语句是这样写的,
var
VChart :TfrxChartView;
begin
VChart := TfrxChartView(frxReportConstrue.FindObject('Chart'));
end;
解决方案 »
- 请问哪个Edit控件有横线分割?
- dll中参数含有结构体,怎么调用
- 大家一起来解决个棘手的问题
- 大家有没有发现,工具栏按钮好像没办法实现图标文字同时在上面,你们都是怎么做的啊?
- 数据不够如何用空表格代替,占满一页
- 随机数据记录
- HOWTO Edit Excel Data with ADO -- 如何删除一行?(使用了ADODataSet连接,DBGrid显示)
- 关于clientDataSet和ADODataSet的区别
- 请帮忙修改以下程序.为什么总是通不过.好象有很多問題.
- 有哪些比较好的办法实现Query或Table的数据集中的数据只能编辑,不能新增或删除?
- 急急急!DAODatabase致命错误
- AdoDataSet缓存更新问题!
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[i].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;
创建图形如下:
Vseries := THorizBarSeries.Create(DBChart);
With Vseries do
begin
ParentChart := DBChart ;
Marks.Style := smsValue;
DataSource := VDataSet;
Title := Vtitle[i];
XLabelsSource := Vlabel;
XValues.ValueSource := VY[i];
end;
end; //点状图形
if VType = 'TPointSeries' then
begin
Vseries := TPointSeries.Create(DBChart);
With Vseries do
begin
ParentChart := DBChart ;
s.Style := smsValue;
DataSource := VDataSet;
Title := Vtitle[i];
XLabelsSource := Vlabel;
YValues.ValueSource := VY[i];
end;
end; //园形比例图
if VType = 'TPieSeries' then
begin
Vseries := TPieSeries.Create(DBChartPie);
With Vseries do
begin
ParentChart := DBChartPie;
Marks.Style := smsValue;
DataSource := VDataSet;
Title := Vtitle[i];
XLabelsSource := Vlabel;
YValues.ValueSource := VY[i];
if Not DBChartPie.Visible then
begin
DBChartPie.Visible := True;
DBChartPie.Align := alClient;
end;
end;
end;