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
    不会报错。
  • 相关阅读:
    javascript基础
    DOM操作
    js各种弹框
    ZeroMQ,史上最快的消息队列(转)
    mysql 存储过程
    java数据结构与算法(二)----栈和队列
    java数据结构与算法(一)----数组简单排序
    软件开发流程(转)
    Digest [information value filtering]
    Facebook 的系统架构(转)
  • 原文地址:https://www.cnblogs.com/CodeGear/p/4584353.html
Copyright © 2011-2022 走看看