Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 23-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Poder: 19
jmariano Va por buen camino
Como comenta Lepe, existe una forma: moviéndonos manualmente por los registros y marcando cada registro del DBGrid como seleccionado (a través de la propiedad 'SelectedRows') en el evento 'OnMouseMove' del DBGrid.

Prueba los siguiente:

Código Delphi [-]
procedure TForm1.DBGrid1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  if ssLeft in Shift then
    with DBGrid1 do
      if dgMultiSelect in Options then
      begin
        DataSource.DataSet.MoveBy(MouseCoord(X, Y).Y - DataSource.DataSet.RecNo);
        SelectedRows.CurrentRowSelected := True;
      end;
end;

El único problema es que el método 'MouseCoord' (que devuelve la fila y columna donde nos encontramos según la posición del ratón dentro del DBGrid) siempre devuelve la columna y fila relativa al área de cliente, por lo que la selección fallaría si se hiciera en mitad de la tabla (salvo que todos los registros requeridos quepan en el DBGrid, es decir, sin tener que hacer un desplazamiento hacia abajo para localizar el primer registro de la selección).

Saludos!

Última edición por jmariano fecha: 23-09-2005 a las 16:14:07.
Responder Con Cita
  #2  
Antiguo 23-09-2005
Avatar de Kreyser
Kreyser Kreyser is offline
Miembro
 
Registrado: ago 2004
Ubicación: Barcelona
Posts: 114
Poder: 20
Kreyser Va por buen camino
Post

También podrías intentar algo en el estilo:

Código Delphi [-]
procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
keybd_event(VK_CONTROL,0,0,0 );
end;

Es una idea.
Saludos.
__________________
"Es imposible hacer un programa 100% contra tontos, ya que éstos son muy ingeniosos"

Última edición por Kreyser fecha: 23-09-2005 a las 16:37:28.
Responder Con Cita
  #3  
Antiguo 26-09-2005
nugame nugame is offline
Miembro
 
Registrado: may 2003
Posts: 50
Poder: 22
nugame Va por buen camino
Gracias a todos por las respuestas

Usé al final keybd_event(VK_CONTROL,0,0,0) y me funciona, el problema es al salir, creo que tengo que utilizar keybd_event(VK_CONTROL,0,KEYEVENTF_KEYUP,0);
porq sino me queda el control activado.

En que evento me recomendais en el onexit del grid?
Es que en el mousedown a veces no me funciona bien.

Gracias a todos
Responder Con Cita
Respuesta



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 06:20:10.


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