FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
marcar una fila seleccionada!!
hola a todos!!!
a ver si me sé explicar bien, Tengo un TDBGrid, asociado a una ADOQuery, en el que el usuario puede elegir una serie de filas para despues realizar una operacion concreta con las filas seleccionadas, lo que me gustaria seria hacer una marca en el DBGrid para que el usuario sepa las filas que ha seleccionado y las que no. Lo he intentado con todo, pintando en el canvas, y lo unico que se me ocurre seria crear un campo mas en la tabla y modificarlo cada vez que el usuario seleccione un registro, pero no quisiera tener que hacer todos esto. muchas gracias anticipadas por vuestra ayuda CIAO!!!
__________________
Me da pena que se admire el valor en la batalla; menos mal que con los rifles no se matan las palabras. |
#2
|
||||
|
||||
Basta con que añadas el flag dgMultiSelect a la propiedad Options del dbGrid. El usuario podrá seleccionar multiples registros con el mouse + las teclas ctrl y shift.
Luego, con la propiedad SelectedRows, que es una lista de TBookMark podes ir a las filas seleccionadas. Hasta luego.
__________________
Juan Antonio Castillo Hernández (jachguate) Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate |
#3
|
||||
|
||||
Esto es para un RxdbGrid de las RxLibs, pero si no me equivoco es igual para un TDBGrid. Saludos |
#4
|
|||
|
|||
lo del multiselect ya lo habia probado, pero mi idea era hacer la marca con el doble click del DBGrid, y poder hacer otra cosas sin que la seleccion se pierda, al pinchar en otro sitio.
__________________
Me da pena que se admire el valor en la batalla; menos mal que con los rifles no se matan las palabras. |
#5
|
||||
|
||||
Cita:
|
#6
|
|||
|
|||
con esto va debuti,
ahora voy a lanzar dos preguntillas para rizar el rizo, 1. Se pueden seleccionar varios registros de una tacada, como en windows, es decir, si pinchas en el primero, y con la tecla Shift pulsada, pinchas mas abajo, selecciona todos los que estan entre los dos registros seleccionados. 2. se pueden seleccionar por codigo registros en un grid, igual que si el usuario hiciese click en una fila, muchas gracias por adelantado, ya que con lo de antes ya me serviria perfectamente.
__________________
Me da pena que se admire el valor en la batalla; menos mal que con los rifles no se matan las palabras. |
#7
|
||||
|
||||
Hola de nuevo candido
1. Sí, y además puedes usar las teclas Ctrl o Shift para esos propósitos, Un bloque contiguo con Shift y despues Ctrl para algunos registros "salteados" 2. En principio con un DBGrid no. Aunque tienes SelectedRows que son de tipo TBookmarkList, éste último no permite añadir por código, solo consultar y borrar . Otros tipos de "Grid" si lo permiten como el VirtualStringTree; no es exactamente un Grid con acceso a Bases de datos, pero sí muy potente y flexible. Saludos |
#8
|
|||
|
|||
No es cierto
2. En principio con un DBGrid no. Aunque tienes SelectedRows que son de tipo TBookmarkList, éste último no permite añadir por código, solo consultar y borrar . Otros tipos de "Grid" si lo permiten como el VirtualStringTree; no es exactamente un Grid con acceso a Bases de datos, pero sí muy potente y flexible.
Esto no es cierto. Se puede seleccionar elementos por código : procedure DBGridSelectAll(AGrid: TDBGrid) ; begin AGrid.SelectedRows.Clear; with AGrid.DataSource.DataSet do begin DisableControls; First; try while not EOF do begin AGrid.SelectedRows.CurrentRowSelected := True; Next; end; finally EnableControls; end; end; end; Sacado de dephi.about.com. Un saludo |
#9
|
||||
|
||||
Muchas gracias por el detalle.
Saludos |
#10
|
||||
|
||||
Borrar Multiselect
Buenos dias:
al poner la propieedad dgMultiselect de un dbgrid en true, como se puede hacer para que los registros seleccionados, se puedan borrar con el (-) boton nbDelete de un dbnavigator ???. Gracias de antemano por la ayuda.
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas |
#11
|
||||
|
||||
Borrar Multiselect
procedure TFrmInCainv.dbNavDetalleClick(Sender: TObject;
Button: TNavigateBtn); begin inherited; IF Button = nbDelete then begin if (DBGridDetalle.SelectedRows.Count > 0) then with DBGridDetalle.DataSource.DataSet do DBGridDetalle.SelectedRows.Delete end; end;
__________________
Una forma de alcanzar tus metas es ayudando a otros a alcanzar las suyas |
|
|
|