Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 15-06-2005
gryphus gryphus is offline
Miembro
 
Registrado: abr 2005
Posts: 40
Poder: 0
gryphus Va por buen camino
Mandar datos con patalla tactil

He de hacer un programa que, mediante una pantalla tactil y un teclado virtual numérico, envie el valor de la tecla que pulso a otro lugar... Como puedo hacer esto? Hay algun evento que lo permita ya?
Gracias!
Responder Con Cita
  #2  
Antiguo 15-06-2005
gryphus gryphus is offline
Miembro
 
Registrado: abr 2005
Posts: 40
Poder: 0
gryphus Va por buen camino
Mandar datos con patalla tactil

He de hacer un programa que, mediante una pantalla tactil y un teclado virtual numérico, envie el valor de la tecla que pulso a otro lugar... Como puedo hacer esto? Hay algun evento que lo permita ya?
Gracias!
Perdonad las molestias, me confundí de foro y lo puse en el de SQL, moderadores, lo siento, lo podéis borrar.
Responder Con Cita
  #3  
Antiguo 15-06-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Puedes hacerlo enviando un mensaje (WM_KEYDOWN, WM_KEYUP) si nececitas hacerlo a una ventana en particular, sino utilizando keybd_event para que lo reciba quien tiene el foco.

PD: ¿Conoces la herramienta de Teclado en Pantalla que trae Windows?

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #4  
Antiguo 15-06-2005
gryphus gryphus is offline
Miembro
 
Registrado: abr 2005
Posts: 40
Poder: 0
gryphus Va por buen camino
No, no conozco esa herramienta... en que consiste??
Responder Con Cita
  #5  
Antiguo 15-06-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
Es un tecladito en pantalla que hace exactamente lo que tu quieres hacer.
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #6  
Antiguo 15-06-2005
gryphus gryphus is offline
Miembro
 
Registrado: abr 2005
Posts: 40
Poder: 0
gryphus Va por buen camino
A!!! Ok! Muchas grácias! Voy a probarlo. En quanto tenga una solución, o otra duda :P, te lo comunico ok?
Merci!
Chao
Responder Con Cita
  #7  
Antiguo 16-06-2005
gryphus gryphus is offline
Miembro
 
Registrado: abr 2005
Posts: 40
Poder: 0
gryphus Va por buen camino
El problema me persiste....
A ver... sigo el consejo de Delphi.com.ar ya que creo que es la solución más lógica (y en parte es la que pensava antes pero no sabía como hacerlo...)
Ahora tengo el problema de que no se como crear la sentencia para que me salga el programa.
El texto que escriba en el teclado numérico virtual tiene que ir hacia otra ventana (pongo el ejemplo de que quiero escribir en el Word o en el Foro mismo) pero no se como hacerlo...
Plis...
Grácias.

edit:
P.D. Parece ser que he encontrado una manera de hacer lo que quiero usando el WM_KEYDOWN, el problema es que solo me lo escribe en el mismo formulario. Hay alguna propiedad para que el formulario te quede en una especie de "segundo termino" para poder poner el foco en otra ventana y seguir viendo el teclado virtual?

Última edición por gryphus fecha: 16-06-2005 a las 09:06:16.
Responder Con Cita
  #8  
Antiguo 17-06-2005
gryphus gryphus is offline
Miembro
 
Registrado: abr 2005
Posts: 40
Poder: 0
gryphus Va por buen camino
No se si no encontráis una solución para mi problema... yo he ido probando cosas pero no hay manera... he echo alguna prueba como esto...
El mayor problema es que necesito que el foco se mantenga en la pantalla en la que quiero escribir los numero y cuando aprieto un boton en mi aplicació el foco pasa cambia a mi aplicación. Supongo que la solución sería encontrar la manera de que el foco se mantenga en el mismo sitio sin pasar al programa.

Me han dicho que se puede desactivar que el foco se vaya al programa usando WS_EX_NOACTIVATE pero solo funciona en WinXP y yo uso 2000, y mis clientes también...

Uso WM_KEYDOWN para enviar el mensaje... esta es la linia de código que uso...

Código:
 
PostMessage(edit1.Handle, WM_KEYDOWN, 51, 0);
Esto se lo pongo en el momento de hacer click en un boton. Al poner "edit1.handle", en el momento de presionar el boton, me envia el valor 51 (representa el número 3) y se visualiza en la caja de texto...

Luego he probado lo siguiente:

Código:
 

PostMessage(FindWindow(Nil, Pchar('Caption dl programa')), WM_close, 0, 0);
Esto busca una ventana de windows que tenga en el caption el nombre que le haya puesto entre comillas ' ', con WM_CLOSE lo cierra... y funciona. Entonces, x logica, e probado haciendo esto...
Código:
 

PostMessage(FindWindow(Nil, Pchar('Caption dl programa')), WM_KEYDOWN, 51, 0);
Así en teoria (yo pensava) debería enviar el valor 51 (número 3) a la ventana con el caption y enviarle el dato... no funciona
Con esto... alguien tiene alguna idea de como seguir?

Gracias otra vez...
Responder Con Cita
  #9  
Antiguo 17-06-2005
Avatar de delphi.com.ar
delphi.com.ar delphi.com.ar is offline
Federico Firenze
 
Registrado: may 2003
Ubicación: Buenos Aires, Argentina *
Posts: 5.932
Poder: 27
delphi.com.ar Va por buen camino
En un ratito hice esto, y funciona sin aparentes problemas:
Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormClick(Sender: TObject);
  private
  protected
    procedure CreateParams(var Params: TCreateParams); override;
  public
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited;
  Params.ExStyle := (Params.ExStyle or WS_EX_NOACTIVATE);
end;

procedure TForm1.FormClick(Sender: TObject);
begin
  keybd_event(VK_RETURN, 0, 0, 0);
end;

end.

El problema que tienes al enviar el mensaje, es que seguramente se lo estas enviando al form contenedor, y no al editor que necesitas que lo reciba.

Saludos!
__________________
delphi.com.ar

Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla.
Responder Con Cita
  #10  
Antiguo 17-06-2005
gryphus gryphus is offline
Miembro
 
Registrado: abr 2005
Posts: 40
Poder: 0
gryphus Va por buen camino
Delphi.com.ar, te han dicho alguna vez que eres el amo?? xD Grácias, ya he solucionado el problema.
Ni probé a ver si funcionaba WS_EX_NOACTIVATE pues me habían comentado eso, que no funcionava con Win2000 y ya ni lo probé.
A más, tal como me has pasado el código hacía un enter :
Código Delphi:
keybd_event(VK_RETURN, 0, 0, 0);

de manera que lo he adaptado para que escriba un número. Tan solo se tiene que poner el código ASCII del número en cuestion y ya está.

Código Delphi:
keybd_event(49, 0, 0, 0);
(El número uno)

Grácias!!!!
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 16:01:04.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi