Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 17-05-2007
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 22
ebeltete Va por buen camino
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
Responder Con Cita
  #2  
Antiguo 17-05-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
Código Delphi [-]
IF KEY=VK_F11 THEN
 Showmessage((ActiveControl as TWinControl).Name);

Espero te de una idea.
__________________

Responder Con Cita
  #3  
Antiguo 17-05-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
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.

Código Delphi [-]
...
public
   DBEditQueBuscas : TDBEdit;

procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
var
  NombreQueBuscas : String;
begin
 
  NombreQueBuscas := (Sender as TDBEdit).Name;
  // Si lo que buscas es el nombre
 
  DBEditQueBuscas := Sender;
  // De esta manera tienes acceso directo al DBEdit que envio la tecla F11
 
end;

Saludos,
__________________
Piensa siempre en positivo !
Responder Con Cita
  #4  
Antiguo 17-05-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
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.
__________________

Responder Con Cita
  #5  
Antiguo 17-05-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
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 !
Responder Con Cita
  #6  
Antiguo 17-05-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
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
__________________

Responder Con Cita
  #7  
Antiguo 17-05-2007
ebeltete ebeltete is offline
Miembro
 
Registrado: may 2003
Posts: 236
Poder: 22
ebeltete Va por buen camino
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.
Responder Con Cita
  #8  
Antiguo 17-05-2007
Avatar de ContraVeneno
ContraVeneno ContraVeneno is offline
Miembro
 
Registrado: may 2005
Ubicación: Torreón, México
Posts: 4.738
Poder: 23
ContraVeneno Va por buen camino
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);
__________________

Responder Con Cita
  #9  
Antiguo 17-05-2007
Avatar de gluglu
[gluglu] gluglu is offline
Miembro Premium
 
Registrado: sep 2004
Ubicación: Málaga - España
Posts: 1.455
Poder: 21
gluglu Va por buen camino
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 !
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

Temas Similares
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


La franja horaria es GMT +2. Ahora son las 04:50:11.


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