Ver Mensaje Individual
  #7  
Antiguo 16-12-2013
Avatar de anubis
anubis anubis is offline
Miembro
 
Registrado: mar 2007
Posts: 863
Reputación: 18
anubis Va por buen camino
Hola,

Usando el paquete kgrid, y trabajando con el ejemplo, he conseguido hacer lo que me interesaba, que era combinar celdas y alinear un grid.

En el ejemplo le puse un boton para previsualizar la impresion.

Cree un procedimiento, como podeis ver, para poder ir agilizando lo que me interesaba poner en el grid y como queria ponerlo. quiza no es una manera elegante de hacerlo pero de momento funciona, quiza lo podria sustituir con arrays pero bueno ya veremos.

Con respecto a la previsualización, sigo buscando en las units relacionadas a ver si se pudiera escalar el grid y que no ocupara todo el ancho de la hoja porque no es lo que interesa. De todas formas si alguno ya averiguo este tema a ver si puede dar una ayudita.




Código Delphi [-]
unit Unit1;

interface

uses
  Classes, SysUtils, FileUtil,  Forms, Controls, Graphics,
  Dialogs, StdCtrls, ExtCtrls, KGrids, KDialogs, KControls;

type

  { TForm1 }

  TForm1 = class(TForm)
    Button1: TButton;
    KGrid1: TKGrid;
    KPrintSetupDialog1: TKPrintSetupDialog;
    Panel2: TPanel;
    ppdmain: TKPrintPreviewDialog;
    Panel1: TPanel;

    procedure Button1Click(Sender: TObject);
    procedure FormActivate(Sender: TObject);
    procedure FormCreate(Sender: TObject);
 PROCEDURE COLUMNAS(TEXTO:STRING; ALINEA,COLUM, FILAS,CABECERA,COMBINAR:INTEGER);

  private
    { private declarations }
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

type
  { custom cell class - contains Checked property for column with check boxes
    and Number property for all cell strings with number beside the text }
  TMyTextCell = class(TKGridAttrTextCell)
  private
    FCheckBoxState: TCheckBoxState;
    FNumber: Integer;
  protected
    procedure Initialize; override;
  public
    procedure Assign(Source: TKGridCell); override;
    // we don't need to override other methods
    property CheckBoxState: TCheckBoxState read FCheckBoxState write FCheckBoxState;
    property Number: Integer read FNumber write FNumber;
  end;

{ TMyTextCell }

procedure TMyTextCell.Assign(Source: TKGridCell);
begin
  inherited;
  if Source is TMyTextCell then
  begin
    FCheckBoxState := TMyTextCell(Source).CheckBoxState;
    FNumber := TMyTextCell(Source).Number;
  end;
end;

procedure TMyTextCell.Initialize;
begin
  inherited;
  FCheckBoxState := cbChecked;
  FNumber := 0;
end;

{ TForm1 }

procedure TForm1.FormActivate(Sender: TObject);
begin
panel1.Width:=330;
kgrid1.ColWidths[0]:=200;
kgrid1.ColWidths[1]:=100;

COLUMNAS('TITULO GRID',2,0,0,1,1);
COLUMNAS('FECHA',2,0,1,1,0);
COLUMNAS('TURNO',2,1,1,1,0);

COLUMNAS(DATETOSTR(DATE),2,0,2,0,0);
COLUMNAS('FILA1-1',2,1,2,0,0);
COLUMNAS('FILA2-0',2,0,3,0,0);
COLUMNAS('FILA2-1',2,1,3,0,0);
COLUMNAS('FILA3-0',2,0,4,0,0);
COLUMNAS('FILA3-1',2,1,4,0,0);

COLUMNAS ('* SECCION 2 *',2,0,5,1,1);
COLUMNAS('SUBSECCION 1',2,0,6,1,1);
COLUMNAS('FILA7',1,0,7,0,0);
COLUMNAS('FILA8',1,0,8,0,0);
COLUMNAS('FILA9',1,0,9,0,0);
COLUMNAS('SUBSECCION 2',2,0,10,1,1);

end;

PROCEDURE TFORM1.COLUMNAS( TEXTO: STRING;ALINEA,COLUM,FILAS,CABECERA,COMBINAR: INTEGER );
BEGIN
IF COMBINAR =1 THEN
 kgrid1.cellspan[COLUM,FILAS]:=makecellspan(1-0+1,1);
with TMyTextCell(KGrid1.Cell[COLUM,FILAS]) do
begin
text:=TEXTO;
IF ALINEA = 1 THEN halign:=halign.halLeft;
IF ALINEA = 2 THEN HALIGN:=HALIGN.halCenter;
IF ALINEA = 3 THEN HALIGN:=HALIGN.halRight;
IF CABECERA =1 THEN
BEGIN
  brush.style:=bssolid;
   brush.color:=clsilver;
   font.Style:=[fsbold];
end;
 END;
 END;

procedure TForm1.Button1Click(Sender: TObject);
begin
  ppdmain.show;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
    KGrid1.CellClass := TMyTextCell;
end;


end.
Responder Con Cita