![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
#1
|
|||
|
|||
dbedit y foco
Hola amigos, no se si este es el foro correcto para mi consulta pero como es de dbedit y tablas creo que si.
Tengo un tform donde tengo unos cuantos dbedit, todos con sun datasource y table o query, en el evento onKeyDown fel form he capturado la tecla F11 para que me muestre otro form, algo asi: IF KEY=VK_F11 THEN Form2.SHOWMODAL; Lo que quiero saber es: en el form2, en que dbedit del form1 estaba el foco al momento de presionar F11. No se si esta claro, tengo que saber que dbedit es para llegar al dataset. Gracias |
#3
|
||||
|
||||
Al evento OnKeyDown se le pasa el parámetro Sender (del tipo TObject) que es el Objeto, en este caso el DBEdit que ha provocado la pulsación de la tecla F11.
Basta con que ese Sender lo pases como parámetro adicional a tu Form2, o le asignes el nombre de ese sender a una variable pública, p.ej, y accedas a ella desde tu Form2. Hay muchas maneras. Dependerá de que uso le quieras dar en el Form2.
Saludos, ![]()
__________________
Piensa siempre en positivo ! |
#4
|
||||
|
||||
Tengo el presentimiento amigo GluGlu, que el resultado de lo que propones será siempre el formulario (Form) donde se presiona F11 y no el control que estamos buscando, es decir, el que tiene el foco.
__________________
|
#5
|
||||
|
||||
Perdón, creo tener que especificar adicionalmente que en el evento OnKeyDown de cada uno de los DBEdits, tienes que poner como evento en este caso el procedimiento que yo he llamado 'FormKeyDown'.
Creo que el nombre del procedimiento puede llevar a confusíón. Lo que pasa es que yo lo utilizo con ese nombre tanto para el Form, en caso de que por cualquier causa necesite activar el KeyPreview del Form, y también asigno ese mismo porcedimiento con ese nombre a los propios DBEdit's. Es la cosa de copiar y pegar código realizado. ![]() En cualquier caso, llámese como se llame el procedimiento asignado al OnKeyDown de los DBEdit's que tienes, al pulsar la tecla teniendo el Foco el DBEdit, el parámetro que se pasa como Sender es el propio DBEdit. Perdón por la posible confusión. ![]()
__________________
Piensa siempre en positivo ! |
#6
|
||||
|
||||
Así ya cambia la cosa
![]() En teoría si asignas el evento onFormKeyDown al evento OnKeyDown de todos los dbedits, obtendrás aquel que tenía el foco cuando se presionó la tecla. Ya nos avisarás cuál de los dos métodos usaste. Saludos
__________________
|
#7
|
|||
|
|||
lo de gluglu tengo que hacerlo para cada evento onkeydown de cada dbedit, el consejo de contraveneno esta bien porque con solo ponerlo en el evento onkeydown del form que contiene los dbedit funciona barbaro.
el tema es que no logro obtenerlo en el form2 que lo muestro a presionar f11, tengo que hacer una variable global o existe otra manera? Gracias por sus respuestas. |
#8
|
||||
|
||||
Enlazando los dos formularios atravez de la cláusula Uses puedes acceder desde un formulario a otro.
Se me ocurre que declares un objeto dbedit en el form2 y en el evento onkeydown del form 1 hacer algo así como form2.ObjetoCreado:=(ActiveControl as TDBEdit);
__________________
|
#9
|
||||
|
||||
Personalmente ... e insisto, es una opinión personal mía, prefiero asignar el evento a cada uno de los DBEdits. Así puede individualizar más tarde si lo necesito, teclas especiales para cada DBEdit u otras cosas particulares.
Si lo haces desde el Form, necesariamente tendrás que poner en True la propiedad KeyPreview del Form, y cualquier tecla en cualquier elemento del form pasará primero por ese evento. Tampoco es mucho problema si tienes muchos DBEdit's en el form, asignarles el mismo evento OnKeyDown a cada uno. Basta con ir seleccionando todos con la tecla 'Shift' pulsada, y después a todos juntos asignarles el procedimiento adecuado a su evento OnKeyDown. Respecto a la variable, y el enlace de los dos forms, hay muchas maneras, variables públicas, globales, incluso propiedades. Sobre gustos en esto no hay nada escrito ![]()
__________________
Piensa siempre en positivo ! |
![]() |
|
|
![]() |
||||
Tema | Autor | Foro | Respuestas | Último mensaje |
Foco | buitrago_listas | Varios | 1 | 19-01-2005 15:30:16 |
Como dar el Foco | FNADALO | Varios | 4 | 01-12-2004 22:08:24 |
Form sin foco | AndyG | OOP | 2 | 01-09-2004 14:46:36 |
Foco StringGrid | Rabata | Varios | 2 | 09-08-2004 21:55:10 |
Foco | buitrago | Varios | 1 | 31-12-2003 20:18:11 |
![]() |
|