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
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
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 !
