Page 1 of 1

ON KEY ?

Posted: Fri Jul 03, 2015 4:31 pm
by LOUIS
Hola Amigos :

Tengo una inquietud, en una programación tengo lo siguiente:

ON KEY UP ACTION ThisWindow.Release
ON KEY DOWN ACTION ThisWindow.Release
ON KEY RIGHT ACTION ThisWindow.Release
ON KEY LEFT ACTION ThisWindow.Release

Qué debo poner en una sola línea de ON KEY para que el usuario pulse cualquier tecla y continúe el Programa, y no se limite sólo a pulsar una de las 4 flechas direccionales ?

Antes podía escribir INKEY(0) en clipper, pero en ambiente gui no lo reconoce :oops:

De antemano agradezco vuestra ayuda.

Re: ON KEY ?

Posted: Fri Jul 03, 2015 6:25 pm
by Pablo César
LOUIS wrote:tengo lo siguiente:

ON KEY UP ACTION ThisWindow.Release
ON KEY DOWN ACTION ThisWindow.Release
ON KEY RIGHT ACTION ThisWindow.Release
ON KEY LEFT ACTION ThisWindow.Release

Qué debo poner en una sola línea de ON KEY para que el usuario pulse cualquier tecla y continúe el Programa
Si no defines nada para otra teclas, irá continuar en el programa.
A no ser que la tecla presionada sea una de esas cuatro que definiste.

y no se limite sólo a pulsar una de las 4 flechas direccionales ?
No entendi.
Antes podía escribir INKEY(0) en clipper, pero en ambiente gui no lo reconoce
Todo depende en que control o como está tu código. Podrias mostrar un demo ?

Re: ON KEY ?

Posted: Fri Jul 03, 2015 7:22 pm
by LOUIS
Amigo Pablo, lo que sucede es que muestro la imagen de un producto en ambiente gui y luego al pulsar una tecla, debe volver al ambiente console.
Esto es porque le recuerdo, mi proyecto es mix console-gui :roll:

Ah, por cierto, compilo con la versión 3.0.46 que es la más adecuada para mi proyecto.

ON KEY ?

Posted: Fri Jul 03, 2015 7:27 pm
by Pablo César
Te entendi, pero me gustaria que puedas postear un ejemplecito nomás, puede ser ?

Puede ser con apenas un ENTER el retorno o tiene que ser con cualquier tecla presionada ?

Re: ON KEY ?

Posted: Fri Jul 03, 2015 7:31 pm
by LOUIS
... VIENE DE CONSOLE ...
DO FLASH3
... CONTINUA CONSOLE ...

Code: Select all

*-------------------
procedure FLASH3

   DATO='C:\FOTOS\'+ALLTRIM(QFOTO)
   DATO2=ALLTRIM(SUBSTR(DATO,10,24))

DEFINE WINDOW IMAGEN3;
   AT 305,625 WIDTH 395 HEIGHT 320 NOCAPTION NOSIZE
   @ 0,0 IMAGE FOTO PICTURE "&DATO" WIDTH 395 HEIGHT 320 STRETCH
   @ 0,0 LABEL Label_1 WIDTH 395 HEIGHT 36 FONT "ARIAL" SIZE 20 BOLD FONTCOLOR WHITE VALUE "&DATO2" TRANSPARENT

   ON KEY UP ACTION ThisWindow.Release
   ON KEY DOWN ACTION ThisWindow.Release
   ON KEY RIGHT ACTION ThisWindow.Release
   ON KEY LEFT ACTION ThisWindow.Release

END WINDOW

IMAGEN3.Activate

   sigue = .f.
   return

*-------------------
QUE SALGA CON CUALQUIER TECLA PRESIONADA PARA QUE CIERRE LA IMAGEN ...

Re: ON KEY ?

Posted: Fri Jul 03, 2015 7:37 pm
by Pablo César
Como empiezaria tu Function Main ?

Agradeceria que no pongas en mayusculas (eso equivale a estar gritando en internet)

Re: ON KEY ?

Posted: Fri Jul 03, 2015 7:47 pm
by LOUIS
Oh, disculpad ... el codigo lo tengo en mayusculas :(

Code: Select all

#include "hmg.ch"
REQUEST HB_GT_WIN_DEFAULT

FUNCTION MAIN()
SET MULTIPLE OFF WARNING
SET TOOLTIPSTYLE BALLOON
SET NAVIGATION EXTENDED

   DEFINE WINDOW PRINCIPAL;
      AT 0,0 WIDTH 0 HEIGHT 0 NOSHOW MAIN;
      ON INIT ENTRADA()
   END WINDOW
ACTIVATE WINDOW PRINCIPAL
RETURN NIL

*-------------------------
Procedure ENTRADA()
// Console-Part
Disable_X()
PRINCIPAL.HIDE

contínua en modo console ...


ON KEY ?

Posted: Fri Jul 03, 2015 9:53 pm
by Pablo César
Louis,

La verdad que eso Mix Console es un tremendo trabajo que dá conciliar eso. Yo desestimulo el uso.

Habia conseguido algo pero el foco de la ventana GUI no permitia digitar en la venta console, entoce decidi por llamar el aplicativo que apenas exibe la foto.

Code: Select all

/*
   Demo1.prg - Based on enhanced sample at C:\hmg.3.4.0\SAMPLES\Basics\MIXEDCONSOLE\demo
   By Pablo César Arrascaeta
   July 3rd, 2015
*/

#include "hmg.ch"

REQUEST HB_GT_WIN_DEFAULT

Function Main(cFoto,cProd)
Public hWnd1, hWnd2
/*
DEFINE WINDOW PRINCIPAL;
      AT 0,0 WIDTH 0 HEIGHT 0 NOSHOW MAIN;
      ON INIT ENTRADA()
END WINDOW
ACTIVATE WINDOW PRINCIPAL
*/
If cFoto=Nil
   ENTRADA()
Else
   FLASH3(cFoto,cProd)
Endif
Return Nil

Function ENTRADA()
Local cProducto:=Space(30)

hWnd1:=GetConsoleWindowHandle()

SetMode(25,80)
Do While .T.
   cls
   @ 12,00 GET cProducto PICTURE "@!"
   READ
   If Lastkey()=27
      Exit
   Endif
   // EXECUTE FILE Demo1.exe PARAMETERS "HMG.JPG" cProducto
   ShellExecute ( 0, Nil, "Demo1.exe", "HMG.JPG "+cProducto, Nil, 10 )
Enddo
Return Nil

Function FLASH3(QFOTO,DATO)
// SetForeGroundWindow( hWnd2 )

DEFINE WINDOW IMAGEN3 AT 305,625 WIDTH 395 HEIGHT 320 NOCAPTION NOSIZE MAIN
   
   @ 0,0 IMAGE FOTO PICTURE QFOTO WIDTH 395 HEIGHT 320 STRETCH
   @ 0,0 LABEL Label_1 WIDTH 395 HEIGHT 36 FONT "ARIAL" SIZE 20 BOLD FONTCOLOR WHITE VALUE DATO TRANSPARENT

   CREATE EVENT PROCNAME Proc_OnKey()

END WINDOW
hWnd2:=GetFormHandle("IMAGEN3")
IMAGEN3.Activate
Return Nil

Function Proc_OnKey()
LOCAL wParam
   
HMG_GetLastVirtualKeyDown(NIL, NIL, @wParam, NIL)
If wParam > 0
   // DISABLE WINDOW EVENT OF IMAGEN3
   // IMAGEN3.Hide
   Quit
   // ThisWindow.Release
   SetForeGroundWindow( hWnd1 )
   Return 0
Endif
// HMG_CleanLastVirtualKeyDown(.T.)
SetForeGroundWindow( hWnd2 )
Return NIL

#pragma BEGINDUMP
#define WINVER 0x0600 // for Vista
#define _WIN32_WINNT 0x0600 // for Vista

#include "windows.h"
#include "hbapi.h"

HB_FUNC( GETCONSOLEWINDOWHANDLE )
{
    HWND hwnd;
    AllocConsole();
    hwnd = FindWindowA("ConsoleWindowClass",NULL);
    hb_retnl( (LONG) hwnd );
}
#pragma ENDDUMP
Considere este ejempo con el nombre Demo1.prg -> Demo1.exe.

Espero que te ayude.

LOUIS wrote:Oh, disculpad ... el codigo lo tengo en mayusculas
Qué chistoso que eres ! :mrgreen: