Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 25-07-2008
Angel Fernández Angel Fernández is offline
Miembro
 
Registrado: may 2004
Ubicación: Valencia - España
Posts: 141
Poder: 14
Angel Fernández Va por buen camino
¿Se puede dejar fija o bloquear la fila seleccionada en un dbgrid?

Saludos al foro.

Quisiera preguntar una cosilla que no sé si es posible. Como digo en el título, ¿se puede bloquear o dejar fija la fila seleccionada en un DBGrid? Es decir, yo tengo una fila seleccionada y cuando muevo la rueda del ratón encima del dbgrid, la fila seleccionada (el registro activo) se mueve con el movimiento del ratón.
Lo que quiero es que la fila seleccionada quede fija o bloqueada aunque mueva la rueda del ratón o mueva la barra de desplazamiento vertical y sólo cambie la fila seleccionada cuando haga click en otra fila (como funciona un listview o un listbox por ejemplo).
¿Se puede hacer?

Gracias de antemano.
Responder Con Cita
  #2  
Antiguo 21-07-2011
yugi789 yugi789 is offline
Registrado
 
Registrado: jul 2011
Posts: 6
Poder: 0
yugi789 Va por buen camino
Perdon por revivir pero tengo el mismo problema. Por favor ayuda.
Responder Con Cita
  #3  
Antiguo 22-07-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 9.648
Poder: 27
ecfisa es conocido por todosecfisa es conocido por todosecfisa es conocido por todosecfisa es conocido por todosecfisa es conocido por todosecfisa es conocido por todos
Hola yugi789.

Probá de este modo:
Código Delphi [-]
type
  TForm1 = class(TForm) 
    procedure FormShow(Sender: TObject);
    ...
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    procedure MouseEvent(var Msg: TMsg; var Handled: Boolean);
  public
  end;

...

implementation

(* CAPTURAR MENSAJE EVENTO MOUSE *)
procedure TForm1.MouseEvent(var Msg: TMsg; var Handled: Boolean);
begin
  if Msg.Message =  WM_MOUSEWHEEL then
   Handled:= True;
end;

(* DESACTIVAR MOUSEWHEEL Y SCROLLBAR VERTICAL *)
procedure TForm1.FormShow(Sender: TObject);
begin
  Application.OnMessage:= MouseEvent;
  EnableScrollBar(DBGrid1.Handle,SB_VERT,ESB_DISABLE_BOTH); // Scrollbar desactivado
end;

...

(* ACTIVAR MOUSEWHEEL Y SCROLLBAR VERTICAL *)
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  EnableScrollBar(DBGrid1.Handle,SB_VERT,ESB_ENABLE_BOTH); // ScrollBar activado
  Application.OnMessage:= nil;
end;

Edito: Si querés que también ignore las teclas arriba/abajo deberías evaluarlas en el evento OnKeyDown del DBGrid.

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 22-07-2011 a las 01:09:06.
Responder Con Cita
  #4  
Antiguo 23-07-2011
yugi789 yugi789 is offline
Registrado
 
Registrado: jul 2011
Posts: 6
Poder: 0
yugi789 Va por buen camino
Muchas gracias por responder. Lamentablemente,que deshabilite la barra no me sirve. Necesito que el registro seleccionado(Rowselect) permanesca fijo mientras me desplazo con la barra. Saludos.
Responder Con Cita
  #5  
Antiguo 23-07-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 9.648
Poder: 27
ecfisa es conocido por todosecfisa es conocido por todosecfisa es conocido por todosecfisa es conocido por todosecfisa es conocido por todosecfisa es conocido por todos
Hola yugi789.

Había entendido que la selección debería quedar fija hasta que se hiciera click sobre otra fila como dice el mensaje:
Cita:
Lo que quiero es que la fila seleccionada quede fija o bloqueada aunque mueva la rueda del ratón o mueva la barra de desplazamiento vertical y sólo cambie la fila seleccionada cuando haga click en otra fila
Pero a ver si entiendo el nuevo planteo. ¿ Querés que el DBGrid desplace sus líneas (registros) y que no cambie la selección realizada con el Click ?

Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #6  
Antiguo 23-07-2011
yugi789 yugi789 is offline
Registrado
 
Registrado: jul 2011
Posts: 6
Poder: 0
yugi789 Va por buen camino
Cita:
Empezado por ecfisa Ver Mensaje
Hola yugi789.

Pero a ver si entiendo el nuevo planteo. ¿ Querés que el DBGrid desplace sus líneas (registros) y que no cambie la selección realizada con el Click ?

Saludos.
Si eso exactamente. (Para desplazarme quiero utilizar la barra o teclas o la rueda del mouse). Saludos.
Responder Con Cita
  #7  
Antiguo 23-07-2011
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 9.648
Poder: 27
ecfisa es conocido por todosecfisa es conocido por todosecfisa es conocido por todosecfisa es conocido por todosecfisa es conocido por todosecfisa es conocido por todos
Hola yugi789.

El TDBGrid contiene el número de registros que son visibles. Cuando se hace un desplazamiento y necesita mostrar otros datos los obtiene del TDataSet solicitándolos a el TDataSource asociado y por supuesto perdíendose la selección actual.

La única manera que se me ocurre es agregando al DataSet un campo bivalente que funcione como bandera y mediante el click tome los valores de seleccionado o no.
Luego valerse del evento OnDrawColumnCell para pintar la fila si el valor figura como seleccionado.

Un saludo.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
marcar una fila seleccionada!! candido OOP 10 19-10-2007 15:53:46
Borrar fila seleccionada de un componente TStringGrid JM75 OOP 3 16-11-2006 10:31:06
cambiar color en fila seleccionada en un dbgrid gmontes OOP 2 05-05-2005 22:33:24
Fila seleccionada Dbgrid siempre en el centro Javier_A OOP 2 16-12-2004 16:39:51
como cambiar una fila seleccionada por otra en un DBgrid ? TURING Varios 1 04-08-2004 04:52:01


La franja horaria es GMT +2. Ahora son las 16:33:43.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi