Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 21-09-2005
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
Lanzar evento Keydown sin apretar la tecla (no, no es telekinesis)

Quiero ver como puedo hacerlo, para lanzar lo que seria un evento de OnKeyDown, ya definido en otra parte del codigo, desde otra funcion.

Algo asi como: (Y ante todos ustedes, mi primer esquema de DELPHI)
Código Delphi [-]
  procedure TForm1.cLenguajes.OnChange;
  begin
   Showmessage('Pero que pacha, trooooooon!!!'); //Lo que sea que haga antes
 sLang := cLenguajes.Text; //Modifico la variable de turno
   VK_F5; //Aqui quiero que refresque la pantalla y las operaciones calculada, que equivale a presionar F5
  end;

¿Me he explicado?

Última edición por papulo fecha: 21-09-2005 a las 11:16:09. Razón: Matizando el ejemplo
Responder Con Cita
  #2  
Antiguo 21-09-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
En lugar de "tocar" tenas de eventos, te recomiendo lo siguiente:


Pasa el código que ejecutas cuando pulsas el F5 a un procedimiento aparte
En el onkeydown, si pulsan F5 llamas a este procedimiento
Y en la función que comentas, pues también llamas a este procedimiento

Espero que te sirva.

Edu
Responder Con Cita
  #3  
Antiguo 21-09-2005
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
No me interesa lanzar procesos a parte para presionar las teclas, ya lo tengo todo muy claro y limpio, como para hacer procesos a parte.

¿Tan complicado es decirle al programa "Haz como si pulsara F5, chavalote" y dejar que haga lo que le toca?

De todas formas, gracias por la respuesta, siempre es un detalle que la gente responda tan rapido.
Responder Con Cita
  #4  
Antiguo 21-09-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.265
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si en tu evento tienes algo "parecido" a esto:

Código Delphi [-]
   if (key = vk_F5) then begin
     MessageDlg('keyDown F5', mtWarning, [mbOK], 0);
   end;

para simular la tecla puedes usar PostMessage:

Código Delphi [-]
   // Debes enviarlo a un control, form,...  (en éste caso sería a un Memo)
   PostMessage(Memo1.Handle, WM_SYSKEYDOWN, VK_F5, 0);
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #5  
Antiguo 21-09-2005
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
Mi evento apretando F5 es exactamente este:

Código Delphi [-]
 procedure TFiller.FormKeyDown(Sender: TObject; var Key: Word;
   Shift: TShiftState);
 begin
 case Key of
 VK_F5 : case iStatus of
             0 : exit;
             else
             wKeyPress:= VK_F5;
             Lanzar_Consulta;
         end;
 VK_ESCAPE : case iStatus of
 ...
El otro evento que tendria que lanzar una orden como si apretara F5 seria este:
Código Delphi [-]
 procedure TFiller.cIdiomaChange(Sender: TObject);
 begin
 cLang.ItemIndex := cIdioma.ItemIndex;
 sLang := cLang.Text;
 //Aqui la instruccion que me falta, que lance el evento que se inicia al apretar F5.
 end;

Dicho queda.

Sobre lo que tu me dices, aun me suena a chino, soy un pez aun.
Responder Con Cita
  #6  
Antiguo 21-09-2005
Avatar de epuigdef
epuigdef epuigdef is offline
Miembro
 
Registrado: jul 2005
Posts: 196
Poder: 19
epuigdef Va por buen camino
Cuestión de gustos. A mi me parece incluso más limpio con un simple procedimiento que creando mensajes de teclado, pero bueno, funciona de las dos formas!

Un saludo

Edu
Responder Con Cita
  #7  
Antiguo 21-09-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.265
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Cita:
Empezado por papulo
//Aqui la instruccion que me falta, que lance el evento que se inicia al apretar F5.
En esa línea coloca ésta:

Código Delphi [-]
      PostMessage(Self.Handle, WM_SYSKEYDOWN, VK_F5, 0);
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #8  
Antiguo 21-09-2005
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
CopyPasteado. ¿Me puedes explicar que es lo que he hecho? Retengo mejor las cosas cuando las entiendo.

Gracias.
Responder Con Cita
  #9  
Antiguo 21-09-2005
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.265
Poder: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Resumiendo mucho, lo que has hecho es utilizar la función de la API PostMessage para enviar un mensaje a un control (en éste caso el form).

-------------------------------------------------------------------------------
API HELP:
The PostMessage function places (posts) a message in the message queue associated with the thread that created the specified window and then returns without waiting for the thread to process the message.
-------------------------------------------------------------------------------

Cuando se presiona una tecla, internamente se gestiona utilizando diferentes mensajes. En éste caso, cuando pulsas una tecla (Down) se utiliza el mensaje WM_SYSKEYDOWN que le llega al formulario con el valor -en este caso- VK_F5 (que es la constante que define el F5).

La API anteriormente citada sirve para añadir un nuevo mensaje a la cola de mensajes y lo que has hecho es algo así como: "Añadir a la cola un nuevo mensaje para el Formulario -Self.Handle-, del tipo WM_SYSKEYDOWN y con el valor VK_F5".
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita
  #10  
Antiguo 22-09-2005
Avatar de papulo
papulo papulo is offline
Miembro
 
Registrado: ago 2005
Ubicación: Lleida - Cataluña - España -Europa - Planeta tierra - Sistema solar - Via Lactea ...
Posts: 542
Poder: 19
papulo Va por buen camino
Me va a las 1000 maravillas. Gracias miles, de verdad, de la buena.
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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 22:02:48.


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