Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   OOP (https://www.clubdelphi.com/foros/forumdisplay.php?f=5)
-   -   marcar una fila seleccionada!! (https://www.clubdelphi.com/foros/showthread.php?t=13298)

candido 13-08-2004 09:00:21

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!!!

jachguate 13-08-2004 10:48:42

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.

;)

Lepe 13-08-2004 13:14:28

Código Delphi [-]
  if rxDBGrid1.SelectedRows.Count>0 then
  with rxDBGrid1.DataSource.DataSet do
  begin
      for i:=0 to rxDBGrid1.SelectedRows.Count-1 do
      begin
        rxdbgrid1.GotoSelection(i);
        // ya estoy en la seleccion
      end;
  end;

Esto es para un RxdbGrid de las RxLibs, pero si no me equivoco es igual para un TDBGrid.

Saludos

candido 17-08-2004 10:45:29

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.

Lepe 17-08-2004 14:49:33

Cita:

Empezado por delphi help
dbgrid.options

dgAlwaysShowSelection The selected cell displays the focus rectangle even when the grid does not have focus.

¿esto tal vez?

candido 20-08-2004 09:34:02

;) 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

Lepe 20-08-2004 18:19:21

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

DanDelphi 01-02-2005 10:29:18

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

Lepe 01-02-2005 10:34:38

Muchas gracias por el detalle.

Saludos

el_barto 19-10-2007 15:35:26

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.

el_barto 19-10-2007 15:53:46

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 08:15:14.

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