PDA

Ver la Versión Completa : Marcar varias filas de dbgrid


Kenobi
01-02-2010, 01:42:24
Hola amigos, quisiera marcar varias filas de un dbgrid pero me da errores, parpadea, despues de marcado no desmarca etc. el componente en cuestion es el TmsDbGrid. alguna idea de como solucionar esto, porque lo unico que se me ocurre es colocar un campo virtual de tipo booleano y asi disponer de un check por cada fila ...

Neftali [Germán.Estévez]
01-02-2010, 09:33:26
Das muy pocos datos para saber lo que pasa, en realidad sólo nos dices lo que no funciona, por lo tanto es imposible darte algun consejo para remediarlo.
Cambia de componente si es que no te funciona (aunque me parece extraño que una cosa tán básica falle) o utiliza el recurso que has comentado.

Poco más puedo decirte con los datos que das.:(:(

Kenobi
01-02-2010, 20:35:52
Hola neftali, pues la informacion es la siguiente, tengo una tabla cuyo contenido muestro en un TmsDbGrid(que el lo mismo que un dbgrid pero con mayores funcionalidades entre ellas la posibilidad de marcar varias filas) esto esta medio complicado porque pues fila seleccionada = fila activa, ahora bien la idea es poder marcar varias filas para hacer actualizaciones o borrados por lotes....

creo que la solucion mas optima es hacer un campo virtual de tipo booleano para chekear las filas que quiero sin embargo me supongo que lo anterior se puede tambien, claro el problema es que cuando clickeo una fila para marcarla el control empieza a parpadear, lo cual es un comportamiento bastante desagradable debo decir ....

coso
02-02-2010, 15:22:03
Hola,
en el dbgrid habitual existe la propiedad selectedrows, creo que con los metodos add y similares. Estas lineas quedan entonces marcadas como seleccionadas y luego en el OnPaint puedes pintarlas segun quieras. Te dejo un link

http://delphi.about.com/od/usedbvcl/l/aa032503a.htm

a ver si te sirve. Saludos.

PD:claro el problema es que cuando clickeo una fila para marcarla el control empieza a parpadear Tienes que usar doublebuffered para solucionar esto.