PDA

Ver la Versión Completa : Teclado en pantalla


Alex1
31-10-2007, 18:24:15
Hola, necesito poder implementar un teclado en una aplicación delphi, para trabajar en un portatil tactil, ¿como podría hacerlo?

gracias y saludo

fide
01-11-2007, 05:03:08
Bueno. Creo que puedes usar para ello la Api Keybd_Event de delphi. Documentate aqui...

http://www.clubdelphi.com/foros/showthread.php?t=49721

dec
01-11-2007, 05:21:15
Hola,

La pregunta es cuando menos ambigua. Pareciera que se cobra por palabras. ¿Se trata de hacer lo que propone el compañero fide? ¿Tal vez te refieres a cómo trabajar en una aplicación desarrollada en Delphi, teniendo en cuenta que se hará desde una pantalla táctil? ¿Tal vez es otra cosa lo que necesitas? Aquí no se cobra por palabras, y, aunque no se trata de soltar rollos, hay que procurar poner un poco de interés en las preguntas, si es que quiere propiciarse el obtener ayuda.

Sobre esto y algos más se trata en la guía de estilo de los foros (http://www.clubdelphi.com/foros/guiaestilo.php).

fide
01-11-2007, 05:54:32
Es cierto lo que dice mi amigo dec. Es mejor que digas con detalles las cosas que necesitas hacer, como y de que manera. o bueno, algo que nos indique como quieres hacer las cosas...

Ha, un ojo a esto:


------------------------------------------------------------------------
This function synthesizes a keystroke. The system can use such a =ynthesized keystroke to generate a WM_KEYUP or WM_KEYDOWN message.

VOID keybd_event(
BYTE bVk,
BYTE bScan,
DWORD dwFlags,
DWORD dwExtraInfo
);
Parameters

bVk [in] Specifies a virtual-key code. The code must be a value in the =ange 1 to 254. For a list of virtual-key codes, see Virtual-K=y Codes. bScan [in] Specifies a hardware scan code for the key. dwFlags [in] Specifies various aspects of function operation. An =pplication can use any combination of the following predefined constant values to set =he flags. Value Description KEYEVENTF_EXTENDEDKEY If specified, the scan code will be treated as =n extended key by giving it a prefix byte having the value 0xE0 (224). KEYEVENTF_KEYUP If specified, the key is being released. If not specified, the key is being pressed. KEYEVENTF_SILENT If specified, a keystroke is simulated, but no =licking sound is made.
dwExtraInfo [in] Specifies an additional 32-bit value associated with the =eystroke. Return Values

None.
Remarks

When keyboard input is disabled with EnableHardwareKeyboard(FALSE), you can simulate keyboard =nput using keybd_event.
Although keybd_event passes an OEM-dependent hardware scan =ode to the system, applications should not use the scan code. The system converts =can codes to virtual-key codes internally and clears the up/down bit in the =can code before passing it to applications.
The parameters bVk and bScan are treated independently. =he OS does not use bVk to generate bScan and does not use =I>bScan to generate bVk.
An application can simulate a press of the PRINTSCREEN key in order =o obtain a screen snapshot and save it to the clipboard. To do this, call keybd_event with the bVk parameter set to VK_SNAPSHOT, and =he bScan parameter set to 0 for a snapshot of the full screen or set =bScan to 1 for a snapshot of the active window.
Requirements

OS Versions: Windows CE 1.0 and later.
Header: Winuser.h.
Link Library: Uibase.lib.

------------------------------------------------------------------------

Alex1
09-11-2007, 10:54:44
Hola, perdón si soy escueto, pero a veces con las prisas me suele pasar.

El problema lo tengo solucionado, pero aún así lo detallo para que queda constancia del problema y la solución.

El problema que se me planteaba era utilizando en un equipo UMPC (ultra mobile pc) con pantalla tactil, windows vista y una aplicación realizada en delphi 6 con firebird 2, poder crearme un teclado virtual en mi propia aplicación para evitar tener que desplegar el que trae el windows que ademas ser un poco incordio, ocupa mas de la mitad de la pantalla (hablamos de 7" en el umpc).

Para ello estuve buscando alguna libreria que permitiese el envio de una pulsación de teclado al programa... y lo encontré.

Utilizo la libreria sendkey (sndkey32.pas), esta lleva una función que realiza la labor que necesitaba.

Con lo que he podido solucionar el problema.

un saludo y gracias de todas formas por vuestras respuestas.

Alejandro Sirvent