zoukankan      html  css  js  c++  java
  • FR报表 FileName

    在设计或者打印预览时,如果设置了FileName,可能反而出错。

    procedure TfrxReport.ShowPreparedReport;
    var
      WndExStyles: Integer;
    begin
      FPreviewForm := nil;
      if FPreview <> nil then
      begin
        FPreview.Init(Self, FPreviewPages); //进入
    //    FPreview.FReport := Self;
    //    FPreview.FPreviewPages := FPreviewPages;
    //    if not FPreview.Init then
    //      FPreview.AddPreviewTabOrSwitch(Report, '', '', False);
      end
      else
      begin
        FPreviewForm := TfrxPreviewForm.Create(Application);
        with TfrxPreviewForm(FPreviewForm) do
        begin
          Preview.FReport := Self;
          Preview.FPreviewPages := FPreviewPages;
    function TfrxPreview.Init(aReport: TfrxReport; aPrevPages: TfrxCustomPreviewPages): Boolean;
    begin
      Result := False;
      if FCalledFromPreview Then Exit;
      Report := aReport;
      PreviewPages := aPrevPages;
      if FInitialized then
        if EachReportInTab then
        begin
          AddPreviewTabOrSwitch(Report, '', '', False);
          Exit;
        end;
    
      if Parent is TfrxPreviewForm then
        FPreviewForm := TForm(Parent);
    
      FWorkspace.PreviewPages := PreviewPages;
      FThumbnail.PreviewPages := PreviewPages;
      TextFound := False;
      FWorkspace.FLastFoundPage := 0;
      LastFoundRecord := -1;
      FAllowF3 := False;
      if not FInitialized then
      begin
        if Report.FileName <> '' then
          AddPreviewTab(Report, ExtractFileName(Report.FileName))  //这里
        else
          AddPreviewTab(Report, Report.ReportOptions.Name);
      end
      else
      begin
    function ExtractFileName(const FileName: string): string;
    var
      I: Integer;
    begin
      I := LastDelimiter(PathDelim + DriveDelim, FileName);//这里
      Result := Copy(FileName, I + 1, MaxInt);
    end;
    function LastDelimiter(const Delimiters, S: string): Integer;
    var
      P: PChar;
    begin
      Result := Length(S);
      P := PChar(Delimiters);
      while Result > 0 do
      begin
        if (S[Result] <> #0) and (StrScan(P, S[Result]) <> nil) then//这里
          Exit;
        Dec(Result);
      end;
    end;

     奇怪的是单独 调用 

    ExtractFileName ,LastDelimiter
    不会报错。
  • 相关阅读:
    第四百八十天 how can I 坚持
    第四百七十九天 how can I 坚持
    第四百七十八天 how can I 坚持
    第四百七十七天 how can I 坚持
    第四百七十六天 how can I 坚持
    《Java基础知识》JDK安装(Linux)
    《Java周边》vue开发环境搭建(windows)
    《Java Spring框架》Spring切面(AOP)配置详解
    《Java知识应用》Java读写DBF文件
    《Java知识应用》Java发送邮件(QQ,163)
  • 原文地址:https://www.cnblogs.com/CodeGear/p/4584353.html
Copyright © 2011-2022 走看看