FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour No sale del GET con Enter
Posts: 73
Joined: Wed Oct 12, 2005 06:58 PM
No sale del GET con Enter
Posted: Thu Aug 03, 2017 05:09 PM
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 (fw): Select all Collapse
 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.
Saludos

julio@cepedaserinf.es
FiveWin 25.06 + Harbour 3.2.0dev (r2503251254), BCC 7 Windows 11
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: No sale del GET con Enter
Posted: Thu Aug 03, 2017 05:38 PM
Code (fw): Select all Collapse
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
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 73
Joined: Wed Oct 12, 2005 06:58 PM
Re: No sale del GET con Enter
Posted: Thu Aug 03, 2017 06:08 PM

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

Saludos

julio@cepedaserinf.es
FiveWin 25.06 + Harbour 3.2.0dev (r2503251254), BCC 7 Windows 11
Posts: 73
Joined: Wed Oct 12, 2005 06:58 PM
Re: No sale del GET con Enter
Posted: Thu Aug 03, 2017 06:42 PM

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.

Saludos

julio@cepedaserinf.es
FiveWin 25.06 + Harbour 3.2.0dev (r2503251254), BCC 7 Windows 11
Posts: 73
Joined: Wed Oct 12, 2005 06:58 PM
Re: No sale del GET con Enter
Posted: Fri Aug 04, 2017 07:58 AM

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.

Saludos

julio@cepedaserinf.es
FiveWin 25.06 + Harbour 3.2.0dev (r2503251254), BCC 7 Windows 11
Posts: 73
Joined: Wed Oct 12, 2005 06:58 PM
Re: No sale del GET con Enter
Posted: Fri Aug 04, 2017 02:56 PM

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.

Saludos

julio@cepedaserinf.es
FiveWin 25.06 + Harbour 3.2.0dev (r2503251254), BCC 7 Windows 11
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: No sale del GET con Enter
Posted: Fri Aug 04, 2017 03:00 PM
Intenta ahora:

Code (fw): Select all Collapse
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
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 73
Joined: Wed Oct 12, 2005 06:58 PM
Re: No sale del GET con Enter
Posted: Mon Aug 07, 2017 08:10 AM
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 (fw): Select all Collapse
 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.
Saludos

julio@cepedaserinf.es
FiveWin 25.06 + Harbour 3.2.0dev (r2503251254), BCC 7 Windows 11
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: No sale del GET con Enter
Posted: Mon Aug 07, 2017 12:17 PM
Code (fw): Select all Collapse
   LOCAL sGetDefaultPrinter
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 73
Joined: Wed Oct 12, 2005 06:58 PM
Re: No sale del GET con Enter
Posted: Mon Aug 07, 2017 02:37 PM

Gracias karinha.

Probaré a cambiar la impresora, imprimir, y volver a dejar la que estaba predeterminada.

Saludos

julio@cepedaserinf.es
FiveWin 25.06 + Harbour 3.2.0dev (r2503251254), BCC 7 Windows 11
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: No sale del GET con Enter
Posted: Mon Aug 07, 2017 02:58 PM
// classe: PRINTER.PRG
Code (fw): Select all Collapse
   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.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
Posts: 73
Joined: Wed Oct 12, 2005 06:58 PM
Re: No sale del GET con Enter
Posted: Tue Aug 08, 2017 10:09 AM

Es otra solución buena, de nuevo Muchas Gracias.

Saludos

julio@cepedaserinf.es
FiveWin 25.06 + Harbour 3.2.0dev (r2503251254), BCC 7 Windows 11
Posts: 73
Joined: Wed Oct 12, 2005 06:58 PM
Re: No sale del GET con Enter
Posted: Tue Aug 08, 2017 06:31 PM
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 (fw): Select all Collapse
 #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.
Saludos

julio@cepedaserinf.es
FiveWin 25.06 + Harbour 3.2.0dev (r2503251254), BCC 7 Windows 11
Posts: 8515
Joined: Tue Dec 20, 2005 07:36 PM
Re: No sale del GET con Enter
Posted: Tue Aug 08, 2017 08:02 PM
También, puedes hacer de esta forma:

Code (fw): Select all Collapse
#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.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341

Continue the discussion