ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Impressão Direta de Um Form

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
Darela
Novato
Novato


Registrado: Terça-Feira, 12 de Dezembro de 2006
Mensagens: 7
Localização: Tubarão

MensagemEnviada: Ter Dez 12, 2006 8:30 am    Assunto: Impressão Direta de Um Form Responder com Citação

Caros Amigos,
Estou iniciando em programação e tenho um desafio pela frente, que ainda não encontrei solução.
Preciso imrimir diretamente de um form, ou seja, eu abro o formulário entro com os dados nos campos e quero mandar imprimir os dados diretamente (os campos edit, label, memo, e imagens) como se fosse uma nota fiscal ou boleto, mas os procedimentos para as notas e boletos não deram certo, alguém poderia me ajudar.

Obrigado
Frank
[/b]
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
edibertoalves
Experiente
Experiente


Registrado: Segunda-Feira, 15 de Agosto de 2005
Mensagens: 447
Localização: São Paulo - SP

MensagemEnviada: Ter Dez 12, 2006 8:55 am    Assunto: Responder com Citação

Bom, se vc está iniciando na programação, é bom estudar sobre os componentes de geração de relatórios, existem vários por aí, free e pagos. QuickReport, Rave, FastReport, FortesReport, ReportBuilder.
Eles em sua maioria vão atender suas expectativas. Dá uma pesquisada, veja os demos! Blz?

Abraços

Ediberto
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
an.der.son
Colaborador
Colaborador


Registrado: Quarta-Feira, 26 de Mai de 2004
Mensagens: 2275
Localização: Itaocara - RJ

MensagemEnviada: Ter Dez 12, 2006 9:04 am    Assunto: Responder com Citação

Se eu entendi, vc quer tirar uma foto do form e imprimir, certo?

Tenta assim:

Código:

procedure PrintForm(frm: TForm);
var
  bmp: TBitMap;
  x, y, WDPI, HDPI: Integer;
  OldColor: TColor;
begin
  Screen.Cursor := crHourGlass;
  OldColor := frm.Color;
  frm.Color := clWhite;
  frm.Update;
  bmp := frm.GetFormImage;
  with Printer do
    begin
      Orientation := poLandscape;
      BeginDoc;
      HDPI := PageHeight div 8;
      WDPI := PageWidth div 8;
      x := PageWidth - Round(WDPI * 0.4); {0.4" margem direita}
      y := PageHeight - Round(HDPI * 0.5); {0.5" Altura do rodapé}
      Canvas.StretchDraw(Rect(0, 0, x, y), bmp);
      EndDoc;
    end;
  bmp.Free;
  frm.Color := OldColor;
  Screen.Cursor := crDefault;
end;


Para usar faça:
Código:

  PrintForm(Self);
  //-- ou
  PrintForm(Form1);


OBS. Adicionar Printers na clausula uses

Abraços Wink
_________________
Estou de volta!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário Yahoo Messenger MSN Messenger
Darela
Novato
Novato


Registrado: Terça-Feira, 12 de Dezembro de 2006
Mensagens: 7
Localização: Tubarão

MensagemEnviada: Ter Dez 12, 2006 9:42 am    Assunto: Impressão de form Responder com Citação

Quero imprimir todos os campos do form inclusive uma ou mais imagens que estarão em campos específicos, sõ que não quero gerar relátório, que terminar de preencher e eviar direto para impressão

Trata-se de uma cadastro de reservas para uma pousada/camping, então quando o cliente faz a reserva, é preenchido este formulário e em seguida impresso diretamente, como todos os campos(Tmemo, Tedit, Blob, Tlabe...)

Usei o código mas não funcionou, na hora de compilar e le para na linha : Pinter.BeginDoc; e o prrograma não roda


procedure Tform1.SpeedButton1Click(Sender: TObject);
var
C : array[0..255] of char;
CLen, ScaleX, ScaleY, Ind : Integer;
Format : Word;
DC : HDC;
MComp : Tmemo;
R : TRect;
begin
Printer.BeginDoc;
DC := Printer.Canvas.Handle;
ScaleX := GetDeviceCaps(DC, LOGPIXELSX) div PixelsPerInch;
ScaleY := GetDeviceCaps(DC, LOGPIXELSY) div PixelsPerInch;
for Ind := 0 to ComponentCount -1 do
if (Components[Ind] is TCustomLabel) or (Components[Ind] is TCustomEdit) then
begin
MComp := TMemo(Components[Ind]);
if (MComp.visible) then
begin
Printer.Canvas.Font := MComp.Font;
DC := Printer.Canvas.Handle;
R := MComp.BoundsRect;
R.Top := (R.Top + VertScrollBar.Position) * ScaleY;
R.Left := (R.Left + HorzScrollBar.Position) * ScaleX;
R.Bottom := (R.Bottom + VertScrollBar.Position) * ScaleY;
R.Right := (R.Right + HorzScrollBar.Position) * ScaleY;
if (not (Components[Ind] is TCustomLabel)) and (MComp.BorderStyle = bsSingle) then
Printer.Canvas.Rectangle(R.Left, R.Top, R.Right, R.Bottom);
Format := DT_LEFT;
if (Components[Ind] is TEdit) or (Components[Ind] is TCustomMaskEdit) then
Format := Format or DT_SINGLELINE or DT_VCENTER
else
begin
if MComp.WordWrap then
Format := DT_WORDBREAK;
if MComp.Alignment = taCenter then
Format := Format or DT_CENTER;
if MComp.Alignment = taRightJustify then
Format := Format or DT_RIGHT;
R.Bottom := R.Bottom + Printer.Canvas.Font.Height + 1;
end;
CLen := MComp.GetTextBuf(C,255);
R.Left := R.Left + ScaleX + ScaleX;
DrawText(DC, C, CLen, R, Format);
end;
end;
Printer.EndDoc;
Close;
end;



O que será que tem de errado nesse código que não consigo compilar?
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
an.der.son
Colaborador
Colaborador


Registrado: Quarta-Feira, 26 de Mai de 2004
Mensagens: 2275
Localização: Itaocara - RJ

MensagemEnviada: Ter Dez 12, 2006 9:54 am    Assunto: Responder com Citação

Adicione Printers na clausula uses para ter acesso a Printer!!!
_________________
Estou de volta!!!
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail Visitar a homepage do Usuário Yahoo Messenger MSN Messenger
Darela
Novato
Novato


Registrado: Terça-Feira, 12 de Dezembro de 2006
Mensagens: 7
Localização: Tubarão

MensagemEnviada: Ter Dez 12, 2006 10:00 am    Assunto: Impressão de um Form Responder com Citação

Valeu Anderson,
Realmente eu tinha me esquecido(coisa de novado, sabe como é, rsrsrsr) desse tetalhe, vou testar agora mesmo para ver o que acontece.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
Darela
Novato
Novato


Registrado: Terça-Feira, 12 de Dezembro de 2006
Mensagens: 7
Localização: Tubarão

MensagemEnviada: Ter Dez 12, 2006 10:05 am    Assunto: Imprimir direto de um form Responder com Citação

Deu certo, Galera,
Espero que este tópico também possa ajudar outros ...
[/b]
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail MSN Messenger
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB