Einzelnen Beitrag anzeigen

TUX_der_Pinguin

Registriert seit: 1. Jun 2005
Ort: Anholt (NRW)
608 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: RaveReport Error #40 Boolean expression expected

  Alt 6. Feb 2014, 09:53
So ich habe jetzt noch mal ein kleines Tool gebastelt um alles andere von dem eigentlichen Projekt auszuschließen.

Ich habe einen einfachen Report erstellt, eine Region mit einem Databand auf den wird dann zur Laufzeit ein DataText Objekt plaziert.
Und mit Hilfe eines Ereignis welches ebenfalls zur Laufzeit erstellt wird soll der Text eingefärbt werden.

Durch den Klick auf den Button wird der Report aufgerufen und als PDF Datei exportiert und anschließend wird das PDF geöffnet.

Und wieder kann ich dieses nur einmal machen, beim zweiten Versuch erhalte ich eine Fehlermeldung dies mal ist es jedoch "General Compiler Error".
Das liegt aber wohl nur daran das ich Integer an den Report übergebe und keine Strings mehr, bei Strings würde ich wieder die
ursprüngliche Fehlermeldung "Error #40 Boolean expression expected" erhalten.

Delphi-Quellcode:
procedure TForm2.Button1Click(Sender: TObject);
var
  Report: TRaveReport;
  Page: TRavePage;
  DataBand: TRaveDataBand;
  DataView: TRaveDataView;
  DataText: TRaveDataText;
  Event: TRaveSimpleEvent;

begin
  //Rave für PDF Export vorbereiten...
  RvSystem.DefaultDest := rdFile;
  RvSystem.DoNativeOutput := False;
  RvSystem.RenderObject := RvRenderPDF;
  RvSystem.OutputFileName := '.\test.pdf';
  RvSystem.SystemSetups := RvSystem.SystemSetups - [ssAllowSetup];
  RvSystem.SystemOptions := RvSystem.SystemOptions - [soShowStatus];

  //Report öffnen
  RvProject.ProjectFile := '.\test.rav';
  RvProject.Open;

  //Komponenten ermitteln
  Report := RvProject.ProjMan.FindRaveComponent('Test', nil) as TRaveReport;
  Page := RvProject.ProjMan.FindRaveComponent('Page1', Report) as TRavePage;
  DataBand := RvProject.ProjMan.FindRaveComponent('DataBand1', Page) as TRaveDataBand;
  DataView := RvProject.ProjMan.FindRaveComponent('DataView1', Page) as TRaveDataView;
  CreateFields(DataView, nil, nil, True);

  //Feld erstellen
  DataText := DataBand.CreateChild(TRaveDataText, 'dtData') as TRaveDataText;
  DataText.DataField := 'DataFeld';
  DataText.DataView := DataView;
  DataText.Top := 0;
  DataText.Left := 0 / RvProject.ProjMan.UnitsFactor;
  DataText.Width := 15 / RvProject.ProjMan.UnitsFactor;

  //Ereignis erstellen
  Event := TRaveSimpleEvent.Create;
  Event.Name := 'DataFeldOnBeforePrint';
  Event.ModuleOwner := Page;
  Event.Sender := DataText;
  Event.Owner := DataText;
  Event.Body := 'if DataView1Color.AsInteger <> '+IntToStr(clBlack)+' then'+
                ' Self.Color := DataView1Color.AsInteger;'+
                'end;';

  DataText.OnBeforePrint := Event;

  //Events kompilieren..
  RvProject.ProjMan.Compile;

  //Report ausführen...
  RvProject.ExecuteReport('Test');

  //Report schließen...
  RvProject.Close;

  ShellExecute(Application.Handle, 'open', PWideChar('.\test.pdf'), nil, nil, SW_NORMAL);

end;

Der Quellcode, kompilierte Exe und die Report Datei habe ich angehängt.
Angehängte Dateien
Dateityp: zip Rave Test.zip (744,3 KB, 1x aufgerufen)
  Mit Zitat antworten Zitat