FTP | CCD | Buscar | Trucos | Trabajo | Foros |
#1
|
|||
|
|||
DBGrid
Hola, disculpen podria alguien ayudarme, necesito saber como hacer doble click en la celda de un dbgrid, y al hacerlo que los datos relacionados con los de esa celda, se pasen a unos edits, pueden audarme??
gracias. |
#2
|
|||
|
|||
El DBGrid dispone, como la amyoría de controles, de un evento OnDblClick. Supongo que ya lo tendrías en cuenta.
Luego se trata de interceptarlo, y ahí metes el código que quieras, por ejemplo Código:
with DBGrid.DataSource.DataSet do begin Edit1.Text := FieldByName('ID_CASA').AsString; Edit2.Text := FieldByName('Descripcion').AsString; ... end;
__________________
Guía de Estilo |
#3
|
|||
|
|||
gracias lo intentare a ver ke pasa
|
#4
|
|||
|
|||
Hola, tengo dos inconvenientes, los edits a los que quiero pasar los datos estan en una forma diferente a la que tiene el grid (estan en la forma mediante la cual se llama al a forma del grid), y el otro es que necesito usar ese cuadro de busqueda en varias ocasiones, no solo ahi.
Gracias |
#5
|
|||
|
|||
Hola Kao:
Quizás sea esto lo que quieres: que al hacer doble click sobre el Grid, te capture esos datos y a la vez que cierre el Form sobre el que está el Grid. Si es así, no debes tener muchos problemas, siempre y cuando ese Grid apunte a un DataSet que no esté en dicho Form; dicho de otra forma, lo recomendable es que tengas el DataSet en un DataModule al que tienen acceso los dos Forms que tú comentas. Cuando el usuario hace doble click sobre ese Grid, cierras el Form (bueno, esto tienes que aclararnos si quieres que sea así, estoy suponiendo demasiado), y en el DataSet se queda activo el registro que el usuario "cliqueó", de forma que lo puedes acceder aunque hayas cerrado/destruido ese form. Espero haberme explicado correctamente, ya me dirás.
__________________
Guía de Estilo |
#6
|
|||
|
|||
Si exactamente lo que quiero es eso, al darle doble click se cierre el form y los datos queden en edits, pero eso es justamente lo que no se hacer, mi dataset (que por cierto es un query), ya se encuentra en un datamodule, pero no se como hacer que se conserven los valores despues de cerrar el form, yo pense que no se podia, me podrias hechar una mano con eso??
|
#7
|
|||
|
|||
Me di cuenta que todavia puedo ser mas especifico
estoy usando un query en el evento Onchange de un edit, para que al ir metiendo letras (un nombre), me muestre resultados parecidos en el grid (un sql que usa LIKE), y el asunto es al hacer doble click en uno o en el resultado. gracias |
#8
|
|||
|
|||
Hola Kao, parece que estemos en un Chat, los dos Online aquí.
Si como dices, ese Query lo tienes en un DataModule aparte, llamémosle DATAMOD2, antes que nada el Form desde el que llamas al otro debe tener en su cláusula Uses la unit del DATAMOD2, para acceder a sus objetos. Supongamos que esta es la rutina donde llamas al Form de búsqueda: Código:
var AForm: TFormBusqueda; begin AForm := TFormBusqueda.Create(Self); try if AForm.ShowModal = mrOk then // el usuario hizo Doble click y validó begin Edit1.Text := DATAMOD2.Query1.FieldByName('ID_CASA').AsString; Edit1.Text := DATAMOD2.Query1.FieldByName('Descripcion').AsString; end else begin // el usuario canceló la búsqueda Edit1.Text := ''; // por ejemplo podemos vaciar los Edits Edit1.Text := ''; end finally AForm.Free; // liberamos la memoria del Form de búsqueda end; end; En TFormBusqueda iría esto: Código:
procedure TFormBusqueda.Create (Sender: TObject); begin DATAMOD.Query1.Open; end; procedure TFormBusqueda.Destroy (Sender: TObject); begin DATAMOD.Query1.Close; end; Por cierto, si entras en la página web de Cadetill, puedes descargarte un componente, llamado algo así como TDBSearchDialog, que sirve para hacer búsquedas, igual te ayuda mirar su código, o el componente entero.
__________________
Guía de Estilo |
#9
|
|||
|
|||
Hola, me ha surgido un nuevo problema, la pantala de busqueda a la que me referia debe ser usada desde muchas forms no solo una, que puedo hacer???
|
|
|
|