Visual FoxPro Genel alanları, sık sık resim dosyalarını depolamak için kullanılır. Örneğin, .jpg ve .bmp dosyaları resim dosyalarıdır. Genel alan türü, yalnızca bilgileri depolanan resim hakkında aynı zamanda resim alana yazma için kullanılan kayıtlı sunucu hakkında bilgi içerir. Örneğin, .jpg dosyaları bilgisayarınızda kayıtlı sunucusu Microsoft Photo Editor, ilgili Microsoft Photo Editor ve .jpg dosya hakkında bilgi birleştirilmiş. Daha sonra bu bilgileri Genel alanda depolanır.
Visual FoxPro tablo Genel bir alanı olan başka bir bilgisayara taşındığında, görüntü alanında alanda depolanan ek sunucu bilgileri nedeniyle düzgün görüntülenemeyebilir. Bu davranış, formları veya raporları oluşabilir. Bu davranış, yalnızca tablo görüntülemek ve bile Genel alanı ortaya çıkabilir. Alan gerçek resim görüntüleyebilir. Bunun yerine, kullanıcı simgesi yalnızca görebilirsiniz.
Tablolarınızın olduğu bilgisayarlarda geçerli bir sunucu varsa, her zaman bilemez. Bu nedenle, uygulama kapsamlı olarak tablolarda depolanan resimleri kullandığında, Genel alan türü kullanmak istemeyebilirsiniz. Örneğin, <a1>Not</a1> (ikili) alanı içinde görüntüleri saklamak isteyebilirsiniz. Sonra resimleri istediğiniz zaman diske yazılamıyor StrToFile işlevini kullanabilirsiniz. Visual FoxPro 9'da tanıtılan kabarcık alan türü de kullanabilirsiniz. Veya, Resim denetimini <a1>PictureVal</a1> özelliğini kullanabilirsiniz.
Ancak, başka bir yöntemi kullanmaya karar verirseniz, Genel alanlarda zaten depoladığınız resimleri kullanmanız gerekir. Visual FoxPro tablosundan bu resimleri almak ve bunları diske yerleştirmek için kolay değildir. Ancak, Visual FoxPro 9 aşağıdaki işlemde bu soruna yönelik yardımcı olabilir.
Bu bölüm, Visual FoxPro 9 ile birlikte ÇALıŞAN örnek tablosundaki Foto</a1> alanında bulunan resimleri ayıklamak iki örnekler gösterir. Yeni ReportListener temel sınıf'ı kullanarak yapın. Visual FoxPro 9'temel sınıfı ReportListener kullanılmaya başlandı.
Not Bu örnekler yalnızca Visual FoxPro 9'da çalışır.
El ile bir rapor oluşturmak ve sonra resimleri ayıklamak için bu raporu çalıştırmak, ilk örneği gösterir. Ikinci örnek, bir işlemi programlı yaklaşım gösterir. Bu ikinci örnek kodu kullanarak bir raporu değiştirme ve nasıl oluşturulacağı gösterir. Bu ikinci örnek de oluşturma ve AfterBand olayları XMLListener FoxPro Foundation Sınıf (FFC) ayıklama işlemi için ince ayar yapmak için geçersiz kılmak gösterilmiştir.
NotGenel alanınızda bulunan resimler düzgün görüntülenir, bir bilgisayar üzerinde bu işlemi gerçekleştirmeniz gerekir. Resimleri simgelerle görüntülenmemesi gerekir. Bu işlem simgeleri yalnızca görmek bir bilgisayarda çalıştırırsanız, yalnızca simgeler ayıkladığınız diske.
Örnek 1: El ile resimleri genel bir alandan bir ReportListener sınıfı kullanılarak ayıklamak
Visual FoxPro nesne yardımıyla raporlamayı gerçekleştirmek için yapılandırıldığından emin olun. Bunu yapmak için <a0></a0>, komut penceresinde aşağıdaki komutu çalıştırın:
0 Inç yüksek şekilde Sayfa üstbilgisi ve Sayfa altbilgisi bantları yüksekliğini azaltın. Bu, bantları, bu örnek için gerekli değildir.
Rapor denetimleri araç çubuğundan, Resim/OLE ilişkili bir denetim için ayrıntı bant ekleyin. Sonra Genel alanınızda bulunan resimleri görüntülemek için yeterince büyük oldukları için ayrıntı bant hem de Resim/OLE ilişkili denetimin yeniden boyutlandırın.
Resim/OLE ilişkili denetim özellikleri</a1> iletişim kutusunu değilse açın, Resim/OLE ilişkili denetimi açmak için çift tıklatın ve sonra da Genel sekmesinde aşağıdaki seçenekleri ayarlayın:
Denetim kaynak türü ' nün altında Genel alan adı tıklatın.
Denetim Kaynağı</a0> kutusunda, Foto yazın. ÇALıŞAN tablosundaki Genel alanı adıdır.
Merkezi genel alanına yatay çerçevesi</a1> onay kutusunu seçmek için tıklatın.
Kaydedin ve sonra da raporu kapatın. Raporun kaydedileceği unutmayın.
Aşağıdaki kod örneği, yeni bir program kaydedin ve çalıştırın. Istendiğinde, 6. adımda kaydettiğiniz raporu seçin. Kod sona erdiğinde, Genel alanından Foto adlı tüm resimleri bir klasöre ayıklanan. Ayrıca, ayıklanan resimlerin yolunu panoya kopyalanan.
*-----------------------------------
* Microsoft Knowledge Base Article 894819
* EXAMPLE 1
* AUTHOR: Trevor Hancock
* CREATED: February 22, 2005 09:59:32
* ABSTRACT: This code extracts pictures to disk from the
* General field that is named PHOTO in the
* EMPLOYEE sample table.
*-----------------------------------
CLEAR
LOCAL lcTestDir AS STRING, ;
loListener AS REPORTLISTENER
*-- Create a subfolder of the current
*-- Visual FoxPro TEMP folder to hold the extracted pictures.
lcTestDir = ADDBS( SYS( 2023 ) ) + 'GenTst\'
IF !DIRECTORY( lcTestDir, 1 )
MD ( lcTestDir )
ELSE
*-- If DIR is already there, empty it.
LOCAL lcOldSetSafe AS STRING
lcOldSetSafe = SET( 'Safety' )
SET SAFETY OFF
ERASE ( lcTestDir + '*.*' )
SET SAFETY &lcOldSetSafe
ENDIF
*-- Open the EMPLOYEE table. The General field that is named
*-- PHOTO has pictures in it.
USE ADDBS( HOME() ) + 'Samples\Data\Employee.dbf'
*-- Here we run the Report Output Application (ReportOutput.app) in HOME().
*-- We pass it a 5. This means that we want the Report Output Application
*-- to store an object reference to an HTMLListener-type
*-- ReportListener base class to the second parameter that we pass: loListener.
DO HOME() + 'ReportOutput.app' WITH 5, loListener
*-- Tell the HTMLListener to save the output (the .HTM page)
*-- to a specific folder. This folder is the one created earlier.
loListener.TargetFileName = lcTestDir + 'tmp.htm'
*-- Typically, a report that is run by using an HTMLListener
*-- displays wait windows during processing and a
*-- message box at the end. We want to turn this off. Therefore,
*-- we set QuietMode = .T.
*-- Note: This also turns off error reports from the ReportListener.
loListener.QUIETMODE = .T.
*-- Run the report by using the Listener.
REPORT FORM GETFILE('FRX') OBJECT loListener
*-- This command deletes the .html file that is produced.
*-- We do not need it.
ERASE ( loListener.TargetFileName )
*-- Clean up, and then report that the process has finished.
*-- To see the results, use Microsoft Windows Explorer to
*-- view the folder path that is stored in the Windows Clipboard.
CLOSE DATA ALL
_CLIPTEXT = lcTestDir
? 'Pictures have been extracted to ', lcTestDir
? 'This path is in your Clipboard.'
Örnek 2: Programsal olarak resimleri genel bir alandan bir ReportListener sınıf'ı kullanarak ayıklamak
Bu kod örneği .prg yeni bir dosyaya kaydedin. Daha sonra program otomatik olarak bir rapor oluşturmak ve raporuna fotoğrafları, ÇALıŞAN tablosundan çıkarmak için çalıştırın.
Not C sürücüsünde TmpTst adlı bir klasör oluşturun ya da seçtiğiniz klasöre işaret edecek biçimde lcTargetDir değişken tanımlayın.
*-----------------------------------
* Microsoft Knowledge Base Article 894819
* EXAMPLE 2
* AUTHOR: Trevor Hancock
* CREATED: February 22, 2005 09:59:32
* ABSTRACT: This code extracts pictures to disk from the
* General field that is named PHOTO in the
* EMPLOYEE sample table.
*-----------------------------------
*-- This opposite value of the constant will be used to set the QuietMode
*-- property of the ReportListener base class. When the value is .T.,
*-- wait windows that indicate processing appear. At the end, a message box
*-- appears. Any errors in the ReportListener base class also appear.
#DEFINE ShowReportFlow_Errs .F.
LOCAL lcReportName AS STRING, ;
lcGenFldName AS STRING, ;
lnGenFldHeight AS INTEGER, ;
lnGenFldWidth AS INTEGER, ;
lcTargetDir AS STRING, ;
lcFileNameExpr AS STRING, ;
lcGenTable AS STRING
*-- Choose the name of a table to extract one General
*-- field from.
lcGenTable = ADDBS( HOME() ) + 'Samples\Data\employee.dbf'
*-- Set the name of the General field that you want to extract from.
lcGenFldName = 'PHOTO'
*-- Set the height that you want for the General field.
lnGenFldHeight = 8000.00
*-- Set the width that you want for the General field.
lnGenFldWidth = 7000.00
*-- Set the folder into which the General field
*-- pictures will be extracted.
lcTargetDir = 'C:\TmpTst\'
*-- By default, pictures that are rendered to disk by the ReportListener class
*-- use the following file name format: _n.jpg. In this format, n
*-- is a number. If you set this next variable to an expression, you
*-- can override that behavior. In this example, we name
*-- the .jpg files based on the FIRST_NAME and LAST_NAME
*-- fields from the EMPLOYEE table that we are reporting from.
*-- This expression will be wrapped in the EVAL function when it is called.
*-- Therefore, make sure that you specify an expression, a variable, or something else.
*-- Possible choices include the RECNO function and other table field names.
lcFileNameExpr = ;
"ALLT(Employee.First_Name) + '_' + ALLTRIM(Employee.Last_Name)"
*------ START REPORT CREATION
*
CLOSE DATA ALL
IF !DIRECTORY( lcTargetDir, 1 )
MESSAGEBOX( 'Target output folder does not exist. Process stopped.', 48, '' )
RETURN .F.
ENDIF
CD ( lcTargetDir )
*-- Clean up the folder first to prevent any file name conflicts.
LOCAL lcOldSetSafe as String
lcOldSetSafe = SET("Safety")
SET SAFETY OFF
DELETE FILE *.*
SET SAFETY &lcOldSetSafe
*-- Create a temporary cursor to base the report
*-- on, make the report, and then close the cursor.
*-- This temporary cursor is used to set up the report for the first time.
*-- It is not needed after the report is made.
lcReportName = lcTargetDir + 'GenReport'
CREATE CURSOR TEMP ( Fld1 G )
CREATE REPORT ( lcReportName ) FROM TEMP
USE IN TEMP
*-- Open the report file (FRX) as a table.
USE ( FORCEEXT( lcReportName, 'FRX' ) ) IN 0 ALIAS TheReport EXCLUSIVE
SELECT TheReport
*-- This command removes objects that are not required
*-- from the report surface and from the report table itself.
*-- ObjType = 5 or 8: Removes the label and field objects from the footer.
*-- ObjType = 23 & FontStyle = 1: Removes a font resource
*-- that is not needed. The resource belonged to the label that was deleted.
DELETE ALL FOR (ObjType = 23 AND FontStyle = 1) ;
OR INLIST(ObjType, 5, 8) IN TheReport
*-- This command adjusts the layout of the header and footer bands.
*-- ObjType = 9 & ObjCode = 1 means Page Header band.
*-- ObjType = 9 & ObjCode = 7 means Page Footer band.
*- Reduce them because they are not required for this code.
UPDATE TheReport SET Vpos = 0, Hpos = 0, HEIGHT = 0 ;
WHERE ObjType = 9 AND (ObjCode = 1 OR ObjCode = 7)
*-- Increase the height of the Detail band
*-- (ObjType = 9 & ObjCode = 4) to fit the
*-- Picture/OLE Bound control that is inserted by using the next command.
UPDATE TheReport SET Vpos = 0, Hpos = 0, HEIGHT = lnGenFldHeight ;
WHERE ObjType = 9 AND ObjCode = 4
*-- 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', lcGenFldName ) && Name of the General field in the cursor.
ADDPROPERTY( loNewRecObj, 'Vpos', 2083.333) && Put it in the Detail band.
ADDPROPERTY( loNewRecObj, 'HEIGHT', lnGenFldHeight )
ADDPROPERTY( loNewRecObj, 'WIDTH', lnGenFldWidth )
ADDPROPERTY( loNewRecObj, 'DOUBLE', .T. ) && The 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
*-- File name (0), General field name (1), or Expression (2) is the source.
ADDPROPERTY( loNewRecObj, 'Offset', 1 )
*-- 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
*
*------ END REPORT CREATION
*-- Rerun the report by using the Listener subclass
*-- that is defined in later code.
USE ( lcGenTable )
LOCAL loXMLD_Listener AS ;
XMLDISPLAYLISTENER OF ADDBS( HOME( ) ) + 'Ffc\_reportlistener.vcx'
loXMLD_Listener = NEWOBJECT( 'MyListener' )
loXMLD_Listener.TargetFileName = ADDBS( lcTargetDir ) + 'tmp.htm'
loXMLD_Listener.ImgFileNameExpr = lcFileNameExpr
loXMLD_Listener.QUIETMODE = !ShowReportFlow_Errs
WAIT WINDOW 'Rendering pictures.' NOWAIT NOCLEAR
REPORT FORM ( lcReportName ) OBJECT loXMLD_Listener
ERASE (loXMLD_Listener.TargetFileName)
ERASE ( FORCEEXT( lcReportName , '*' ) )
RELEASE loXMLD_Listener
WAIT WINDOW 'Complete!' TIMEOUT 2
RETURN
*----------------------------------
*----------------------------------
DEFINE CLASS MyListener AS XMLDISPLAYLISTENER OF ADDBS(HOME()) + 'Ffc\_reportlistener.vcx'
ImgFileNameExpr = ''
ImgFile = ''
PROCEDURE RENDER(nFRXRecNo, nLeft, nTop, nWidth, nHeight, ;
nObjectContinuationType, cContentsToBeRendered, GDIPlusImage)
NODEFAULT
*-- ImageFileBaseName is an optional prefix to be added
*-- to generated image file names when image files are saved
*-- to disk during the rendering of general fields in a report run.
THIS.ImageFileBaseName = EVAL( THIS.ImgFileNameExpr )
*-- This is the full path and file name of the picture file that will
*-- be rendered to disk when the DODEFAULT function is called. This information is retrieved here
*-- so we can clean it up in the AfterBand event.
THIS.ImgFile = FORCEPATH(THIS.ImageFileBaseName + "_" + ;
TRANSFORM(THIS.ImageFieldInstance + 1) + ".jpg", ;
FULLPATH(THIS.ExternalFileLocation,ADDBS(JUSTPATH(THIS.TargetFileName))))
DODEFAULT(nFRXRecNo,nLeft,nTop,nWidth,nHeight, ;
nObjectContinuationType, cContentsToBeRendered, GDIPlusImage)
ENDPROC
PROCEDURE AFTERBAND(nBandObjCode, nFRXRecNo)
NODEFAULT
IF nBandObjCode = 4 && In Detail Band
*-- Look for the image file on the disk.
*-- If the image file is there, the code inside the IF...ENDIF
*-- construct strips off the _n that is at the end of the file name,
*-- just before the extension. This is added in the Render event by the
*-- XMLDISPLAYLISTENER class. You do not have to clean up the file name. However,
*-- it looks cleaner. For example, "Scott_Rockfeld_1.jpg" would change to
*-- "Scott_Rockfeld.jpg".
IF FILE( THIS.ImgFile )
LOCAL lnLastUnderscorePos AS INTEGER
lnLastUnderscorePos = ATC('_', THIS.ImgFile, OCCURS( '_', THIS.ImgFile ) )
RENAME ( THIS.ImgFile ) TO ;
FORCEEXT( SUBSTR( THIS.ImgFile, 1, lnLastUnderscorePos - 1 ), 'JPG' )
ENDIF
ENDIF
DODEFAULT( nBandObjCode, nFRXRecNo )
ENDPROC
ENDDEFINE
Katıştırılmış verme hakkında daha fazla bilgi için resimler bit eşlem, Microsoft Knowledge Base'deki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
161832
(http://support.microsoft.com/kb/161832/
)
Katıştırılmış bir .bmp görüntü bir dosyaya verme
FRX tablo yapısı hakkında ek bilgi için Visual FoxPro Yard?m?'nda "Tablo yapıları tablo dosyalarının (.dbc .frx, .lbx, .mnx, .pjx, .scx, .vcx)" konusuna bakın.
Doğrudan Visual FoxPro 9.0 FRX tablonun yapısını gözden geçirmek için <a0></a0>, komut penceresinde aşağıdaki komutu çalıştırın:
REPORT FORM HOME() + "\Tools\Filespec\90frx.frx" ÖNIZLEME
ÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir.
Makalenin İngilizcesi aşağıdaki gibidir:894819
(http://support.microsoft.com/kb/894819/en-us/
)
Bu makaleyi kullanmak için ne kadar kişisel çaba harcadınız?
Çok az
Az
Orta
Fazla
Çok fazla
Bu bilgiyi geliştirmemiz için nedenleri ve bu konuda neler yapabileceğimizi paylaşın
Teşekkürler! Görüşleriniz, destek içeriğimizi geliştirmemize yardımcı olmak için kullanılmaktadır. Diğer yardım seçenekleri için, lütfen Yardım ve Destek Giriş Sayfasını ziyaret edin.