Está en la página 1de 4

Escaneando desde VFP

Por Pedro Pascua Copyrights 1998 by FoxPress, All rights reserved FoxPress, Septiembre 1998

En cierta ocasin un cliente me pidi una aplicacin que debera escanear documentos. Tengo que reconocer que en una primera instancia me entr cierto panico pues era un tema que no haba hecho nunca y siempre que uno se enfrenta a temas desconocidos (ultimamente esto es cada vez ms frecuente) se le enciende una luz indicando Peligro! No obstante, superado el primer instante me recordaron la existencia de las .OCX de Wang. Estas .OCX tienen una serie de ventajas que podramos resumir en las siguientes: 1.- Son bastante buenas 2.- Funcionan perfectamente con VFP 3.- Son Gratis (vienen con el Win95)(No estn en la versin original del Win95 pero si en las posteriores releases) Lo primero antes de empezar a trabajar es conseguirse las herramientas y documentarse un poco. Si uno est trabajando con Win95 OSR-1 o NT estas .OCX ya las tendr en su mquina lo nico que habr que hacer es quizs registrarlas con la utilidad que viene con VFP y que se llama REGSVR32.EXE En caso de que trabajes con Win95 (versin original) debers bajarte de la Web los ficheros de estas .OCX. Los tienes disponibles en el ftp de Microsoft en la direccin ftp.microsoft.com/softlib/mslfiles/imginst.exe En este fichero nos encontramos con una serie de controles que son: El Wangs Image Admin control (IMGADMIN.OCX) Este control nos permite administrar los archivos de imgenes que residen en nuestro PC o en una red (LAN). Las habituales ventanas de dilogo de Imprimir y Archivo soportan diversos formatos como la posibilidad de administrar los directorios y crar, borrar, renombrar directorios y establecer los atributos de los archivos de las imagenes y de los directorios. Algunas funciones especficas de las imgenes te permiten insertar, aadir, y reemplazar pginas en un archivo de tipo multi-pgina. El control Thumbnail de Wang (IMGTHUMB.OCX)

El control Image Thumbnail muestras las imgenes que se encuentran en un fichero en un pequeo rectangulo que se llama thumbnail de forma uniforme. Los Thumbnails son tiles para mostrar todas las pginas de un archivo de imgnes multipgina en formato de miniatura. Cuando especificas una archivo de imagenes, las representaciones del thumbnail son generadas y guardadas en un buffer para su posterior uso. Puedes escoger trabajar con thumbnails que se encuentran en el buffer o escoger que se regeneren los thumbnails para reflejar subsecuentes cambios en el archivo de imagen, tal como pginas insertadas o borradas, o aleraciones realizadas en las pginas como anotaciones. Este control puede ser configurado para hacer scroll ya sea vertical y horizontalmente. Cuando se hace scroll verticalmente, los thumbnails se muestran secuencialmente empezando por arriba a la izquierda . La barra de scroll se muestra cuando hay ms thumbnails de los que caben en el espacio disponible . El control Image Edit (IMGEDIT.OCX) Este control aade anotaciones a los grficos lo que permite que el usuario pueda mostrar, anotar, manipular y manejar los archivos de imgenes. El control Image Scan (IMGSCAN.OCX) Este control aade capacidades de scaner a las aplicaciones que soportan controles OLE de 32-bit. El control de Scan es invisible y puede trabajar independientemente de los otros controles. Para mostrar imagenes miestras estn siendo escaneadas se puede hacer una llamada al control Wang Image Edit. El control Image Annotation Tool Este control aade anotaciones en forma de imgenes a aplicaciones que soportan controles OLE de 32 bits. Capacita a los usuarios a aadir texto y anotaciones grficas que se deben mostrar junto con las imgenes de los archivos. Con estos .OCX vienen un buen cmulo de ficheros de ayuda pero si uno todava necesita ejemplos, puede usar el fichero imgocxd.exe que se adjunta en este nmero de la revista y que puede ayudar al desarrollador. Cmo seguramente se quer ver un poco ms de cdigo y un poco menos de teora, aqu va un ejemplo que ha usado 4 de estos controles: - El de Scaner - El IMGEDIT - El IMGTHUMB - El IMGADMIN Se trata de un formulario que permite scanear desde un scanner compatible TWAIN y guardar los documentos (incluso los que tienen ms de una pgina) en un fichero .TIFF.

Pasos a realizar 1.- Crea un formulario nuevo 2.- Deposita en cualqueir lugar del formulario las .OCX IMGADMIN y de Scanner llamndoles respectivamente en la propiedad NAME de la ventana de propiedades con los nombres oImgAdmin y oScan 3.- Deposita la .OCX de IMGFTHUMB en el lado izquierdo haciendo un marco similar al de la fotografa. Llmala ImgIndex. 4.- Deposita la .OCX de IMGEDIT en el lado derecho del formulario haciendo un marco similar al de la fotografa. Llmala oImage 5.- Escribe en el INIT del formulario:
glCompletado = .F. glScan = .T. glEditar = .F. If !ThisForm.oScan.ScannerAvailable =Messagebox("No tiene ningn dispositivo de digitalizacin instalado",48,"Aviso") ThisForm.Release() EndIf thisform.oScan.DestImageControl="ImgEdit2" thisform.oScan.Zoom = 25. If glEditar thisform.oImage.Image = gcFileName thisform.oImgIndex.Image = gcFileName thisform.oImage.Display This.Filename = gcFilename thisform.oScan.pageoption=3 Else This.Filename = fullpath('Docs\images\'+ThisForm.oImgAdmin.GetUniqueName('Docs\Images','' ,'tif')) thisform.oScan.pageoption=1 EndIf thisform.oScan.Image = (ThisForm.FileName)

Este cdigo nos permite distinguir si vamos a editar una imagen tenemos previamente guardada o vamos a crear un nuevo .TIF El cdigo para escanear la imagen la ponemos en el botn al que le hemos dado el caption de Agregar Pgina y es tan sencillo como sigue:
thisform.oScan.OpenScanner() thisform.oScan.FileType = 1 Thisform.oScan.PageType = 3 thisform.oScan.startscan() thisform.oScan.CloseScanner() thisform.oImgIndex.Image = (ThisForm.FileName) If thisform.oScan.pageoption = 1 thisform.oScan.pageoption = 3 EndIf

Si queremos dotar de la opcin de Zoom lo nico que tenemos que escribir en el Click correspondiente es
ThisForm.oImage.Zoom = ThisForm.; oImage.Zoom * 1.25

Y para imprimir la imagen que acabamos de guardar escribimos lo siguiente:


If 6 = MessageBox("Imprimir imagen actual?",4+32,"Confirmar envo a impresora") thisform.oImage.PrintImage() EndIf

Y si queremos configurar el Scanner tenemos la posibilidad de ejecutar:


Thisform.oScan.ShowScannerSetup()

Que nos permitir invocar la ventana de configuracin del propio scaner. Observaciones El fuente del ejemplo se ha realizado usando el imaging 1.0. No obstante hay una versin ms avanzada del Imaging en http://www.fpress.com/bbs/ocx/img_es.exe que adems est en castellano. Esta versin es la que se adjunta con el Win95 OS2 y el NT 4.0 El Imaging es de libre distribucin. Pedro Pascua se puede entrar en contacto con l en ped@fpress.com