Ver Mensaje Individual
  #2  
Antiguo 05-08-2004
Avatar de ruina
ruina ruina is offline
Miembro
 
Registrado: jun 2004
Posts: 196
Reputación: 20
ruina Va por buen camino
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?
__________________
todo el mundo debe creer en algo... yo creo que voy a tomarme otra copa.
Responder Con Cita