![]() |
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!!! |
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. ;) |
Esto es para un RxdbGrid de las RxLibs, pero si no me equivoco es igual para un TDBGrid. Saludos |
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.
|
Cita:
|
;) con esto va debuti,
ahora voy a lanzar dos preguntillas :confused: 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. :D |
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 |
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 |
Muchas gracias por el detalle.
Saludos |
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. |
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; |
La franja horaria es GMT +2. Ahora son las 23:26:55. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi