FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
DBLookupComboBox1.Perform
Un cordial saludo a todos.
La verdad es que nunca he tenido mucho manejo de los mensajes de Windows, y la verdad en la siguiente instrucción (que Koder me aconsejo en un hilo anterior): DBLookupComboBox1.Perform(WM_KEYDOWN, VK_DOWN, 0); o en otras de tipo similar, no entiendo el valor 0 (que en la referencia de Delphi aparece como LParam) que significa. Agradezco cualquier información al respecto |
#2
|
||||
|
||||
Todos los mensajes de la VCL tienen esos 3 parámetros. Si alguno no se utiliza, se le da un cero.
Perform (m:Tmessage, HParam:integer, Lparam:integer) M es el mensaje que se va a mandar, en este caso se indica que es la presion de una tecla WM_KEYDOWN, pero tambien podría ser WM_KEYUP (por ejemplo) HParam, es tambien nombrada como High Param, parte alta del parámetro, que tambien es un entero, y en este caso, se dice la tecla que se va a pulsar, (flecha abajo). Lparam, se conoce como Low Param, parte baja del parámetro, en algunos casos se utiliza y en otros no. Cuando no se utiliza, se le da el valor 0. Un ejemplo en el que los 3 parámetros tienen información relevante es el siguiente: Si usamos Perform(wm_keydown, vk_tab,1) es identico a presionar la tecla tabulador, y pasar el foco al siguiente control. En el caso de Perform(wm_keydown, vk_tab,-1) haría el equivalente a Shift+tab, es decir, enviar el foco al control que tiene un taborder inferior. Aqui compruebas que el valor de Lparam si es relevante, ya que dependiendo de su valor se hace una cosa u otra. (que conste que lo de vk_tab lo digo de memoria, igual son valores, -1, 0 o bien 0, 1 ) Un saludo
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#3
|
|||
|
|||
Gracias Lepe por tu respuesta, quiero confirmar si entendí los valores que puede tomar LPARAM: 0, 1 ó -1.
Saludos... |
#4
|
||||
|
||||
Cita:
Hagamos algunas aclaraciones. Los mensajes WM_XXX, realmente no son parte de la VCL, sino que forman parte del sistema de mensajes del sistema operativo.Windows se comunica con las ventanas enviando estos mensajes y cada ventana reacciona según sus necesidades. La VCL traduce este sistema de mensajes en un sistema de eventos (OnKeyDown por ejemplo) pero deja abierta la posibilidad de acceder directamente al envío de mensajes de Windows con métodos como Perform. Los parámetros de Perform corresponden a los parámetros de la función SendMessage de la API de Windows y sus nombres clásicos son WParam y LParam. La W y la L vienen de Word y Long, refiriéndose a los tipos de datos (Word un enterode 16 bits y Long un entero de 32 bits) aunque esto quedó para la historia ya que actualmente ambos son enteros de 32 bits. Los valores de WParam y LParam, tal como indica Lepe, dependen del mensaje en específico y pueden ser muy variados. En ocasiones representan en realidad punteros a estructuras de datos con más información. En el caso específico de WM_KEYDOWN, el valor de los parámetros, según el SDK de Windows es: Cita:
// Saludos |
#6
|
|||
|
|||
Muchas gracias Roman, estudiare mas a fondo el tema con base en la explicación tuya.
Saludos... |
|
|
|