CA-Visual Objects - Capturar tecla

 
Vista:

Capturar tecla

Publicado por Jose Luis Perez (7 intervenciones) el 20/01/2005 22:31:49
Estoy iniciando un programa en Visual Objects (soy principiante). Actualmente tengo una ventana Data Window, en la cual esta incluido un Databrowse.
ya puedo realizar operaciones presionando un boton en una barra de herramientas. Puedo Agregar, modificar o borrar un registro (de acuerdo al boton presionado). Lo que deseo es que estando en el Databrowse poder detectar la tecla presionada para asignarle una funcion.

Trate de asignar una tecla rapida a cada boton, pero algunas teclas como el 'Suprimir o Delete' no me las acepta. y el metodo Keydown no me funciona.

Espero me puedan ayudar, de antemano muchas gracias por su atencion

Saludos
Jose Luis Perez

Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Capturar tecla

Publicado por José Cordero (95 intervenciones) el 24/01/2005 23:23:19
- Para una DataWindows puedes agregarle este metodo:

METHOD Dispatch(oE) CLASS __FormDialogWindow

// This is one of the windows that makes
// up a DataWindow

IF oE:message == WM_COMMAND .and. oE:wParam == IDCANCEL

PostMessage(SELF:owner:owner:handle(),WM_CHAR,VK_ESCAPE,0)
RETURN 1L

ENDIF

RETURN SUPER:dispatch(oE)

- Para el DataBrowser crear una subclase por ej. MyBrowser
- y en el Metodo Dispach()

METHOD Dispatch( oEvent ) CLASS MyBrowser
LOCAL DIM aKeyStates[256] AS BYTE
LOCAL nHFlag AS DWORD

IF oEvent:Message==WM_COMMAND
nHFlag:=HiWord(oEvent:wParam)

DO CASE
CASE nHFlag=CN_ENTER // ENTER -Editar
SELF:Owner:owner:PBEditar()
CASE nHFlag=CN_ESCAPE // ESCAPE -Salir
SELF:Owner:Owner:PBCerrar()
CASE nHFlag=CN_F2 // F2 -Ver (ordenar)
SELF:Owner:Owner:Ver()
CASE nHFlag=CN_F3 // F3 -Buscar
SELF:Owner:Owner:Buscar()

CASE nHFlag=CN_INSERT // INSERT -Agregar
MessageBox(0, "hola","Tit INSERT",MB_OK)
GetKeyboardState(@aKeyStates)
// Set the Insert of teh keyboard back!
IF _And(aKeyStates[VK_INSERT+1],1)==0
aKeyStates[VK_INSERT+1]:= 1
SetKeyboardState(@aKeyStates)
ELSEIF _And(aKeyStates[VK_INSERT+1],1)==1
aKeyStates[VK_INSERT+1]:= 0
SetKeyboardState(@aKeyStates)
END IF
SELF:Owner:Owner:Append()
RETURN 1L

END CASE
END IF

RETURN SUPER:Dispatch(oEvent)

Espero te sirva, esa es la forma que yo encontrado en manejar las teclas talvez alguien tengo alguna otra excelente idea.

Saludos y suerte
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Capturar tecla

Publicado por Jose Luis Perez C (7 intervenciones) el 27/01/2005 21:14:25
Jose... gracias por tu ayuda.
he escrito el codigo asi como me lo has enviado, pero no me funciona.
Lo tengo que llamar o activar desde alguna parte, necesito alguna libreria en especial, o sera por que estoy trabajando con la version Trial 2.5.
Que mas puedo hacer ?


Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Capturar tecla

Publicado por José Cordero (95 intervenciones) el 28/01/2005 19:53:18
Yo trabajo con la versión 2.5 y por lo tanto debe de funcionar sin ningun problema.

- Para crear la clase:
CLASS MyBrowser INHERIT DataBrowser

- Teclea el codigo del mensaje anterior y el del metodo Dispatch()

- Ahora ve y edita tu ventana con el Formulario del "DataBrowser" y te vas a las propiedades de la venta y en la pestaña "DataWindow" seleccionas la primera opción que es "Inherit from Class" y aquí ponemos el nombre de la subclase que creamos "MyBrowser" y te debe de funcionar sin ningun problema.

Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar