各位大侠 Delphi中report machine报表如何对Tchart的Serial赋值 急!急!急!急!急!送分

解决方案 »

  1.   

    拋磚引玉......
    procedure TRES_HR_AUDIT_F.cxButton3Click(Sender: TObject);
    var
      iLoop:Integer;
    begin
      inherited;
      if (Trim(cxDateEdit3.Text)='') then
      begin
        MessageDlg('操作提示:查詢的出勤日期不能為空!',mtWarning,[mbOK],0);
        Exit;
      end;
      if (Trim(cxDateEdit3.Text)<>'') then
      begin
        Series1.Clear;
        Chart1.Title.Text.Text:='出勤曲線圖';
        qry_chart.Close;
        qry_chart.SQL.Clear;
        qry_chart.SQL.Add('  select rq,bmmc,count(1)as cqrs,sum(datediff(mi,''00:00:00'',convert(varchar(20),gzsj))/60.0)as sshr from RES_KQRB  where rq='''+ FormatDateTime('yyyy/mm/dd',cxDateEdit3.Date)+''' and gzsj is not null group by rq,bmmc');
        qry_chart.Open;
        qry_chart.First;
        for iLoop:=0 to qry_chart.RecordCount -1 do
        begin
          Series1.Add(qry_chart.FieldValues['cqrs'],VarToStr(qry_chart.FieldValues['bmmc']));
          qry_chart.Next;
        end;
      end;
    end;
      

  2.   

    你需要在界面上放置RMDBChartObject1组件,然后再模板中放置chart组件,双击即可设置其属性
      

  3.   

    给你点参考代码    Self.RMReport1.LoadFromFile(path+'tl.rmf');
        (self.RMReport1.FindObject('chart1') as TRMChartView).Chart.MarginBottom:=8;
        se1:=TBarSeries.Create(Self);
        se1.Name:='series1';
        se1.ParentChart:=(self.RMReport1.FindObject('chart1') as TRMChartView).Chart;
        (self.RMReport1.FindObject('chart1') as TRMChartView).Chart.Title.Text.Clear;
        s:='泰山供电部'+IntToStr(year)+'年'+inttostr(mon)+'月份城网异常故障比例图';
        (self.RMReport1.FindObject('chart1') as TRMChartView).Chart.Title.Text.Add(s);
        se1.Marks.Style:=smsValue;
        se1.ShowInLegend:=False;
        se1.ValueFormat:='0%';    se1.Add(zrr1,'鸟害',clRed);
        se1.Add(zrr2,'风挂'+#13+'异物',clBlue);
        se1.Add(zrr3,'雷击断线'+#13+'设备损坏',clPurple);
        se1.Add(wll,'外力'+#13+'破坏',clSkyBlue);
        se1.Add(btt1,'瓷瓶击'+#13+'穿闪络',clMoneyGreen);
        se1.Add(btt2,'引线烧'+#13+'断断线',clNavy);
        se1.Add(btt3,'开关刀闸'+#13+'附属设备',clYellow);
        se1.Add(btt4,'电缆及'+#13+'其附件',clGreen);
        se1.Add(yhh,'用户设'+#13+'备故障',cl3DLight);
        se1.Add(ychh,'查无'+#13+'异常',clMaroon);
        (self.RMReport1.FindObject('chart1') as TRMChartView).Chart.AddSeries(se1);
        (self.RMReport1.FindObject('memo23') as TRMMemoView).Memo.Text:=s;    (self.RMReport1.FindObject('memo13') as TRMMemoView).Memo.Text:=IntToStr(zrr1)+'%';
        (self.RMReport1.FindObject('memo14') as TRMMemoView).Memo.Text:=IntToStr(zrr2)+'%';
        (self.RMReport1.FindObject('memo15') as TRMMemoView).Memo.Text:=IntToStr(zrr3)+'%';
        (self.RMReport1.FindObject('memo16') as TRMMemoView).Memo.Text:=IntToStr(wll)+'%';
        (self.RMReport1.FindObject('memo17') as TRMMemoView).Memo.Text:=IntToStr(btt1)+'%';
        (self.RMReport1.FindObject('memo18') as TRMMemoView).Memo.Text:=IntToStr(btt2)+'%';
        (self.RMReport1.FindObject('memo19') as TRMMemoView).Memo.Text:=IntToStr(btt3)+'%';
        (self.RMReport1.FindObject('memo20') as TRMMemoView).Memo.Text:=IntToStr(btt4)+'%';
        (self.RMReport1.FindObject('memo21') as TRMMemoView).Memo.Text:=IntToStr(yhh)+'%';
        (self.RMReport1.FindObject('memo22') as TRMMemoView).Memo.Text:=IntToStr(ychh)+'%';
      

  4.   

    我也是針對chart而言寫了一段測試代碼,以拋磚引玉;請你尊重別人,不要動不動就發表評論、攻擊別人...
      

  5.   

    我再貼一段ReportMachine之RMChartObject組件應用代碼,免得“拋磚引不出玉”~~~$DEFINE   NoRmComPass} 
    unit   PrintForm; interface uses 
        Windows,   Messages,   SysUtils,   Classes,   Graphics,   Controls,   Forms,   Dialogs, 
        dxDBGrid,   RM_class,   RM_Desgn,   RM_dset,   RM_dbset,   dxEditor,   StdCtrls, 
        dxCntner,   dxEdLib,   dxDBELib,   dxTL,   dxDBCtrl,   ExtCtrls,   dxExEdtr,   RM_shape, 
        dxDBTL,   KsSkinLabels,   RM_e_csv,   RM_e_txt,   RM_chart,   RM_FormReport,   Series; const 
        SHOW_REPORT   =   1; 
        PRINT_REPORT   =   2; 
        DESIGN_REPORT   =   3; 
        INITI_REPORT   =   4; type 
        TfrmPrintForm   =   class(TForm) 
            rmReport:   TRMReport; 
            RMDesigner1:   TRMDesigner; 
            RMDBDataSet1:   TRMDBDataSet; 
            RMTextExport1:   TRMTextExport; 
            RMCSVExport1:   TRMCSVExport; 
            RMChartObject1:   TRMChartObject; 
            RMChartObject2:   TRMChartObject; 
        private 
            {   Private   declarations   } 
            BandReportTitle:   TRMBandView; 
            BandPageHeader:   TRMBandView; 
            BandDetail:   TRMBandView; 
            BandDetailChart:   TRMBandView; 
            BandPageFooter:   TRMBandView; 
            BandReportSummary:   TRMBandView;         lTitleY,   lGridY,   lGridH:   Integer; 
            frmForm1:   TForm; 
            Page1:   TRMPage; 
            sReportFile,   sFile:   string; 
            lTitle,   lMode:   Integer; 
            bPrintBar,   bReturn,   bNewReport:   Boolean; 
            lPrintChartType:   Integer; 
            sChart,   sPrintChartX,   sPrintChartY,   sChartNameX,   sChartNameY:   string; 
            procedure   PrintPrepare;   //准备打印 
            function   PrintBegin:   Boolean;   //开始打印         procedure   LoadBand;   //读入页边条 
            procedure   LoadControl(Control:   TControl);   //读入Control 
            procedure   LoadTopControl(Control:   TControl);   //读入最上面Control 
            procedure   LoadBottomControl(Control:   TControl);   //读入最下面Control 
            procedure   LoadOldControl(Control:   TControl);   //读入已存在Control         procedure   LoadDBGrid(Grid1:   TdxDBGrid);   //读入DBGrid 
            procedure   SetGridHeader(Grid1:   TdxDBGrid);   //设置表头 
            procedure   SetGridBody(Grid1:   TdxDBGrid);   //设置表体 
            procedure   SetGridSummary(Grid1:   TdxDBGrid);   //设置表尾         procedure   LoadDBTree(Tree1:   TdxDBTreeList);   //读入DBTree 
            procedure   SetTreeHeader(Tree1:   TdxDBTreeList);   //设置表头 
            procedure   SetTreeBody(Tree1:   TdxDBTreeList);   //设置表体 
            procedure   SetTreeSummary(Tree1:   TdxDBTreeList);   //设置表尾         function   LoadReportFile:   Boolean;   //读报表文件 
            function   SaveReportFile:   boolean;   //写报表文件         procedure   SetTitle;   //设置标题 
            function   GetAlignment(Align:   TAlignment):   TRMAlignment; 
            function   GetBandSub(Grid1:   TCustomdxDBTreeListControl;   Index:   Integer): 
                Integer; 
            function   ViewAssign(m1:   TRMMemoView;   Control:   TControl):   Boolean; 
            //为各种控件赋值 
            function   ShapeViewAssign(s1:   TRMShapeView;   Control:   TControl):   Boolean; 
            //为各种Shape控件赋值 
            function   PicViewAssign(p1:   TRMPictureView;   Control:   TControl):   Boolean; 
            //为各种图象控件赋值 
            function   GetPoint(Control:   TControl):   TPoint; 
            procedure   SetChart; 
        public 
            {   Public   declarations   } 
        end; function   WinPrint(Form1:   TForm;   lTitle1,   lMode1:   Integer;   sFile1,   sChart1: 
        string):   Boolean; 

        参数(   要打印Form;标题类型(0=空,1=中间,2=左边);打印类型(显示,打印,编辑,初始化);文件ID   ) 
        打印类型(显示=SHOW_REPORT,打印=PRINT_REPORT,编辑=DESIGN_REPORT,初始化=INITI_REPORT) 

    implementation uses   SysPublic; {$R   *.DFM} 
    const 
        C_LEFT   =   20; 
        C_HEIGHT   =   20; //打印窗体 
    function   WinPrint(Form1:   TForm;   lTitle1,   lMode1:   Integer;   sFile1,   sChart1: 
        string):   Boolean; 
    var 
        frmPrintForm:   TfrmPrintForm; 
    begin 
        frmPrintForm   :=   TfrmPrintForm.Create(Application); 
        with   frmPrintForm   do 
        begin 
            frmForm1   :=   Form1; 
            lMode   :=   lMode1; 
            lTitle   :=   lTitle1; 
            sFile   :=   sFile1; 
            sChart   :=   sChart1; 
            PrintPrepare; 
            PrintBegin; 
            Result   :=   bReturn; 
            {Free;} 
        end; 
    end; procedure   TfrmPrintForm.PrintPrepare; 
    var 
        i:   Integer; 
    begin 
        lPrintChartType   :=   -1; 
        sPrintChartX   :=   ' '; 
        sPrintChartY   :=   ' '; 
        sChartNameX   :=   ' '; 
        sChartNameY   :=   ' ';     lPrintChartType   :=   StrToInt2(GetCommaStr(sChart,   1)); 
        sPrintChartX   :=   GetCommaStr(sChart,   2); 
        sPrintChartY   :=   GetCommaStr(sChart,   3); 
        if   (sPrintChartX   =   ' ')   or   (sPrintChartY   =   ' ')   then 
            lPrintChartType   :=   -1;   //不是图形 
        if   lPrintChartType   > =   0   then 
            bNewReport   :=   True;     LoadReportFile; 
        LoadBand; 
        SetTitle;     with   frmForm1   do 
        begin 
            for   i   :=   0   to   ComponentCount   -   1   do 
            begin 
                if   (TControl(Components[i]).Visible)   and   (Components[i]   is 
                    TCustomdxTreeList)   then 
                begin 
                    lGridY   :=   GetPoint(TControl(Components[i])).Y; 
                    lGridH   :=   TdxDBGrid(Components[i]).RowHeight; 
                end; 
            end; 
            for   i   :=   0   to   ComponentCount   -   1   do 
                if   (TControl(Components[i]).Visible)   and   (Components[i]   is   TControl)   then 
                begin 
                    if   bNewReport   then 
                        LoadTopControl(TControl(Components[i])) 
                    else 
                        LoadOldControl(TControl(Components[i])); 
                end; 
            for   i   :=   0   to   ComponentCount   -   1   do 
                if   (TControl(Components[i]).Visible)   and   (Components[i]   is   TdxDBGrid)   then 
                    LoadDBGrid(TdxDBGrid(Components[i])); 
            for   i   :=   0   to   ComponentCount   -   1   do 
                if   (TControl(Components[i]).Visible)   and   (Components[i]   is   TdxDBTreeList)   then 
                    LoadDBTree(TdxDBTreeList(Components[i])); 
            for   i   :=   0   to   ComponentCount   -   1   do 
            begin 
                if   (TControl(Components[i]).Visible)   and   (Components[i]   is   TControl)   then 
                begin 
                    if   bNewReport   then 
                        LoadBottomControl(TControl(Components[i])) 
                    else 
                        LoadOldControl(TControl(Components[i])); 
                end; 
            end; 
            if   bNewReport   then 
                for   i   :=   0   to   ComponentCount   -   1   do 
                begin 
                    if   (sChartNameX   <>   ' ')   and   (sChartNameY   <>   ' ')   then 
                    begin 
                        SetChart; 
                        Break; 
                    end; 
                end; 
        end; 
    end; 
      

  6.   

    procedure   TfrmPrintForm.SetChart; 
    var 
        lBY,   lBH:   Integer; 
        cv:   TRMChartView; 
    begin 
        //饼图 
        BandPageHeader.Visible   :=   False; 
        BandDetail.dy   :=   0; 
        BandReportSummary.Visible   :=   False; 
        lBY   :=   BandReportSummary.y   +   BandReportSummary.dy   +   C_HEIGHT; 
        lBH   :=   300; 
        BandDetailChart   :=   TRMBandView(RMCreateObject(gtBand,   ' ')); 
        BandDetailChart.BandType   :=   btMasterData; 
        BandDetailChart.Name   :=   'BandDetailChart '; 
        Page1.Objects.Add(BandDetailChart); 
        BandDetailChart.SetBounds(0,   lBY,   0,   lBH); 
        {$IFNDEF   NoRmComPass} 
        cv   :=   TRMChartView.Create; 
        cv.Name   :=   'ChartView '; 
        cv.SetBounds(C_LEFT,   lBy   +   C_HEIGHT,   600,   lBH   -   C_HEIGHT); 
        cv.AddSeries; 
        cv.Series[0].ChartOptions.ShowMarks   :=   True; 
        cv.Series[0].ChartOptions.Colored   :=   True; 
        cv.Series[0].ChartOptions.ChartType   :=   lPrintChartType; 
        cv.Series[0].ChartOptions.MarksStyle   :=   3; 
        cv.Series[0].LegendObj   :=   sChartNameX; 
        cv.Series[0].ValueObj   :=   sChartNameY; 
        Page1.Objects.Add(cv); 
        {$ELSE}     {$ENDIF} 
    end; function   TfrmPrintForm.PrintBegin:   Boolean; 
    begin 
        Result   :=   True; 
        case   lMode   of 
            SHOW_REPORT:   rmReport.ShowReport; 
            PRINT_REPORT:   rmReport.PrintReport; 
            DESIGN_REPORT:   rmReport.DesignReport; 
            INITI_REPORT:   rmReport.DesignReport; 
        else 
            Result   :=   False; 
        end; 
        if   Result   <>   False   then 
            SaveReportFile; 
    end; procedure   TfrmPrintForm.LoadBand; 
    begin 
        if   bNewReport   then 
        begin 
            rmReport.Pages.Clear; 
            rmReport.Pages.Add; 
            Page1   :=   rmReport.Pages[0]; 
            BandReportTitle   :=   TRMBandView(RMCreateObject(gtBand,   ' ')); 
            BandReportTitle.BandType   :=   btReportTitle; 
            BandReportTitle.Name   :=   'BandReportTitle '; 
            BandReportTitle.SetBounds(0,   C_HEIGHT,   0,   0); 
            Page1.Objects.Add(BandReportTitle);         BandPageHeader   :=   TRMBandView(RMCreateObject(gtBand,   ' ')); 
            BandPageHeader.BandType   :=   btPageHeader; 
            BandPageHeader.Name   :=   'BandPageHeader '; 
            Page1.Objects.Add(BandPageHeader); 
            BandPageHeader.SetBounds(0,   C_HEIGHT   *   2,   0,   0);         BandDetail   :=   TRMBandView(RMCreateObject(gtBand,   ' ')); 
            BandDetail.BandType   :=   btMasterData; 
            BandDetail.Name   :=   'BandDetail '; 
            Page1.Objects.Add(BandDetail); 
            BandDetail.SetBounds(0,   C_HEIGHT   *   3,   0,   0);         BandPageFooter   :=   TRMBandView(RMCreateObject(gtBand,   ' ')); 
            BandPageFooter.BandType   :=   btPageFooter; 
            BandPageFooter.Name   :=   'BandPageFooter '; 
            Page1.Objects.Add(BandPageFooter); 
            BandPageFooter.SetBounds(0,   C_HEIGHT   *   4,   0,   0);         BandReportSummary   :=   TRMBandView(RMCreateObject(gtBand,   ' ')); 
            BandReportSummary.BandType   :=   btReportSummary; 
            BandReportSummary.Name   :=   'BandReportSummary '; 
            Page1.Objects.Add(BandReportSummary); 
            BandReportSummary.SetBounds(0,   C_HEIGHT   *   5,   0,   0); 
        end 
        else 
        begin 
            Page1   :=   rmReport.Pages[0]; 
            BandReportTitle   :=   TRMBandView(page1.FindObject( 'BandReportTitle ')); 
            BandPageHeader   :=   TRMBandView(page1.FindObject( 'BandPageHeader ')); 
            BandDetail   :=   TRMBandView(page1.FindObject( 'BandDetail ')); 
            BandPageFooter   :=   TRMBandView(page1.FindObject( 'BandPageFooter ')); 
            BandReportSummary   :=   TRMBandView(page1.FindObject( 'BandReportSummary ')); 
        end; 
    end; function   TfrmPrintForm.LoadReportFile:   Boolean; 
    var 
        sDir:   string; 
    begin 
        Result   :=   True; 
        bNewReport   :=   False; 
        sReportFile   :=   ' '; 
        sDir   :=   Trim(ExtractFilePath(Application.ExeName))   +   'Report '; 
        if   not   DirectoryExists(sDir)   then 
        begin 
            if   not   CreateDir(sDir)   then 
            begin 
                raise   Exception.Create( '不能新建目录,请手工新建这目录。 '   +   #13   +   sDir); 
                Result   :=   false; 
            end; 
        end; 
        if   Result   <>   False   then 
        begin 
            if   lPrintChartType   =   -1   then 
                sReportFile   :=   sDir   +   '\ '   +   sFile   +   '.Rep ' 
            else 
                sReportFile   :=   sDir   +   '\ '   +   sFile   +   '图形.Rep '; 
        end; 
        if   (not   FileExists(sReportFile))   or   (lMode   =   INITI_REPORT)   then 
            bNewReport   :=   True 
        else 
            if   not   rmReport.LoadFromFile(sReportFile)   then 
                bNewReport   :=   True;     rmReport.FileName   :=   sReportFile; 
    end;