Page 1 of 1

SELECT PRINTER - SE ME QUEDA BLOQUEADO

Posted: Mon Mar 25, 2019 10:18 pm
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....

Re: SELECT PRINTER - SE ME QUEDA BLOQUEADO

Posted: Tue Mar 26, 2019 8:01 am
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

Re: SELECT PRINTER - SE ME QUEDA BLOQUEADO

Posted: Tue Mar 26, 2019 8:20 am
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.