Bitmap/jpeg Stream an Rave Report übergeben



  • Hallo Leute,

    hab mal wieder Ärger mit dem RaveReport. Die Aufgabenstellung ist es kontextabhängige jpeg Dateien in den Reports darzustellen. Da Rave Report Report in meiner Version (7.6.2) ja keine jpeg-Komponente besitzt hab ich mich also mal nach Lösungen umgeschaut.

    1. Lösung Add on auf der Nevrona Seite
    --> Problem ich find es nicht. kann mir jemand vielleicht mal nen Link schicken wo ich es finde?

    2. Lösung ich hab ne RvCustomConnection in der ich ein Feld vom Typ Graphic anlege

    void __fastcall TForm2::RvCustomConnection1GetCols(TRvCustomConnection *Connection)
    
    {
      Connection->WriteField("Bild",dtGraphic,531,"","");
    }
    

    So als nächstes versuch ich im einfachsten Fall erst mal ne Bitmap zu laden.
    In nem Stream zu speichern und sie an den Ravereport zu übergeben.
    Später möchte ich die jpeg Datei laden in ne Bitmap umwandeln und dann diesen Stream übergeben.

    void __fastcall TForm2::RvCustomConnection1GetRow(TRvCustomConnection *Connection)
    
    {
    	TMemoryStream* Stream;
    	TJPEGImage* Image;
    	Stream = new TMemoryStream();
    	Image = new TJPEGImage();
    	Graphics::TBitmap *Bitmap;
    	Bitmap = new Graphics::TBitmap();
    	try
    	{
    		//Image->LoadFromFile("C:\\test1.jpg");
    		//Image->DIBNeeded();
    		//Bitmap->Assign(Image);
    		Bitmap->LoadFromFile("C:\\test.bmp");
    		//Image->SaveToStream(Stream);
    		//Stream->Position = 0;
    		Bitmap->SaveToStream(Stream);
    		Connection->WriteBlobData(Stream->Memory,Stream->Size);
    	//bp->PrintImageRect(1,1,3,3,Stream,"JPG");
    	}// try
    	__finally
    	{
    		delete Image;
    		delete Stream;
    	}
    }
    

    Im visuel Editor seh ich meine Data-Connnection.
    Die DataField-Eigenschaft der Bitmap-Komponente ist auf DataView1.Bild gesetzt.
    Beim Ausführen kommt allerdings immer noch kein Bild.

    Was mach ich nur falsch.

    Danke für eure Hilfe!



  • Vor dem WriteBlobDate doch nochmal den Stream auf Anfang setzen?
    Ist nur ein Vermutung; keine Ahnung, ob das beim Zugriff per Memory relevant ist.


Anmelden zum Antworten