Ver Mensaje Individual
  #6  
Antiguo 23-09-2005
Avatar de jmariano
jmariano jmariano is offline
Miembro
 
Registrado: jul 2005
Posts: 376
Reputación: 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