Bueno entonces vamos a utilizar el evento
OnDrawColumnCell del dbGrid y poner este codigo:
Código Delphi
[-]procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
DataCol: Integer; Column: TColumn; State: TGridDrawState);
Var i,x,u,y:Integer;
begin
x:=12;y:=TAuxGrid(DBGrid1).DefaultRowHeight; for i:=0 to DataCol-1 do
x:=x+DBGrid1.Columns[i].Width;
DBGrid1.Canvas.Pen.Color:=clBlack;DBGrid1.Canvas.MoveTo(x,0);DBGrid1.Canvas.LineTo(x,y); if DataCol=DBGrid1.Columns.Count-1 then begin
x:=10; for i:=0 to DBGrid1.Columns.Count-1 do
x:=x+DBGrid1.Columns[i].Width; DBGrid1.Canvas.MoveTo(x,0);
DBGrid1.Canvas.LineTo(x,y); end;
end;
Ahora te preguntarás que es
TAuxGrid el que esta con rojo, pues simplemente es una clase auxiliar que te permite hacer casting a una clase ancestra y poder acceder a los atributos y propiedades
protegidas y demás(Buen truco por si acaso).Para usarla debes declarala en la sección de
Type de delphi, algo así:
Código Delphi
[-]...
type
TAuxGrid = class(TDBGrid); TForm1 = class(TForm)
.....
Y para que se repinten las lineas cuando por ejemplo minimizes o muevas tu formulario(anque quisas no sea necesario
) según si es el caso puedes llamar al método
Invalidate de tu DbGrid en cuestión, yo lo he puesto en el evento OnPaint del formulario algo asi:
Código Delphi
[-]procedure TForm1.FormPaint(Sender: TObject);
begin
DBGrid1.Invalidate;
end;
.
Desde luego quisas pueda haber una mejor forma de hacerlo pero a mi se me ocurrió asi:
.
Pruébalo...
Saludos...