FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Selección por código de todas las filas de un DBGrid
Me gustaría que me ayudaráis a hacer una cosa:
Tengo una aplicación basada en BD. La tabla principal la tengo mostrada en un control DBGrid. Y me gustaría tener unas opciones de menú del estilo: Edición -> Seleccionar todo Edición -> Invertir selección El problema es que esto lo quiero hacer mediante código puesto que para seleccionar todas las filas de un grid con el ratón es un poco engorroso. Le he dado muchas vueltas a la propiedad RowsSelectec pero ésta es de sólo lectura, y no me deja marcar las filas que a mí me interesan. He conseguido crear otra variable RowSelected para recorrer todas las filas de la query que me interesan pero lo que yo quiero exactamente es que que se seleccionen todas las filas del grid y queden marcadas visiblemente al usuario. Espero haberme explicado y que podáis ayudarme. Muchas gracias. |
#2
|
||||
|
||||
Si utilizas la TRxDBGrid puedes utilizar el método SelectAll y UnselectAll para todas las filas, en mi versión ampliada de este grid, he agregado el código de InvertSelection que te paso aquí:
Código:
procedure TRxDBGrid.SelectAll; var ABookmark: TBookmark; begin if MultiSelect and DataLink.Active then begin with Datalink.Dataset do begin if (BOF and EOF) then Exit; DisableControls; try ABookmark := GetBookmark; try First; while not EOF do begin SelectedRows.CurrentRowSelected := True; Next; end; finally try GotoBookmark(ABookmark); except end; FreeBookmark(ABookmark); end; finally EnableControls; end; end; end; end; procedure TRxDBGrid.UnselectAll; begin if MultiSelect then begin SelectedRows.Clear; FSelecting := False; end; end; Código:
procedure TFSDBGrid.InvertSelection; var ABookmark: TBookmark; begin if MultiSelect and DataLink.Active then begin with Datalink.Dataset do begin if (BOF and EOF) then Exit; DisableControls; try ABookmark := GetBookmark; try First; while not EOF do begin SelectedRows.CurrentRowSelected := not SelectedRows.CurrentRowSelected; Next; end; finally try GotoBookmark(ABookmark); except end; FreeBookmark(ABookmark); end; finally EnableControls; end; end; end; end;
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
|||
|
|||
Siento mucho mi ignorancia pero no sé a qué componente te refieres con "TRxDBGrid". Yo utilizo el TDBGrid que viene por defecto con Delphi 7.
He estado mirando en tu página por si encontraba algún componente como el que llamas pero no lo encuentro. Muchas gracias de todas formas. Probaré el código que me has facilitado a ver si es de ayuda. Chao |
#4
|
||||
|
||||
El componente TRxDBGrid pertenece a las RxLibs, que son una extensión rusa de la VCL, muy utilizada por los programadores Delphi. Si te interesan las puedes bajar de Torry.net.
Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
|
|
|