Page 1 of 1
No sale del GET con Enter
Posted: Thu Aug 03, 2017 5:09 pm
by Julio Cepeda
No se qué hago mal que me ocurre una cosa que no me había pasado nunca.
No suelo usar ventanas, ( WINDOW ), excepto la principal del programa, siempre utilizo tipo DIALOG y nunca he tenido este problema.
El código es:
Code: Select all
DEFINE WINDOW oDlg TITLE "Alta de albarán rápido" ;
MDICHILD OF oWnd ;
FROM 0, 0 TO 600, 800 ; //Alto y Ancho
PIXEL COLOR CLR_BLACK,RGB(180,225,255) ;
STYLE nOr( WS_CAPTION, ;
WS_MINIMIZEBOX, ;
WS_SYSMENU, ;
WS_THICKFRAME )
@ 0, 74 SAY oSay PROMPT "NºAlbarán" PIXEL SIZE 80, 18 COLOR CLR_BLACK,RGB(180,225,255) OF oDlg FONT oFont2
@ 20, 74 GET aoGt[ 2 ] VAR cNumero12 PICTURE "@!" + Replicate( "X", 12 ) PIXEL SIZE 120, 20 OF oDlg FONT oFont2
@ 0,196 SAY oSay PROMPT "Fecha" PIXEL SIZE 44, 18 COLOR CLR_BLACK,RGB(180,225,255) OF oDlg
@ 20,196 GET aoGt[ 3 ] VAR dFechaD08 PIXEL SIZE 80, 20 PICTURE "@D " OF oDlg
ACTIVATE WINDOW oDlg
Compilo con FWH 11.06
Cuando aparece la ventana el cursor está en aoGt[ 2 ] escribo en la caja del GET perfectamente pero cuando pulso Enter o Tab no sale el cursor del este GET si quiero que salga e ir al siguiente tengo que pinchar con el ratón en el siguiente GET aoGt[ 3 ].
Si alguien sabe por qué y me puede ayudar le quedaría muy agradecido.
Un saludo a todos y gracias.
Re: No sale del GET con Enter
Posted: Thu Aug 03, 2017 5:38 pm
by karinha
Code: Select all
static oWnd, oClients
function GetAlbaran()
local oBrw, oIco, oBar
local CNUMERO12 := 0.00, aoGt := ARRAY(5), dFechaD08 := DTOC( DATE() )
DEFINE ICON oIco FILENAME "..\icons\customer.ico"
DEFINE WINDOW oClients TITLE "Clients management" ;
MDICHILD ICON oIco PIXEL
//DEFINE BUTTONBAR oBar OF oClients
//DEFINE BUTTON OF oBar ACTION ShowClient()
@ 0, 74 SAY oSay PROMPT "NºAlbarán" PIXEL SIZE 80, 18 COLOR CLR_BLACK,RGB(180,225,255) OF oClients //FONT oFont2
@ 20, 74 GET aoGt[ 2 ] VAR cNumero12 PICTURE "@!" + Replicate( "X", 12 ) PIXEL SIZE 120, 20 OF oClients //FONT oFont2
@ 0,196 SAY oSay PROMPT "Fecha" PIXEL SIZE 44, 18 COLOR CLR_BLACK,RGB(180,225,255) OF oClients
@ 20,196 GET aoGt[ 3 ] VAR dFechaD08 PIXEL SIZE 80, 20 PICTURE "@D 99/99/99997" OF oClients
ACTIVATE WINDOW oClients
return nil
Re: No sale del GET con Enter
Posted: Thu Aug 03, 2017 6:08 pm
by Julio Cepeda
Muchas gracias karinha y a todos. He probado tu código y me hace lo mismo necesito, dentro de una aplicación que tiene una ventana principal MDI, main(), y un menu crear una ventana o diálogo que no se quede con el foco, es decir que aunque esta esté abierta, me permita minimizar y seguir utilizando otras opciones de la aplicación. Las tengo todas con DIALOG y hasta que no cierro la que tengo abierta no puedo iniciar otra opción de la aplicación. Como esto no lo he necesitado hasta ahora pues no se hacerlo.
De nuevo muchas gracias
Re: No sale del GET con Enter
Posted: Thu Aug 03, 2017 6:42 pm
by Julio Cepeda
La ventana de la que he mostrado el código en el inicio de este post, si me hace lo que yo quiero y funciona independiente de las otras opciones dentro de la aplicación, pero me sucede ese defecto, no sale del GET ni pulsando Intro ni Tab. Si hago funcionar ese problema lo tengo arreglado.
Re: No sale del GET con Enter
Posted: Fri Aug 04, 2017 7:58 am
by Julio Cepeda
Muchas gracias a todos.
He probado el mismo código el solo en otro prg separado de la aplicación y funciona perfectamente.
Ya averiguaré por qué me hace eso integrado dentro de la aplicación.
Muchas gracias y un saludo.
Re: No sale del GET con Enter
Posted: Fri Aug 04, 2017 2:56 pm
by Julio Cepeda
Ya está resuelto, lo digo, por si a alguien le ocurre.
Compilando con FWH 11.07 no funciona el mismo código compilado con FWH 16.12 funciona perfectamente.
El problema es que no lo puedo compilar de momento con 16.12 ni con 17.01 porque con estas versiones no me funciona el cambio de impresora con el método "oPrn:Setup()" no me cambia la impresora sin embargo con la 11.07 "oPrn:Setup()" funciona perfectamente.
Gracias a todos.
Re: No sale del GET con Enter
Posted: Fri Aug 04, 2017 3:00 pm
by karinha
Intenta ahora:
Code: Select all
FUNCTION DefaultPrinter()
LOCAL nPrn, nRet
// Abre a tela para a seleção da impressora
/*
GetPrintDC( GetActiveWindow() )
// Coloca a impressora selecionada como Default do Windows
SetDefaultPrinter( PRNGETNAME() )
*/
nRet := PrinterSetUp()
nPrn := PrnGetName()
IF( nRet # 0 )
// NADA A FAZER MUDA O DEFULT DA IMPRESSORA EM TEMPO REAL. 15/08/2016(Magda)
SetDefaultPrinter( PRNGETNAME() ) // MUDA O DEFAULT DA IMPRESSORA
MsgInfo( OemToAnsi( "Aten‡Æo Usu rio: " )+CRLF+ ;
OemToAnsi( "Sua Impressora DEFAULT(PadrÆo) ‚: " )+CRLF+ ;
( "-> " + nPrn ), ;
OemToAnsi( "Sua Impressora DEFAULT(PadrÆo) ‚... " ) )
sGetDefaultPrinter := GetDefaultPrinter()
// ? PrnStatus( sGetDefaultPrinter )
IF PrnStatus( sGetDefaultPrinter ) = 4096
// Verifica se SPOOLER esta desligado e tenta liga-lo
MsgRun( sGetDefaultPrinter +": "+isprint( GetDefaultPrinter() ) + ;
" ou Spooler Desligado.", "Status da Impressora", ;
{|| WinExec( "NET START SPOOLER", 7 ) } )
ENDIF
//? GetPrinter()
ELSE
MsgInfo( OemToAnsi( "ATEN€ÇO USUµRIO: " )+CRLF+ ;
OemToAnsi( "VERIFIQUE SUA IMPRESSORA SE ESTµ LIGADA. " )+CRLF+ ;
OemToAnsi( "OU SE ESTµ INSTALADA CORRETAMENTE... " )+CRLF+ ;
OemToAnsi( "TEM ALGUMA COISA ERRADA COM A IMPRESSORA?" )+CRLF+ ;
OemToAnsi( "TECLE <ENTER> PARA CONTINUAR... " ), ;
OemToAnsi( "VERIFIQUE SUA IMPRESSORA SE ESTµ LIGADA. " ) )
RETURN( .F. )
ENDIF
RETURN NIL
Re: No sale del GET con Enter
Posted: Mon Aug 07, 2017 8:10 am
by Julio Cepeda
Muchas gracias karinha.
Ya he probado tu código y cambia la impresora por defecto de Windows perfectamente, todo correcto.
Lo que yo quiero y que si me funciona bien con FWH 11.06 y no con 16.12 ni con 17.01, es cambiar la impresora temporalmente para imprimir un documento pero que después de imprimir el documento vuelva a poner la misma impresora predeterminada que tenía Windows al iniciar la aplicación.
Code: Select all
LOCAL oRpr, oGpr, oFon1, oFon2
LOCAL n := 1, nUltimo := Len( aArray ) + 1
DEFINE FONT oFon1 NAME "Courier New" SIZE 0, -11 BOLD
DEFINE FONT oFon2 NAME "Courier New" SIZE 0, -12
REPORT oRpr ;
TITLE " ",;
EmpresaD->crazonso35, ;
EmpresaD->cecifdni09, ;
"Facturas clientes desde el: " + AllTrim( Str( ncCodigo09 ) ) + " " + ccNombre35,;
"hasta el: " + AllTrim( Str( ncCodigFin ) ) + " " + ccNombrFin,;
"Entre el " + Dtoc( dFecIni ) + " y el " + Dtoc( dFecFin ), ;
" " ;
LEFT;
FONT oFon1,;
oFon2 ;
HEADER " ",;
"Fecha: "+DtoC(date())+" "+"Hora: "+Time(),;
" " ;
RIGHT ;
FOOTER ;
" Página: " + Str( oRpr:nPage, 3 ) ;
LEFT CAPTION EmpresaD->crazonso35 ;
PREVIEW
COLUMN TITLE "NºCliente" DATA aArray[ n ][ 4 ] PICTURE "@E 999999999" SIZE 9 FONT 2 RIGHT GRID
COLUMN TITLE "Cliente" DATA SubStr( aArray[ n ][ 5 ], 1, 25 ) SIZE 25 FONT 2 GRID
COLUMN TITLE "Factura" DATA aArray[ n ][ 1 ] PICTURE "@E 999999999" SIZE 9 FONT 2 RIGHT GRID
COLUMN TITLE "Fecha Fra." DATA aArray[ n ][ 3 ] PICTURE "@D" SIZE 10 FONT 2 GRID
COLUMN TITLE "Base" DATA aArray[ n ][ 7 ] PICTURE "@EZ 999,999.99" SIZE 10 FONT 2 TOTAL RIGHT GRID
COLUMN TITLE "Cuota" DATA aArray[ n ][ 8 ] PICTURE "@EZ 99,999.99" SIZE 9 FONT 2 TOTAL RIGHT GRID
COLUMN TITLE "Total" DATA aArray[ n ][ 10 ] PICTURE "@EZ 999,999.99" SIZE 10 FONT 2 TOTAL RIGHT GRID
GROUP ON aArray[ n ][ 4 ] ;
FOOTER "Total cliente nº " + oRpr:aGroups[ 1 ]:cValue + Replicate( " ", 90 )
END REPORT
oRpr:bWhile := { || n < nUltimo }
oRpr:bSkip := { || n ++ }
oRpr:bPostGroup := { | | oRpr:NewLine() }
/*
Con este método aparece una ventana de selección de impresora, imprime con la que seleccione el usuario y después de imprimir deja la que tenía por defecto Windows antes de seleccionar
*/
oRpr:oDevice:Setup()
ACTIVATE REPORT oRpr
oFon1:Release()
oFon2:Release()
Por cierto, aunque tu código si compila y funciona, aparece "Warning W0001 Ambiguous reference 'sGetDefaultPrinter' que no se muy bien que es esto.
Muchas gracias de nuevo y recibe un saludo.
Re: No sale del GET con Enter
Posted: Mon Aug 07, 2017 12:17 pm
by karinha
Re: No sale del GET con Enter
Posted: Mon Aug 07, 2017 2:37 pm
by Julio Cepeda
Gracias karinha.
Probaré a cambiar la impresora, imprimir, y volver a dejar la que estaba predeterminada.
Re: No sale del GET con Enter
Posted: Mon Aug 07, 2017 2:58 pm
by karinha
// classe: PRINTER.PRG
Code: Select all
IF FWVERSION = "FWHX 11.06"
// IMPRIMIR CON EL COMANDO DEL FWH11.06
ELSEIF FWVERSION = "FWHX 16.12"
// IMPRIMIR CON EL COMANDO DEL FWH16.12
ELSEIF FWVERSION = "FWHX 17.01"
// IMPRIMIR CON EL NUEVO COMANDO DEL FWH17.01
ENDIF
Saludos.
Re: No sale del GET con Enter
Posted: Tue Aug 08, 2017 10:09 am
by Julio Cepeda
Es otra solución buena, de nuevo Muchas Gracias.
Re: No sale del GET con Enter
Posted: Tue Aug 08, 2017 6:31 pm
by Julio Cepeda
Ya me funciona con la ayuda de Karinha que me enseño las funciones de manejar la impresora ya me funciona de esta manera:
Code: Select all
#include "FiveWin.ch"
Function Main()
LOCAL oPrn, oFont1
LOCAL cPrinter
cPrinter := GetDefaultPrinter()
PrinterSetUp()
PRINT oPrn NAME "Prueba" PREVIEW
IF Empty( oPrn:hDC )
MsgStop( "¡ No hay IMPRESORA para imprimir !" )
Return NIL
EndIf
DEFINE FONT oFont1 NAME "Arial" SIZE 0, -18 OF oPrn
PAGE
oPrn:CmSay ( 8, 2, PrnGetName(), oFont1 )
ENDPAGE
ENDPRINT
oFont1:End()
SetDefaultPrinter( cPrinter )
Return NIL
Muchas gracias a todos y en especial a Karinha.
Re: No sale del GET con Enter
Posted: Tue Aug 08, 2017 8:02 pm
by karinha
También, puedes hacer de esta forma:
Code: Select all
#Include "FiveWin.ch"
#Define PAD_LEFT 0
#Define PAD_RIGHT 1
#Define PAD_CENTER 2
Function Main()
LOCAL oPrn, oFont1
LOCAL cPrinter
LOCAL ResLinea, ResColumna
cPrinter := GetDefaultPrinter()
PrinterSetUp()
PRINT oPrn NAME "Prueba" PREVIEW MODAL
IF Empty( oPrn:hDC )
MsgStop( "¡ No hay IMPRESORA para imprimir !" )
Return NIL
EndIf
DEFINE FONT oFont1 NAME "Arial" SIZE 0, -18 BOLD OF oPrn
oPrn:SetPage(9) //-> A4 //9
oPrn:SetPortrait() //-> Vertical
// para todos tipos de impresoras
ResLinea := oPrn:nLogPixely()/2.54
ResColumna := oPrn:nLogPixelx()/2.54
PAGE
oPrn:Say ( 5.00 * ResLinea, 10.50 * ResColumna, PrnGetName(), ;
oFont1,, CLR_BLACK,, PAD_CENTER )
ENDPAGE
ENDPRINT
oFont1:End()
SetDefaultPrinter( cPrinter )
Return NIL
Regards, saludos.