Fórum Imprimir grafico TeChart maior #408402

10/10/2011

0

Alguém poderia me dizer como fazer um gráfico do componente TeChart imprimir maior! Ele sai pequeno e centralizado gostaria de imprimir na página inteira.

Alguém sabe como fazer isso?

Obrigado
Valdemi Ramos

Valdemi Ramos

Responder

Posts

11/10/2011

Gustavo Bretas

Se vc for usar os dois, declare-os da seguinte forma.

function mtdImprimeGrafico(aGrafico : TChart; aOrientation : TPrinterOrientation1 = poPaisagem) : Boolean; overload;
function mtdImprimeGrafico(aGrafico : TDBChart; aOrientation : TPrinterOrientation1 = poPaisagem) : Boolean; overload;


function mtdImprimeGrafico(aGrafico : TChart; aOrientation : TPrinterOrientation1) : Boolean;
var tmpH, tmpW, tmpWMargin, tmpHMargin : Longint; { margins }
    OldOrientation : TPrinterOrientation;
begin
  Screen.Cursor := crHourGlass;
  OldOrientation := Printer.Orientation;  // <-- save paper orientation
  if aOrientation = poPaisagem then
  begin
    Printer.Orientation := poLandscape; // <-- Force Horizontal paper
  end
  else if aOrientation = poRetrato then
  begin
    Printer.Orientation := poPortrait; // <-- Force Horizontal paper
  end;
  try
    Printer.Refresh;
    Printer.BeginDoc;       // <-- start printer job
    try
      Printer.Title := aGrafico.Title.Text.Text;
      aGrafico.PrintResolution := 0;
      // Calcula margem orizontal
      tmpW := Printer.PageWidth;
      tmpWMargin := Round(5.0 * Printer.PageWidth / 100.0); // <-- 5% margins
      tmpW := Printer.PageWidth - 2 * tmpWMargin;  // <-- left and right margins
      tmpW := tmpW div 2;  // half height for left and right charts
      // Calcula Margem Vertical
      tmpH := Printer.PageHeight;
      tmpHMargin := Round(5.0 * tmpH / 100.0);  // <-- 5% margins
      tmpH := Printer.PageHeight - 2 * tmpHMargin;  // <-- bottom and top margins
      //
      aGrafico.PrintPartial(Rect(tmpWMargin, tmpHMargin, tmpWMargin + 2 * tmpW, tmpHMargin + tmpH));
      Printer.EndDoc; // <-- end job and print !!
    except
      on Exception do
      Begin
        Printer.Abort;
        Printer.EndDoc;
        Raise;
      end;
    end;
  finally
    Printer.Orientation := OldOrientation;  { <-- restore paper orientation }
    Screen.Cursor := crDefault; { <-- restore cursor }
  end;
end;

function mtdImprimeGrafico(aGrafico : TDBChart; aOrientation : TPrinterOrientation1) : Boolean;
begin
  Result := mtdImprimeGrafico(TChart(aGrafico), aOrientation);
end;
Responder

Gostei + 0

11/10/2011

Gustavo Bretas

há, declara a unit Printers na uses!
Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar