Ver Mensaje Individual
  #7  
Antiguo 18-05-2011
Avatar de ElDioni
[ElDioni] ElDioni is offline
Miembro Premium
 
Registrado: jul 2005
Ubicación: Murcia (España)
Posts: 935
Reputación: 19
ElDioni Va por buen camino
Buenos días,

al final he optado por la opción cobarde, he puesto el componente SMDBGrid que tiene la propiedad eoKeepSelection que deja seleccionados los registros seleccionados (valga la redundancia) aunque pinches fuera de uno de ellos, he tenido que poner un código en el OnMouseDown para que se deseleccionen los registros si he pinchado en alguno que no estuviera seleccionado.

Código Delphi [-]
procedure TFrmMenuArt.DBGridOrdenesMouseDown(Sender: TObject;
  Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
begin
if button=MBLeft then
  begin
    if (pulsada<>17)AND(pulsada<>16)then
      begin
        if DbGridOrdenes.SelectedRows.CurrentRowSelected=false then
          begin
            DbGridOrdenes.SelectedRows.Clear;
          end;
      end;
    DbGridOrdenes.BeginDrag(false,10);
    LblNOrden.Caption:=FrmMenuArt.QueryOrdenes.fieldbyname('NOrden').AsString;
  end;

end;

Si no había utilizado este componente antes es porque al poner el ReadOnly a true no te deja seleccionar una parte de texto de un registro con el que yo, posteriormente, hacía filtros por selección o excluyendo la selección, lo que he hecho es dejar el ReadOnly a false y en el OnKeyDown del SMDBGrid he controlado que no esté pulsado ni el control ni las mayusculas ni el alt y pongo el key:=0, así no se puede modificar el registro.

Gracias a todos por su tiempo.

Saludos.
Responder Con Cita