Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   DBGrid (https://www.clubdelphi.com/foros/showthread.php?t=28659)

daly 27-12-2005 20:13:36

DBGrid
 
Hola utilizao el componente DBGrid para mostrar los datos.
Tengo que mostrar una el contenido de una tabla para que el usuario seleccione una serie de registro. Había pensado en mostrar la tabla en un dbgrid y añadir un campo calculate que recoja verdadero o false si el usuario selecciona o no el registro. Esta no es una solución correcta.
Sabes como puedo mostrar los datos de una tabla y además añadir un campo, que recoja verdadero o false según el usuario hace dos vecesclick sobre el registro.
Saludos
Daly

marcoszorrilla 27-12-2005 20:24:27

Pues es probable que no necesites ese campo, la rejilla tiene una propiedad: Multiselect que si la activas te permite seleccionar más de un registro a la vez y luego puedes recorrer la rejilla con un bucle y analizar la propiedad SelectedRows, para ver cual están seleccionadas y realizar alguna acción si procede.

Un Saludo.

aledieb 27-12-2005 20:31:30

No tengo Delphi a mano para confirmarlo, pero el dbgrid tiene el evento onclick y ondoubleclick (no se si esta bien escrito), en ese evento poder modificar el valor del campo.

daly 27-12-2005 20:37:00

El problema de utilizar la opción de MultiSelect es que es muy fácil equivocarse y perder las filas seleccionadas.
Ejemplo: Tienes 10 Columnas seleccionadas de 30 se te olvida de pulsar la tecla control y otra vez a volver a seleccionar el resto.
La idea de una columna adicional tiene un trato distinto.
Al crear un campo calculado he intentar modificarlo al hacer dos veces click sobre una fila muestra un mensaje de errror. Update demasiado complejo
tabla.edit;
campo=True;
tabla.Post;
Esto es lo único que tengo.
No puedo utilizar un campo calculado para implementarlo. Tendré que utilizar otro componente distinto al DBGrid?
Saludos

aledieb 27-12-2005 20:42:46

No veo porque el error, deberia funcionar
Estas usando algún sistema de bases de datos, si es así reviza el codigo del update puede que alli este el error.

Una "solución" seria hacer un query en el doble click para modificar el registro utilizando otro componente de acceso.

daly 28-12-2005 00:40:59

quizás no me he explicado bien.
La tabla tiene 4 campos, campo1,campo2..,campo4. Con el grip las muestro y realizo operaciones de update, delete, etc.. sin ningún problema.
Quiero que el usuario pueda seleccionar varios registros de los listados. Para ello he creado un campo calculado. (Hago dos veces click sobre el ttable y nuevo campo). Creo uno nuevo de tipo Booleano como calculated, es aquí cuando falla.
La ida es saber que registros quiere procesar el usuario. La opción del multiselect no me termina de convencer pq es fácil equivocarse y desseleccionar los registros y tener que volver a repetir el proceso.
Saludos

aledieb 28-12-2005 17:55:47

Hice una prueba y confirme que los campos calculados no pueden modificarse, execto en el evento OnCalcFields de la tabla/query.

Proba, si podes, agregar un campo a la tabla. Otra solución no se me ocurre por el momento

Lepe 28-12-2005 18:03:59

Tambien existe un grid (scalabium) que trae un checkbox por cada registro, puedes usarlo para seleccionar y/o deseleccionar un registro. (creo que es freeware).

Otro Treeview con propiedades de grid es el VirtualTreeView (éste es más potente para mostrar muchos miles de registros, pero es algo más laborioso que el scalabium, buscando en google, seguro que te topas con ellos en el primer click.

saludos

Héctor Randolph 28-12-2005 18:18:13

Aquí pongo los enlaces para descargar los componentes que menciona Lepe.

SMDBGrid

VirtualTreeView

En lo personal me gusta más utilizar VirtualTreeView porque tiene una infinidad de opciones, pero es mucho más complejo y al principio cuesta mucho trabajo entender como funciona.

Por otra parte SMDBGrid trabaja exactamente igual que un DBGrid normal y trae demos, es muy sencillo.

Saludos.

daly 29-12-2005 12:07:49

Voy a probarlos. Gracias.
Otra cuestion sobre los Dbgrid. Si utilizas la rueda del ratón solo te desplazas por los registros que tienes en ese instante en pantallas. para ver el resto tienes que hacer click con el ratón en la barra de scroll. (no se desplaza el scroll con la rueda del ratón).
Saludos


La franja horaria es GMT +2. Ahora son las 13:17:02.

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