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.