Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 13-08-2004
candido candido is offline
Miembro
 
Registrado: may 2003
Posts: 11
Poder: 0
candido Va por buen camino
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.
Responder Con Cita
  #2  
Antiguo 13-08-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 27
jachguate Va por buen camino
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
Responder Con Cita
  #3  
Antiguo 13-08-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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
Responder Con Cita
  #4  
Antiguo 17-08-2004
candido candido is offline
Miembro
 
Registrado: may 2003
Posts: 11
Poder: 0
candido Va por buen camino
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.
Responder Con Cita
  #5  
Antiguo 17-08-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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?
Responder Con Cita
  #6  
Antiguo 20-08-2004
candido candido is offline
Miembro
 
Registrado: may 2003
Posts: 11
Poder: 0
candido Va por buen camino
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.
Responder Con Cita
  #7  
Antiguo 20-08-2004
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
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
Responder Con Cita
  #8  
Antiguo 01-02-2005
DanDelphi DanDelphi is offline
Registrado
 
Registrado: dic 2004
Posts: 2
Poder: 0
DanDelphi Va por buen camino
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
Responder Con Cita
  #9  
Antiguo 01-02-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 28
Lepe Va por buen camino
Muchas gracias por el detalle.

Saludos
Responder Con Cita
  #10  
Antiguo 19-10-2007
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
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
Responder Con Cita
  #11  
Antiguo 19-10-2007
Avatar de el_barto
el_barto el_barto is offline
Miembro
 
Registrado: may 2005
Ubicación: Bogota Colombia
Posts: 533
Poder: 19
el_barto Va por buen camino
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
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 02:53:47.


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
Copyright 1996-2007 Club Delphi