• 使用FastReport的UserDataSet时候,遇到TfrxMemoView内容过多而打印不全的问题


    解决方案很简单,就是把Memo所在的Band勾选Stretch就行了。另外还可勾选StartNewPage。

    至于UserDataSet本身,猜测就是人为的构造一个类似数据库的集合,大致使用代码如下:

    var
        MyData: array[1..100, 1..20] of String;
        MasterNo: Integer;
    
    procedure TFormMainForm.ExporterPDF(Sender: TObject);
    var
        strList : TStringList;
        i, No : integer;
        list : TStringList;
        ttt : IXMLTaskType;
        strFilePath : String;
        oExportfilter : TfrxCustomExportFilter;
    begin
        nPath := 0;
        nFile := 0;
        nExclu := 0;
        // 使用数据填充数组,构造一个类似于数据库的内容
        for i:=0 to XMLConfig.Tasks.Count-1 do
        begin
            No := i+1;       
            MyData[No][1] := ttt.Nom;
            MyData[No][2] := '中午12点'; 
            MyData[No][3] := '晚上9点';
        end;
    
        SaveDialog1.InitialDir:=GetShellFolders('Personal');    
        SaveDialog1.Filter := 'PDF file|*.pdf';
        SaveDialog1.DefaultExt := 'pdf';
        if SaveDialog1.Execute then
        begin
            strFilePath := SaveDialog1.FileName;    
            oExportfilter := TfrxCustomExportFilter(frxPDFExport1);
            oExportFilter.ShowDialog := False;
            oExportFilter.FileName := strFilePath;
    
            frxReport1.PrepareReport(True);
            frxReport1.Export(oExportFilter);
            ShellExecute(Self.Handle, 'open', PChar(strFilePath),'', '',SW_SHOW);
            //oExportfilter.Free;
        end;
        exit;
    
        frxReport1.PrepareReport();
        frxReport1.ShowPreparedReport();
        frxReport1.Print;
        frxReport1.ShowReport();
    end;
    
    procedure TFormMainForm.frxUserDataSet1GetValue(const VarName: String;
      var Value: Variant);
    begin
        if VarName = 'fname' then Value := MyData[MasterNo][1]
        else if VarName = 'fstarttime' then Value := MyData[MasterNo][2]
        else if VarName = 'fstoptime' then Value := MyData[MasterNo][3]
    end;
    
    procedure TFormMainForm.frxUserDataSet1First(Sender: TObject);
    begin
      MasterNo := 1;
    end;
    
    procedure TFormMainForm.frxUserDataSet1Next(Sender: TObject);
    begin
      Inc(MasterNo);
    end;
    
    procedure TFormMainForm.frxUserDataSet1Prior(Sender: TObject);
    begin
      Dec(MasterNo);
    end;
    
    procedure TFormMainForm.frxUserDataSet1CheckEOF(Sender: TObject;
      var Eof: Boolean);
    begin
      Eof := MasterNo > XMLConfig.Tasks.Count;//High(MyData);
    end;
  • 相关阅读:
    Java中String、StringBuffer和StringBuilder的区别
    Map集合学习
    Set集合学习
    List集合学习
    常用集合类简介及线程安全和非线程安全的集合对象
    JQuery入门
    原生Ajax使用
    JavaScript闭包
    Demo:servlet实现图片的上传
    Android Handler 内存泄漏问题
  • 原文地址:https://www.cnblogs.com/findumars/p/4917985.html
Copyright © 2020-2023  润新知