bueno, he estado mirando el jodio bookmarklist del dbgrid y esta mas blindao (protected y private) que el banco de españa asi que...
a grandes males grandes remedios, nos vamos a crear nuestro propio bookmarklist, que es mas facil y son 12 lineas de codigo:
sacamos un grid, le ponemos en las options dgRowSelect y NO le ponemos dgMultiselect ^_^
la idea es meter los bookmarks en un stringList y repintar el grid nosotros mismo:
Código Delphi
[-]
private
BookSel:TStringList;
...
procedure TForm1.FormCreate(Sender: TObject);
begin
BookSel:=TStringList.Create;
end;
procedure TForm1.DBGrid1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var l:integer;
begin
if BookSel.IndexOf(ClientDataSet1.Bookmark)<0 then
BookSel.Add(ClientDataSet1.Bookmark)
else BookSel.Delete(BookSel.IndexOf(ClientDataSet1.Bookmark));
DBGrid1.Invalidate;
end;
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
begin
if BookSel.IndexOf(ClientDataSet1.Bookmark)>=0 then
begin
DBGrid1.Canvas.Brush.Color:=clnavy;
DBGrid1.Canvas.font.Color:=clwhite;
end
else
begin
DBGrid1.Canvas.Brush.Color:=clwhite;
DBGrid1.Canvas.Font.Color:=clblack;
end;
DBGrid1.DefaultDrawColumnCell(Rect,DataCol,Column,State);
end;
Cuando necesites recorrer los registros selecionados solo tendras que recorrer el BookSel. Tambien se podria hacer guardando solo los códigos primarios de la tabla... pero entonces valdria solo para esa tabla/consulata en concreto.
Espero que te ayude .. por cierto ¿no seras lahoz verdad?