SELECT PRINTER - SE ME QUEDA BLOQUEADO

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

SELECT PRINTER - SE ME QUEDA BLOQUEADO

Post by SALINETAS24 »

Hola, estoy trabajando con el código de barras y desde el TOOLBAR tengo un boton que llama a esta función

Code: Select all

		BUTTON IMP_CODE ;
             	TOOLTIP "Imprime código de barras" ;
				PICTURE "barcode" ;
				ACTION (Play_Barcode(.T.), MSGBOX("ARRIBA"),Win_MaMP.BrowseDbf.Enabled:=.T.,         Win_MaMP.BrowseDbf.SETFOCUS )  ;
				SEPARATOR

Y esta seria la función en si misma. Esta sacada de un función de Claudio

Code: Select all

STATIC PROCEDURE Play_Barcode(lPr)
LOCAL hBitmap
LOCAL cCode          := WIN_MaMP.GET01.value
LOCAL cType          := "CODE128"
LOCAL lShowdigits    := .F.
Local  lSuccess
DEFAULT lPr:=.F.

	hBitmap := HMG_CreateBarCode ( cCode, cType , NIL, NIL, lShowdigits )
	BT_HMGSetImage ("WIN_MaMP", "Image_1", hBitmap)
	
	IF lPr
		BT_BitmapSaveFile( hBitmap, "BarCode128.BMP", BT_FILEFORMAT_BMP )
		SELECT PRINTER DIALOG TO lSuccess PREVIEW
		START PRINTDOC
			START PRINTPAGE
				@ 20,40 PRINT IMAGE "BarCode128.BMP" WIDTH 50 HEIGHT 50
			END PRINTPAGE
		END PRINTDOC
		MSGBOX("tERMINADO")
	ENDIF

RETURN	
El caso es que si entro y finalizo la opción todo funciona correcto, pero si entro y quiero cancelar pulsado la "X" de la ventana o la opción cancelar el programa se queda colgado.. no responde..
Si que me imprime ambos mensajes, pero es como si no tuviera ningún campo activo.

¿Que estoy haciendo mal...?

Muchas gracias y una cervecita fresquita....
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
edk
Posts: 914
Joined: Thu Oct 16, 2014 11:35 am
Location: Poland

Re: SELECT PRINTER - SE ME QUEDA BLOQUEADO

Post by edk »

Debes dar una condición para verificar si la impresora ha sido seleccionada. Por ejemplo:

Code: Select all

STATIC PROCEDURE Play_Barcode(lPr)
LOCAL hBitmap
LOCAL cCode          := WIN_MaMP.GET01.value
LOCAL cType          := "CODE128"
LOCAL lShowdigits    := .F.
Local  lSuccess
DEFAULT lPr:=.F.

	hBitmap := HMG_CreateBarCode ( cCode, cType , NIL, NIL, lShowdigits )
	BT_HMGSetImage ("WIN_MaMP", "Image_1", hBitmap)
	
	IF lPr
		BT_BitmapSaveFile( hBitmap, "BarCode128.BMP", BT_FILEFORMAT_BMP )
		SELECT PRINTER DIALOG TO lSuccess PREVIEW
		
		IF lSuccess
		
			START PRINTDOC
				START PRINTPAGE
					@ 20,40 PRINT IMAGE "BarCode128.BMP" WIDTH 50 HEIGHT 50
				END PRINTPAGE
			END PRINTDOC
			
		ELSE
		
			MSGBOX("tERMINADO")
			
		ENDIF
	ENDIF

RETURN	

Por cierto, puede imprimir el código de barras sin guardarlo primero en el disco como un archivo gráfico. Ver esta publicación: http://hmgforum.com/viewtopic.php?p=50480#p50480
User avatar
SALINETAS24
Posts: 667
Joined: Tue Feb 27, 2018 3:06 am
DBs Used: DBF
Contact:

Re: SELECT PRINTER - SE ME QUEDA BLOQUEADO

Post by SALINETAS24 »

Efectivamente... muchas gracias edk.
Es raro y deberia de sufrir el bloque siempre, pero cuando pruebas el ejemplo de Claudio, (esta copiado tal cual lo tengo yo) al no tener ninguna Base de Datos activa no sufre ningún bloqueo. El problema surge cuando se trabaja con base de datos.., es entonces cuando rompe.
Como tu dices., una simple condición.

Code: Select all

If lSuccess == .F.
	MsgInfo('Print Error')
	Return
EndIf
Agradecido.., vamos con esa cervecita.
Como dijo el gran pensador Hommer Simpson..., - En este mundo solo hay 3 tipos de personas, los que saben contar y los que no. :shock:
Post Reply