Ver Mensaje Individual
  #5  
Antiguo 27-11-2007
Avatar de fjcg02
[fjcg02] fjcg02 is offline
Miembro Premium
 
Registrado: dic 2003
Ubicación: Zamudio
Posts: 1.410
Reputación: 22
fjcg02 Va camino a la fama
smessina,
te adjunto la rutina que pinta lo que tú pides.
Para ello, haz lo que te he comentado anteriormente. Pon un grid con font.size = 20, y copiale el código que te adjunto.
PAra el ejemplo que te pongo, necesitas una tabla que tenga los campos Nombre1, Nombre2, Concepto, FEcha, CantidadDebe y CantidadHaber. Yo he utilizado una bbdd de access para hacer la prueba.

Suerte y un saludo

<a href="http://img122.imageshack.us/my.php?image=pantallazofk3.jpg" /a>

Código Delphi [-]
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, DB, Grids, DBGrids, ADODB;

type
  TForm1 = class(TForm)
    ADOConnection1: TADOConnection;
    ADOTable1: TADOTable;
    DataSource1: TDataSource;
    DBGrid1: TDBGrid;
    ADOTable1idregistro: TAutoIncField;
    ADOTable1Nombre1: TWideStringField;
    ADOTable1Concepto: TWideStringField;
    ADOTable1Nombre2: TWideStringField;
    ADOTable1fecha: TDateTimeField;
    ADOTable1Cantidaddebe: TFloatField;
    ADOTable1CAntidadhaber: TFloatField;
    procedure DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
      DataCol: Integer; Column: TColumn; State: TGridDrawState);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

uses Types;

{$R *.dfm}

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;
  DataCol: Integer; Column: TColumn; State: TGridDrawState);
var WRect: TRect;
begin
(Sender as TDBGrid).Canvas.Font.Size:= 8;
if DataCol =0  then
begin
  WRect.Left:= Rect.Left;
  WRect.Top := REct.Top + ((Rect.Bottom-Rect.Top) div 2);
  WRect.Bottom := Rect.Bottom;
  WRect.Right:= Rect.Right;
  DBGrid1.Canvas.Rectangle(WRect); // pinto un rectangulo para separar los dos nombres
  DBGRid1.Canvas.TextOut(Rect.LEft,Rect.Top+2,ADOTable1Nombre1.AsString);
  DBGRid1.Canvas.TextOut( Rect.left ,Wrect.Top+2 ,ADOTable1Nombre2.AsString);
end
else
begin
  WRect.Left:= Rect.Left;
  WRect.Top := REct.Top + ((Rect.Bottom-Rect.Top) div 2);
  WRect.Bottom := Rect.Bottom;
  WRect.Right:= Rect.Right;
  DBGrid1.Canvas.Rectangle(WRect); // pinto un rectangulo para separar los dos nombres
  DBGRid1.Canvas.TextOut(Rect.LEft,Rect.Top+2,ADOTable1Concepto.AsString);
  DBGRid1.Canvas.TextOut( Rect.left ,Wrect.Top+2 ,ADOTable1Fecha.AsString);
  DBGRid1.Canvas.TextOut( Rect.left+ ((Rect.Right - Rect.Left) div 3)+50 ,Wrect.Top+2 ,ADOTable1CAntidadDEbe.AsString);
  DBGRid1.Canvas.TextOut( Rect.left+ (2*(Rect.Right - Rect.Left) div 3) +50,Wrect.Top +2,ADOTable1CantidadHaber.AsString);
end;

end;

end.
__________________
Cuando los grillos cantan, es que es de noche - viejo proverbio chino -

Última edición por fjcg02 fecha: 27-11-2007 a las 23:09:30. Razón: cambiar imagen
Responder Con Cita