一般是直接把控件放到窗体就可以实现了,现在想在代码中动态创建相关的控件,
打印预览的界面可以出来了,但报表里的内容怎么也加不进去,特别是数据库的,请高手指点一下。

解决方案 »

  1.   

    procedure TForm2.btn1Click(Sender: TObject);
    var
      ppreport:TppReport;
      ppdesign:TppDesigner;
      flag:Integer;
      reportname:string;
    begin
      reportname:=edt1.Text;
      flag:=0;
       try
            DSreport.DataSet.Active:=false;
            DSreport.DataSet.Active:=true;  // ´Ë´¦ÓÃÓڰѱ¨±íÊý¾ÝÔ´Ö¸Õ븴λ,ÒÔ±ãºóÃæ²éÕÒ±¨±í;
            //´´½¨±¨±í¿Ø¼þ²¢ÉèÖñ¨±í¿Ø¼þÊôÐÔ;
            ppReport:=TppReport.Create(self);
          with ppreport do
            begin
              AutoStop := False;
              DataPipeline := ppDBpipeData; //×ÊÁϹܵÀ;
              Template.DatabaseSettings.DataPipeline := ppDBpipeREport;//±¨±í¹ÜµÀ;
              Template.DatabaseSettings.NameField := 'item_Name';   //±¨±íÃû³Æ´æ·Å×Ö¶Î;
              Template.DatabaseSettings.TemplateField := 'Template'; //±¨±í×Ö¶ÎÃû³Æ;
              Template.DatabaseSettings.Name := reportname; //±¨±íÃû³Æ;
              Template.SaveTo :=stDatabase;    //±¨±í´æ·Å·½Ê½,ÕâÀïÉèÖÃΪÊý¾Ý¿â,Ò²¿ÉÒÔ±£´æΪÎļþ;
              AllowPrintToArchive := True;  //ÔÊÐí±¨±í±£´æΪÎļþ;
              AllowPrintToFile := True;     //ÔÊÐí´òÓ¡µ½Îĵµ;
              DeviceType := 'Screen' ;
              OutlineSettings.CreateNode := True  ;
              OutlineSettings.CreatePageNodes := True;
              OutlineSettings.Enabled := True;
              OutlineSettings.Visible := False ;
              TextSearchSettings.DefaultString := '<&Ecirc;&auml;&Egrave;&euml;&sup2;é&Otilde;&Ograve;&micro;&Auml;&Icirc;&Auml;±&frac34;>' ;
              TextSearchSettings.Enabled := True ;
             end;
             ppdesign:=TppDesigner.Create(self);
            while not Dsreport.DataSet.Eof do
            begin
              //&sup2;é&Otilde;&Ograve;±¨±í&Icirc;&Auml;&frac14;&thorn;;
              if Dsreport.DataSet.FieldByName('item_Name').AsString=reportname then
              begin
                Flag:=1;
                Break;
              end;
              Dsreport.DataSet.Next;
            end;
            if Flag=0 then
                begin
                  if MessageDlg('&micro;±&Ccedil;°±¨±í&Atilde;&raquo;&Oacute;&ETH;&iquest;&Eacute;&Oacute;&Atilde;&Auml;&pound;°&aring;&pound;&not;&Ecirc;&Ccedil;·&ntilde;&acute;&acute;&frac12;¨?',mtConfirmation, [mbYes, mbNo], 0) <> mrYes then
                    exit;
                end
            else
            begin
              //&Egrave;&ccedil;&sup1;&ucirc;&Otilde;&Ograve;&micro;&frac12;&Aacute;&Euml;±¨±í&frac34;&Iacute;&acute;&Oacute;&Ecirc;&yacute;&frac34;&Yacute;&iquest;&acirc;&Ouml;&ETH;&micro;&frac14;&Egrave;&euml;±¨±í;
              ppreport.Template.LoadFromDatabase;
            end;
               with ppDesign do
                begin
                    AllowDataSettingsChange := True;
                    Caption := '&Iacute;¨&Oacute;&Atilde;±¨±í&Eacute;è&frac14;&AElig;&AElig;÷';
                    DataSettings.DatabaseName := 'SCNN1';
                    DataSettings.SessionType := 'dbExpressSession';
                    DataSettings.AllowEditSQL := True;
                    DataSettings.CollationType := ctANSI;
                    DataSettings.DatabaseType := dtMSSQLServer;
                    //DataSettings.GuidCollationType := gcMSSQLServer;
                    DataSettings.IsCaseSensitive := True;
                    DataSettings.SQLType := sqSQL1;
                    Position := poScreenCenter ;
                    RAPInterface := [riNotebookTab];
                    Report := ppReport;
                  end;
              ppDesign.ShowModal;  //&Iuml;&Ocirc;&Ecirc;&frac34;±¨±í&Eacute;è&frac14;&AElig;&AElig;÷&acute;°&iquest;&Uacute;;
             
       finally
         ppdesign.Free; //&Ecirc;&Iacute;·&Aring;±¨±í&Eacute;è&frac14;&AElig;&AElig;÷;
         ppreport.Free; //&Ecirc;&Iacute;·&Aring;±¨±í&iquest;&Oslash;&frac14;&thorn;;
       end;end;