Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Varios
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-05-2020
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 22
gatosoft Va camino a la fama
¿Y quieres generar directamente el PowerPoint o solo generar los prints?

Si es lo segundo, tal vez este codigo te de una idea, para aplicarlo a lo que necesitas. el codigo guarda un canvas en un archivo PNG.

Pones un boton y un stringGrid (no es necesario llenar datos) y ejecutas el click. Miralo y si te sirve lo adaptas,


Código Delphi [-]
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Grids;

type
  TForm1 = class(TForm)
    Button1: TButton;
    SaveDialog1: TSaveDialog;
    StringGrid1: TStringGrid;
    procedure Button1Click(Sender: TObject);
  private
    procedure PrintCanvas(aCanvas: TCanvas; aRect: TRect);
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
Uses Vcl.Imaging.pngimage;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var vRect: TRect;
    vAncho, vAlto: Integer;
begin
   vAncho:= (StringGrid1.ColCount+1) * StringGrid1.DefaultColWidth;
   if vAncho > StringGrid1.Width then
      vAncho:= StringGrid1.Width;
   vAlto:=  (StringGrid1.RowCount+1) * StringGrid1.DefaultRowHeight;
   if vAlto > StringGrid1.Height then
      vAlto:= StringGrid1.Height;
   vRect.Top:=0;
   vRect.Left:=0;
   vRect.Right:=vAncho;
   vRect.Bottom:=vAlto;
   PrintCanvas(StringGrid1.Canvas, vRect);

end;


procedure TForm1.PrintCanvas(aCanvas: TCanvas; aRect: TRect);
  var Bmp: TBitmap;
      Png: TPngImage;
begin
  if SaveDialog1.Execute then
  begin
    Bmp := TBitmap.Create;
    try
      //Bmp.SetSize(aCanvas.ClipRect.Right, aCanvas.ClipRect.Bottom);
      Bmp.SetSize(aRect.Right, aRect.Bottom);
      BitBlt(Bmp.Canvas.Handle, aRect.Top, aRect.Left, aRect.Right, aRect.Bottom, aCanvas.Handle, 0, 0, SRCCOPY);
      Png := TPngImage.Create;
      try
        Png.Assign(Bmp);
        Png.SaveToFile(SaveDialog1.FileName);
      finally
        Png.Free;
      end;
    finally
      Bmp.Free;
    end;
  end;
end;

end.
Responder Con Cita
  #2  
Antiguo 20-05-2020
Avatar de JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Muchas gracias gatosoft por tu respuesta, pero no me sirvio para el grafico (TDBChart), pues el procedimiento que me indicas usa la clase TCanvas y el TDBChart usa TCanvas3D, por lo que me da incompatibilidad de tipos.
Le hice algunos cambios para solucionar la incompatibilidad, pero solo me guarda un cuadro blanco.

Pero segui buscando y encontre la solución aquí

Es muy facil usando las mismas propiedades de TDBChart, explican 2 formas de hacerlo, pero me gusto mas la segunda que permite guardar en un fichero o copiarlo al portapapeles.

1
Código Delphi [-]
DBChart1.SaveToBitmapFile('c:\grafico.bmp');

2
Poner en el uses Teexport
Código Delphi [-]
procedure TformCuadroMando.bExportarClick(Sender: TObject); 
begin 
  with TTeeExportForm.Create(Self) do 
  try 
    ExportPanel := DBChart1; 
    ShowModal(); 
  finally 
    Free(); 
  end; 
end;

Tema solucionado
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes

Última edición por JoAnCa fecha: 20-05-2020 a las 04:27:15.
Responder Con Cita
  #3  
Antiguo 20-05-2020
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.235
Poder: 20
ElKurgan Va camino a la fama
Thumbs up

Gracias por compartir la solución

Un saludo
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
algun acelerador grafico para delphi? Celta Varios 5 20-01-2011 04:04:13
Delphi + powerpoint vicrati Varios 0 18-10-2006 08:53:02
PowerPoint en Delphi. JCarlos Varios 5 30-08-2006 14:50:27
¿Se puede cambiar el gráfico de los componentes? DarkByte Varios 2 01-06-2004 20:38:05
Como paso diapositivas en PowerPoint con Delphi ?? nadie135 OOP 1 18-12-2003 18:53:31


La franja horaria es GMT +2. Ahora son las 18:51:26.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi