Al momento sei offline in attesa che la connessione Internet venga ristabilita

Come stampare le immagini e come visualizzare le immagini vengono memorizzate in un campo BLOB in Visual FoxPro 9.0

Il presente articolo è stato tradotto tramite il software di traduzione automatica di Microsoft e non da una persona. Microsoft offre sia articoli tradotti da persone fisiche sia articoli tradotti automaticamente da un software, in modo da rendere disponibili tutti gli articoli presenti nella nostra Knowledge Base nella lingua madre dell’utente. Tuttavia, un articolo tradotto in modo automatico non è sempre perfetto. Potrebbe contenere errori di sintassi, di grammatica o di utilizzo dei vocaboli, più o meno allo stesso modo di come una persona straniera potrebbe commettere degli errori parlando una lingua che non è la sua. Microsoft non è responsabile di alcuna imprecisione, errore o danno cagionato da qualsiasi traduzione non corretta dei contenuti o dell’utilizzo degli stessi fatto dai propri clienti. Microsoft, inoltre, aggiorna frequentemente il software di traduzione automatica.

Clicca qui per visualizzare la versione originale in inglese dell’articolo: 895602
Sommario
Microsoft Visual FoxPro 9.0 consente di introdurre il tipo di dati BLOB . È possibile utilizzare campi BLOB per archiviare dati binari, ad esempio immagini. Le immagini vengono memorizzate in un campo BLOB possono essere stampate nei report e visualizzate nei moduli. In questo articolo viene descritto come stampare le immagini e come visualizzare le immagini vengono memorizzate in un campo BLOB .
INTRODUZIONE
Visual FoxPro 9.0 consente di introdurre il tipo di dati BLOB . È possibile utilizzare campi BLOB per archiviare dati binari di qualsiasi tipo e lunghezza indeterminata. Ad esempio, è possibile memorizzare immagini in un campo BLOB .

È possibile stampare le immagini archiviate in un campo BLOB in un report utilizzando il controllo Immagine/OLE associato . Per stampare le immagini vengono memorizzate in un campo BLOB , è necessario impostare l'origine controllo del controllo Immagine/OLE associato che viene utilizzato un riferimento all'oggetto. Il riferimento di oggetto deve essere a un'istanza di un controllo Image . La proprietà PictureVal di questa istanza deve essere impostata a un campo di BLOB che contiene le immagini.

È possibile visualizzare le immagini archiviate in un campo BLOB in un form utilizzando il controllo Image . Posizionare il controllo Image direttamente nel form e si imposta la proprietà PictureVal del controllo Image . Di indirizzi, associare il controllo di immagine al campo BLOB . Tuttavia, sono necessari affinché il controllo Image per ridisegnare mentre si sposta il puntatore del record nella tabella che contiene il campo BLOB ulteriori passaggi.
Informazioni
Esempi di codice riportato di seguito sono progettati per Visual FoxPro 9.0. Questi esempi di codice viene illustrato come stampare le immagini e come visualizzare immagini memorizzate come dati binari in un campo BLOB . Per verificare in questi esempi, attenersi alla seguente procedura:
  1. Avviare Visual FoxPro 9.0 e creare due nuovi programmi.
  2. Copiare e incollare quindi dell'esempio 1 in uno dei nuovi programmi.
  3. Copiare e incollare l'esempio 2 il nuovo programma.
  4. Salvare e quindi eseguire i programmi.

Esempio 1: Stampa di immagini che vengono memorizzate in un campo BLOB in un report

Nell'esempio di codice riportato di seguito viene illustrato come stampare immagini memorizzati come dati binari in un campo BLOB in un report.
*------------ START CODE**-----------------------------------* AUTHOR:    Trevor Hancock* CREATED:   03/04/05 01:03:07 P.M.* ABSTRACT: Code from Microsoft Knowledge Base*                 article 895602. Visual FoxPro code that shows how*                 to use pictures that are*                 stored in a BLOB field in a report.*                 This is accomplished by using an*                 object reference to an instance of*                 an IMAGE class as the control source for*                 an OLE Bound control on the report. The IMAGE*                 object has its PictureVal property set to a BLOB*                 field in a cursor.*-----------------------------------LOCAL lcDataDIR AS STRING, ;	lcThisDir AS STRING, ;	loRL AS REPORTLISTENERlcDataDIR = HOME( ) + 'Samples\Tastrade\'lcThisDir = ADDBS( JUSTPATH( SYS( 16 ) ) )CD ( lcThisDir )CLOSE DATA ALL*-- Create a temp cursor with a few fields, one of which is a*-- BLOB. Store pictures in this field as raw binary data.SELECT CAST( ALLTRIM( First_Name ) AS VARCHAR ( 10 ) ) AS 'FNAME', ;	CAST( ALLTRIM( Last_Name ) AS VARCHAR (10 ) ) AS 'LNAME', ;	CAST( FILETOSTR( lcDataDIR + Photo_File ) AS BLOB ) AS 'PIC' ;	FROM ( lcDataDIR + 'data\Employee.dbf' ) ;	INTO CURSOR ReportTemp*-- Close the table that you selected from. It is not needed.USE IN SELECT( 'EMPLOYEE' )*-- This calls a function that makes a report programmatically.*-- This is included here just to make sure that this sample can be run*-- as-is, without asking the developer to manually create a report.MakeReport()*-- Create an instance of the PreviewListener*-- class defined later in this code.*-- Call its custom InitBLOBImage() method,*-- which creates an instance of an IMAGE object.*-- This IMAGE has its PictureVal property set to the BLOB*-- field ( 'ReportTemp.PIC' ) and its reference ( loRL.oBlobImage )*-- is used as the control source for the OLE Bound control *-- on the report.loRL = NEWOBJECT( 'PreviewListener' )loRL.InitBLOBImage( 'ReportTemp.PIC' )*-- Make sure that the cursor is selected,*-- and then run the report to preview using*-- the instance of our Report Listener.SELECT ReportTempREPORT FORM BlobReport OBJECT loRLCLOSE DATA ALLRETURN*--------------------------------*-- There has to be some way of redrawing the*-- picture in the IMAGE class as the record pointer*-- in the report's driving cursor changes; it does not occur*-- automatically. This could be done by a UDF() in the PrintWhen*-- of the OLE Bound control on the report, or as is illustrated here,*-- by a Report Listener BEFOREBAND() Event.DEFINE CLASS PreviewListener AS REPORTLISTENER	oBlobImage = NULL	PicBlobFld = ''	LISTENERTYPE = 1  && Preview Listener	PROCEDURE InitBLOBImage(lpcBlobField AS STRING)		THIS.PicBlobFld = lpcBlobField		THIS.oBlobImage = NEWOBJECT( 'IMAGE' )		THIS.oBlobImage.PICTUREVAL = THIS.PicBlobFld	ENDPROC	PROCEDURE BEFOREBAND( nBandObjCode, nFRXRecNo )		*-- Before the DETAIL band is rendered, ;		*-- just redraw the IMAGE object so that it has		*-- the correct picture from the BLOB field.		IF nBandObjCode = 4 && Detail band			THIS.oBlobImage.PICTUREVAL =;				EVALUATE( THIS.PicBlobFld )		ENDIF	ENDPROCENDDEFINE*--------------------------------*-- This function programmatically creates a report*-- with an OLE Bound control and other fields. This is included*-- only for demonstration purposes so this article code can stand-alone.*-- Typically, you would create your own report manually by using*-- the report designer.FUNCTION MakeReport	CREATE REPORT BlobReport FROM ReportTemp	*-- Open the report file (FRX) as a table.	USE BlobReport.FRX IN 0 ALIAS TheReport EXCLUSIVE	SELECT TheReport	*-- Increase the height of the Detail band	*-- (ObjType = 9 & ObjCode = 4) to fit the	*-- Picture/OLE Bound control that is inserted later.	UPDATE TheReport SET Vpos = 0, Hpos = 0, HEIGHT = 23542;		WHERE ObjType = 9 AND ObjCode = 4	*-- Since you increased the height of the Detail Band, you need to move	*-- the items from the footer down so they are back in the footer again.	UPDATE TheReport SET Vpos = 29479.167 ;		WHERE ( ObjType = 8 OR ObjType = 5 ) AND ;		INLIST( EXPR, 'DATE()', '"Page "', '_PAGENO' )	*-- Add a Picture/OLE Bound control to the report by inserting a	*-- record with appropriate values. Using an object that is based on the EMPTY	*-- class here and the GATHER NAME class later to insert the record makes it easier to	*-- see which values line up to which fields (when compared to a large	*-- SQL-INSERT command).	LOCAL loNewRecObj AS EMPTY	loNewRecObj = NEWOBJECT( 'EMPTY' )	ADDPROPERTY( loNewRecObj, 'PLATFORM', 'WINDOWS' )	ADDPROPERTY( loNewRecObj, 'Uniqueid', SYS(2015) )	ADDPROPERTY( loNewRecObj, 'ObjType', 17 ) && "Picture/OLE Bound Control"	ADDPROPERTY( loNewRecObj, 'NAME', 'loRL.oBlobImage' ) && The object ref to the IMAGE object.	ADDPROPERTY( loNewRecObj, 'Hpos', 27500.000) && Place it in DETAIL band.	ADDPROPERTY( loNewRecObj, 'Vpos', 3854.167)	ADDPROPERTY( loNewRecObj, 'HEIGHT', 21354.167)	ADDPROPERTY( loNewRecObj, 'WIDTH', 25104.167)	ADDPROPERTY( loNewRecObj, 'DOUBLE', .T. ) && Picture is centered in the "Picture/OLE Bound Control"	ADDPROPERTY( loNewRecObj, 'Supalways', .T. )	*-- For the Picture/OLE Bound control, the contents of the OFFSET field specify whether	*-- Filename (0), General field name (1), or Expression (2) is the source.	ADDPROPERTY( loNewRecObj, 'Offset', 2 )	*-- Add the Picture/OLE Bound control record to the report.	APPEND BLANK IN TheReport	GATHER NAME loNewRecObj MEMO	*-- Clean up and then close the report table.	PACK MEMO	USE IN SELECT( 'TheReport' )ENDFUNC**------------ END CODE

Esempio 2: Visualizzare immagini memorizzate in un campo BLOB in un modulo

Nell'esempio di codice riportato di seguito viene illustrato come visualizzare immagini memorizzate come dati binari in un campo BLOB in un form.
*------------ START CODE**-----------------------------------* AUTHOR:    Trevor Hancock* CREATED:   03/04/05 01:03:07 P.M.* ABSTRACT: Code from Microsoft Knowledge Base*                 article 895602. Visual FoxPro code that shows how*                 to display pictures that are*                 stored in a BLOB field on a form.*-----------------------------------CLOSE DATA ALL*-- Create a temp cursor with a BLOB field.*-- Store pictures in this field as raw binary data.SELECT 	;	CAST( ;	FILETOSTR( HOME( ) + 'Samples\Tastrade\' + Photo_File ) ;	AS BLOB ) AS 'PIC' FROM ;	HOME( ) + 'Samples\Tastrade\data\Employee.dbf' ;	INTO CURSOR BlobTemp*-- Close the table that you selected from. It is not needed.USE IN SELECT( 'EMPLOYEE' )*-- Create a form to display the pictures.PUBLIC goFormgoForm = NEWOBJECT( 'Form' )WITH goForm AS FORM	*-- Add an IMAGE class to display the pictures.	*-- This is done by setting the PICTUREVAL	*-- property of the IMAGE.	.ADDOBJECT( 'IMG1', 'Image' )	.Img1.PICTUREVAL = BlobTemp.PIC	*-- Add an EditBox to display the raw	*-- binary data directly out of the BLOB field.	*-- This is not required, just fun to see the raw data.	.ADDOBJECT( 'Edt1', 'EditBox' )	.Edt1.MOVE(.Img1.WIDTH + 5, 0, .Img1.WIDTH, .Img1.HEIGHT)	.Edt1.CONTROLSOURCE = 'BlobTemp.PIC'	*-- Add record navigation buttons so that you can	*-- move records in the cursor. The NAV class	*-- is defined later in this code.	.ADDOBJECT( 'NAV', 'NavBtns' )	.NAV.MOVE( (.WIDTH - .NAV.WIDTH) + 13 , .Edt1.HEIGHT + 2 )	.WIDTH = .Img1.WIDTH + .Edt1.WIDTH + 7	*-- Make the form pretty by setting a few anchors	*-- and setting MinWidth/Height.	.NAV.ANCHOR = 192	.Edt1.ANCHOR = 15	.MINWIDTH = .WIDTH	.MINHEIGHT = .HEIGHT	.AUTOCENTER = .T.	.CAPTION = 'Picture and Raw BLOB Data'	.SETALL( 'VISIBLE', .T. )ENDWITHgoForm.SHOW(1)CLOSE DATA ALL*--------------------------------*-- This is just a subclass of the FoxPro Foundation Class*-- named _DataNavBtns (located in HOME() + '\FFC\_datanav.vcx').*-- This is where you redraw the BLOB data displayed by the IMAGE*-- class by resetting the PICTUREVAL property of that class*-- just before skipping records. Unlike an OLE Bound control populated*-- by a GENERAL field, the IMAGE does not redraw its BLOB data automatically*-- as the record pointer moves. This is how you force it.DEFINE CLASS NavBtns AS _datanavbtns OF HOME() + '\FFC\_datanav.vcx'	BORDERWIDTH = 0	PROCEDURE EnableDisableButtons		THIS.PARENT.Img1.PICTUREVAL = BlobTemp.PIC		DODEFAULT()ENDDEFINE**------------ END CODE
Riferimenti
Per ulteriori informazioni sulla proprietà PictureVal , visitare il sito di Web di Microsoft:Per ulteriori informazioni, vedere l'esempio di "Ancorabile Image Viewer" nell'applicazione di esempi di soluzioni di Visual FoxPro che è incluso in Visual FoxPro 9.0.

Avviso: questo articolo è stato tradotto automaticamente

Proprietà

ID articolo: 895602 - Ultima revisione: 11/16/2007 07:08:58 - Revisione: 1.4

Microsoft Visual FoxPro 9.0 Professional Edition

  • kbmt kbhowto kbcodesnippet KB895602 KbMtit
Feedback
&t=">