Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Bitmap in Rave Report ansprechen (https://www.delphipraxis.net/125936-bitmap-rave-report-ansprechen.html)

little_budda 15. Dez 2008 09:36


Bitmap in Rave Report ansprechen
 
Hallo,

ich habe eine Grafik und einen Text in einem Rave-Report.
Den Text kann ich ansprechen über "SetParam".
Klappt einwandfrei.
Aber das zuweisen der Grafik klappt nicht.
Delphi-Quellcode:
  RvProject1.Open;
  RvProject1.SetParam('Label_001', 'AusgabeMuster');
  RvProject1.SetParam('barCodeImage', imgBarCode.Picture.Bitmap); // <- Klappt nicht
  RvProject1.Execute;
Was mache ich falsch?
Kann ich eine Grafik nicht über SetParam ansprechen?

Gruß Holger.
:gruebel:

merlin17 16. Dez 2008 11:27

Re: Bitmap in Rave Report ansprechen
 
Holger,

du musst noch ein BeforePrint - Event im RaveSkript einfügen;


Bitmap1.FileLink := RaveProject.GetParam('barCodeImage');


that's all



:-) thomas, TeamNevrona (nach langer zeit wieder etwas zeit für die DP ...)

little_budda 16. Dez 2008 11:37

Re: Bitmap in Rave Report ansprechen
 
Hallo,

ich habe jetzt folgendes eingefügt
Delphi-Quellcode:
procedure Tfrm_main.RvSystem1BeforePrint(Sender: TObject);
begin
  imgBarCode.FileLink := RvProject1.GetParam('barCodeImage');

  // imgBarCode = Timage auf der Form
  // 'barCodeImage' = Variable im Rave Report

end;
Aber ".FileLink"kennt meine IDE nicht

merlin17 16. Dez 2008 11:40

Re: Bitmap in Rave Report ansprechen
 
in der RAVE-IDE nicht in Delphi...



{ Event for Bitmap1.OnBeforePrint }

function Bitmap1_OnBeforePrint(Self: TRaveBitmap);
begin
Bitmap1.FileLink := RaveProject.GetParam('barCodeImage');
end;

:-) thomas, TeamNevrona

little_budda 16. Dez 2008 11:52

Re: Bitmap in Rave Report ansprechen
 
Oops.
Sorry.

Habe ich jetzt als Event für die Bitmap Komponente eingefügt.
Aber -> Es erscheint kein Bild in meinem Report.

Wundert mich eigentlich auch nicht.
Woher weiß der BeforePrintEvent denn welche Grafik er nehmen soll?
Ich verstehe den Zusammenhang noch nicht.

:gruebel:

[Edit]
Als Übergabe vom Projekt kommt bisher
Delphi-Quellcode:
  RvProject1.SetParam('barCodeImage', imgBarCode.Picture.Bitmap);
Das kann er nicht kompalieren weil ich mit SetParam nur Strings übergeben kann.
imgBarCode.Picture.Bitmap = TBitmap
[/Edit]

merlin17 16. Dez 2008 12:14

Re: Bitmap in Rave Report ansprechen
 
okay, habe ich etwas falsch gelesen ....

der weg über die CustomConnection

Connection.WriteField('FieldGrafik', dtGraphic, 30,'','');


oder der weg über RANT:

Delphi-Quellcode:

var
  MeinBitmap: TRaveBitmap;
  MeineSeite: TRavePage;
begin
 with RvProject1.ProjMan do
  begin
    MeineSeite := FindRaveComponent('Report1.Page1', nil) as TRavePage;
    MeinBitmap := FindRaveComponent('Bitmap1', MeineSeite) as TRaveBitmap;
    MeinBitmap.Image.Assign(Image1.Picture.Bitmap);
  end;

  RvProject1.ExecuteReport('Report1');
:-) thomas

little_budda 16. Dez 2008 12:24

Re: Bitmap in Rave Report ansprechen
 
Der Report mag mich nicht...

Ich habe jetzt das "RANT" Beispiel eingebaut.
(Kann ich nach vollziehen, gefällt mir besser)

Er kennt die Typen "TRaveBitmap" und "TRavePage" nicht.
Unter Uses habe ich folgedes eingebunden
Delphi-Quellcode:
RpRenderPDF, RpRender, RpRenderCanvas, RpRenderPrinter, RpDefine, RpRave, RpBase, RpSystem, RpRenderPreview
In der Hilfe findet sich leider extrem wenig über Rave

merlin17 16. Dez 2008 12:47

Re: Bitmap in Rave Report ansprechen
 
uses um folgende units erweitern;

RVClass, RvProj, RVCsStd,


:-) thomas, TeamNevrona

little_budda 16. Dez 2008 13:34

Re: Bitmap in Rave Report ansprechen
 
Du bist mein Held
:hello:
Danke.Klappt.

Quake 18. Mär 2009 07:51

Re: Bitmap in Rave Report ansprechen
 
Und auch mein Held auch :hello:

merlin17 1. Apr 2009 20:47

Re: Bitmap in Rave Report ansprechen
 
:oops:

:-) thomas

HolgerCW 23. Jul 2009 15:45

Re: Bitmap in Rave Report ansprechen
 
... und jetzt auch mein Held :hello:

Glühwürmchen 26. Mai 2010 10:30

Re: Bitmap in Rave Report ansprechen
 
Gerne würde ich sagen, dass Du auch mein Held bist!
Eigentlich bist Du es ja auch, von früheren Begegnungen her, aber leider nicht in diesem Fall:

(Ich benutze D-2010 und Rave 7.7 BE)

Ich habe in "procedure TuFrmMain.TransmitBarcodeImgToRave;":
Delphi-Quellcode:
  with RvProject1.ProjMan do begin
    iErrorCode := 1;
    MeineSeite := FindRaveComponent('Report1.Page1', nil) as TRavePage;
    iErrorCode := 2;
    MeinBitmap := FindRaveComponent('Bitmap1', MeineSeite) as TRaveBitmap;
    iErrorCode := 3;
    MeinBitmap.Image.Assign(ImageBarcode.Picture.Bitmap);
  end;
Und erhalte folgenden Log-Eintrag:
Zitat:

26.05.2010 11:14:05 -8- ....TransmitBarcodeImgToRave: Exception bei Error-Code 3 (TransmitBarcodeImgToRave).
26.05.2010 11:14:05 -8- .... Exception: Zugriffsverletzung bei Adresse 005AF746 in Modul 'mMachMichFroh.exe'. Lesen von Adresse 000000F8.
ImageBarcode ist die Image-Komponente auf meinem Delphi-Form.

Die Bitmap-Komponente in Rave, wo das Bild rein soll, heißt "Code128Image" und hat als DataView "Param.Code128Image".

Das BeforePrintEvent habe ich, wie oben beschrieben als Event bei Code128Image eingefügt.

Ich steh voll auf der Leitung, was ich da verkehrt mache, kann mir jemand helfen?

-------------------
Noch eine Bemerkung am Rande:
Der Hinweis: "Nimm doch die Barcode-Komponente von Rave..." ist nicht zielführend, weil ich das Gleiche auch noch mit dem DataMatrix-Code machen muss. Dafür gibt es keine Komponente... ;-)

rawi 26. Mai 2010 13:35

Re: Bitmap in Rave Report ansprechen
 
Hallo Glühwürmchen,

Du sagtest
Zitat:

Die Bitmap-Komponente in Rave, wo das Bild rein soll, heißt "Code128Image" und hat als DataView "Param.Code128Image".
also sollte der Code (in Delphi) wie folgt aussehen
Delphi-Quellcode:
with RvProject1.ProjMan do begin
    iErrorCode := 1;
    MeineSeite := FindRaveComponent('Report1.Page1', nil) as TRavePage;
    iErrorCode := 2;
    MeinBitmap := FindRaveComponent('Code128Image', MeineSeite) as TRaveBitmap;
    iErrorCode := 3;
    MeinBitmap.Image.Assign(ImageBarcode.Picture.Bitmap);
  end;
Außerdem benötigt das Ravebitmap in diesem Fall keine Dataview. Die Bitmap wird ja über den Delphi-Code zugewiesen.

Sollte es auch dann noch Probleme geben, kannst Du es auch noch mit
Delphi-Quellcode:
MeinBitmap.Image.Assign(ImageBarcode.Picture.Graphic);
versuchen.

Zitat:

Das BeforePrintEvent habe ich, wie oben beschrieben als Event bei Code128Image eingefügt.
Das verstehe ich nicht? Was hast Du da eingefügt?

gruß rawi

Glühwürmchen 26. Mai 2010 13:43

Re: Bitmap in Rave Report ansprechen
 
Das hier:

Zitat:

in der RAVE-IDE nicht in Delphi...



{ Event for Bitmap1.OnBeforePrint }

function Bitmap1_OnBeforePrint(Self: TRaveBitmap);
begin
Bitmap1.FileLink := RaveProject.GetParam('barCodeImage');
end;

thomas, TeamNevrona
Das andere probier ich jetzt aus....


Edit: 14:50 Uhr
Beide Alternativen: "MeinBitmap.Image.Assign(ImageBarcode.Picture.Grap hic);" und "MeinBitmap.Image.Assign(ImageBarcode.Picture.Bitm ap);" verursachen nach wie vor an der gleichen Stelle die Zugriffsverletzung.

rawi 26. Mai 2010 13:56

Re: Bitmap in Rave Report ansprechen
 
Hast Du auch diese Zeile angepasst?

Zitat:

MeinBitmap := FindRaveComponent('Code128Image', MeineSeite) as TRaveBitmap;

das OnBeforePrint im Report wird dann auch nicht benötigt.

Glühwürmchen 26. Mai 2010 14:24

Re: Bitmap in Rave Report ansprechen
 
Hi rawi,

erst mal vielen Dank für Deine Mühe!

Also,
ich habe die Zeile
Zitat:

MeinBitmap := FindRaveComponent('Code128Image', MeineSeite) as TRaveBitmap;
angepasst, und mal die Zeile
Zitat:

MeinBitmap.Image.Assign(ImageBarcode.Picture.Graph ic);
verwendet und mal die Zeile
Zitat:

MeinBitmap.Image.Assign(ImageBarcode.Picture.Bitma p);
Um sicher zu gehen, habe ich im Rave-Formular eine neue Bitmap-Komponente verwendet und bei dieser das Feld Dataview leer gelassen. Selbstverständlich hat die neue Kompnente einen anderen Namen, den ich auch benutzte im Code. Außerdem habe ich das OnBeforePrint-Event entfernt.

Das Ergebnis ist jedoch immer das Gleiche: Das Bild mit dem Barcode wird nicht übertragen, ehe der Report gedruckt wird und im Logfile steht die immer gleiche Fehlermeldung.

rawi 26. Mai 2010 18:29

Re: Bitmap in Rave Report ansprechen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Glühwürmchen,

kannst Du mal anhängendes Beispiel testen. Ist allerdings mit Delphi 2010 erstellt.

Musst noch den Pfad zum Projektfile ändern!

Gruß rawi

Glühwürmchen 27. Mai 2010 19:58

Re: Bitmap in Rave Report ansprechen
 
Hallo rawi,

PERFEKT!

Es tut.
Ich kam erst heute abend dazu, Dein Beispiel auszuprobieren. Es lief auf Anhieb.

Ich verglich mit meinem Code und sah keinen Unterschied.

'Ok', dachte ich, das ist sicher irgend so eine Kleinigkeit, die ich irgendwo falsch eingestellt habe, bis ich das gefunden habe, habe ich das Projekt auch noch mal neu angelegt.

Gesagt - getan. Zwei Stunden Arbeit - dann war mein Programm so wie es sein sollte. Jetzt den Rave-Report erstellen. 'Ah, er hat keine Region drin. Ob es das ist?', dachte ich.
Es war es nicht. Als ich fertig war, lief es nicht. Gleicher Fehler wie vorher, an der gleichen Stelle!!

Ich wollte gerade den Code von Deiner Unit rauskopieren und ihn in meiner Unit einfügen, da fiel es mir wie Schuppen von den Augen:
Hier saß der Bug eindeutig zwischen Monitor und Stuhllehne!

Delphi-Quellcode:
RvProject1.Open;
Diese Zeile hatte ich vergessen!

Ohne Deinen BeispielCode hätte ich das nie gefunden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz