FRレポートFileName

6707 ワード

プレビューのデザインや印刷時に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