Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   tener 2 componenentes visuales activos a la vez (https://www.clubdelphi.com/foros/showthread.php?t=48945)

lejia 08-10-2007 22:21:05

tener 2 componenentes visuales activos a la vez
 
hola a todos, tengo 2 componentes, uno un tedit, y otro un dbgrid, donde hago un query y la muestro, kiero desde primera hora el dbgrid, este activa la primera celda, y cuando escribo en el tedit, me va haciendo un autocompletar del query o consulta, entonces, mientras escribo en el tedit, si pulso hacia abajo, o hacia arriba, como esta activo el dbgrid, me muevo por la consulta en el dbgrid. Eso por un lado, y otro , cuando le de al intro cuando haya buscado lo que quiero en el dbdrid, si pulso enter, me diga el codigo del cliente que esta en esa linea del dbdrid,,que funcion es la que meda eso?.. suponiendo que quiero que me lo de en un Label por ejemplo, gracias.

JXJ 08-10-2007 23:34:06

no te entiendo

del dbgrid, casi no lo he usado

¿quieres que al iniciar tu aplicacion o al mostrarse el form
este activa la primera celda de tu DBGrid?

puedes cambiar de control activo. en el evento onchange de tu edit.
poniendo algo como esto..

DBGrid.setFocus

'¿quieres que despues de que realizaste tu consutla el dbgrid se marque
el codigo del cliente?

si ya sabes mas o menos que posicion ocupa en tu tabla el codigo del cliente
digamos la tercera.

podrias colorear esa celda.

Neftali [Germán.Estévez] 09-10-2007 11:44:38

Has probado a capturar las teclas de FlechaArriba, FlechaAbajo,... en el Edit y lanzar yn Next, Prior,... en el Dataset asociado al DBGrid.

lejia 09-10-2007 12:49:49

Vamos a ver, si me entienden, tengo 2 componentes, el tedit y el dbgrid,,, pues bien, kiero que esten activos los 2 a la vez?. es posible, creo que si, porque tengo una aplicacion que lo tiene, lo que quiero es que mientras escribo en el tedit, (hace un autocompleta de una busqueda en la base de datos). si pulso las teclas arriba o abajo, me puedo mover por la consulta en el dbgrid, y tamibien quiero que cuando encuentre por ejemplo el cliente que quiero, y estoy en la fila correspondiente, queiero que cuando pulse la tecla enter, pues me salga el codigo del cliente en un label, lo que quiero es como extraigo el codigo del cliente del dbgrid, cuando esta activa esa celda,, me entendeis?

Neftali [Germán.Estévez] 09-10-2007 13:22:09

Yo si te entiendo ¿Nos entiendes tú a nosotros?
Te estoy diciendo más o menos cómo se hace.

Crea un proyecto, coloca los dos componentes y vamos por partes.
El Autocompletar debe ser modificando la consulta y volviendola a lanzar, lo de subir y bajar, capturando las teclas (OnKeyPress/OnKeyDown) y modificando la posición del registro activo en el DataSet y el RETURN, pues igual que antes basta con capturar la tecla ENTER para realizar lo que necesitas.

Intenta hacerlo o intenta ser más concreto. Prueba y dinos si te sale o no, ¿Qué error te da? ¿Qué código estás utilizando?

Lepe 09-10-2007 13:39:13

Cita:

Empezado por lejia (Mensaje 237126)
Vamos a ver, si me entienden, tengo 2 componentes, el tedit y el dbgrid,,, pues bien, kiero que esten activos los 2 a la vez?. es posible, creo que si,

Pues te equivocas, No se puede. El foco solo puede tenerlo un componente a la vez.

Lo que pretendes, se puede emular. Al grid le añades en las opciones HideSelection := false, de forma que "parezca" que tiene el foco siempre, pero en realidad, lo tendrá el TEdit (si estas pulsando teclas en él).

Realmente no te explicas con claridad, ya que no entiendo qué control debe capturar la tecla flecha arriba y flecha abajo ¿el grid o el Tedit?

- Si estas escribiendo en el Edit, el foco lo tiene el Edit, así que dicho control tiene que capturar las teclas flecha arriba / abajo para mover la fila del grid por código delphi.

- Otra cosa distinta es que al estar en el Edit, se pulse la tecla flecha arriba, el Edit por código cambie el foco al grid, y el grid procese las nuevas teclas pulsadas.

Tendrás que decidir qué método elijes.

El código del cliente lo puedes obtener así:
Código Delphi [-]
   label1.caption := dbgrid.datasource.dataset.FieldByname('codigo').asString

Saludos

lejia 09-10-2007 15:54:13

correcto, en el programa que te digo, se ve la celda primera del grdi activada y parpadeando el tedit..
cuando escribo en el tedit , se va haciendo el autocompleta y se visualiza en el grid, y si mientras escribo en el tedit pulso arriba o abajo, se mueve el cursor por grid, correcto , entendeis?,, `pero siempre esta el cursor del TEDIT parpadeando,
Ejemplo: si escribo HOTEL ROYAL , el grid aparece hotel royal, la linea que lo busca,, pues bien, si a continuacion le doy a FLECHA ABAJO, SE MUEVE EN EL GRID, Y si ahroa escribo PARK , a continuacion, keda HOTEL ROYAL PARK, continuo escribiendo en el tedit..

Pues bien, creo que eso se hace progrmaando en el tedit, cuando pulso las teclas arriba y abajo, lhago que se mueva el grid, como dice un compañero con next, o post, no me acuerdo,, del dataset,, ya se como es,, ahora lo que digo, es ke si en el grid, tengo codigo,nombre ,, y estoy en una fila, quiero tener en una variable, el codigo, y en otra el nombre, cuando pulso enter sobre tedit, o el grid, da igual, porque estan los dos mirando sobre el mismo nombre.. ok¨?,, que fuincones hacen que me den el codigo en una variable, es lo ke necesito, lo demas, ya creo que voy comprendiendo, gracias..

eduarcol 09-10-2007 15:59:04

ya esa duda la respondio lepe, fijate la ultima parte de su respuesta, la unica diferencia con lo que pides es que el la almacena en un label asi como tu lo pidistes al principio, analizalo y nos avisas las dudas


La franja horaria es GMT +2. Ahora son las 06:15:46.

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