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 JoAnCa
JoAnCa JoAnCa is offline
Miembro
 
Registrado: jul 2005
Ubicación: Cuba
Posts: 435
Poder: 19
JoAnCa Va por buen camino
Se puede copiar un grafico de delphi para powerpoint?

Hola a todos
Pues eso, necesito saber, si se puede hacer, como copiar un grafico de mi aplicación Delphi para Powerpoint


El problema es que el usuario necesita insertar algunos gráficos que genera la aplicación, en una presentacion de powerpoint, y me pidio si era posible copiarlo directamente o de alguna otra forma
__________________
La hora de acción no es hora de aprender, es necesario haber aprendido antes
Responder Con Cita
  #2  
Antiguo 19-05-2020
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Poder: 21
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
  #3  
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
  #4  
Antiguo 20-05-2020
Avatar de ElKurgan
[ElKurgan] ElKurgan is offline
Miembro Premium
 
Registrado: nov 2005
Posts: 1.234
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 08:11:44.


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