Ir para conteúdo
Fórum Script Brasil
  • 0

Como Imprimir No Delphi


FLY666

Pergunta

Aloha!!!

Sou novato aki no fórum e me desculpem se já foi postado alguma vez... mas eu preciso saber como imprimir no delphi um DBGrid... quais são os procedimentos para essa operação?

PS.: a tabela foi feita no "Absolute Database"...

Desde já agradeço a ajuda de vocês...

Link para o comentário
Compartilhar em outros sites

17 respostass a esta questão

Posts Recomendados

  • 0

Por um acaso ía postar a mesma (ou quase a mesma ) pergunta do colega FLY.

Sem fazer nenhum tipo de relatório, só com o DBgrid mostrando os registros, como seria o código para imprimir O CONTEÚDO do DBGRId?

Alguém poderia postar esse código por favor?

Paulo Nobre

PS: Fly, desculpe pegar carona na sua dúvida, mas dessa forma descongestiona o fórum evitando perguntas repetidas.

Link para o comentário
Compartilhar em outros sites

  • 0

Creio que para imprimir o conteúdo do DBGrid (ou seja, os registros), mas não a imagem do mesmo (aliás, deve ser possível fazer isso também), você pode usar o objeto Printer. Exemplo:

    Printer.BeginDoc;
    Printer.Canvas.TextOut(0, 0, 'teste');
    Printer.Enddoc;

Ou simplesmente abrir a porta LPT1 (ou outra) como um arquivo e enviar os dados por lá. Esse método é melhor para impressoras matriciais.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Olá, Graymalkin,

Creio que para imprimir o conteúdo do DBGrid (ou seja, os registros), mas não a imagem do mesmo (aliás, deve ser possível fazer isso também), você pode usar o objeto Printer. Exemplo:

CODE 

  Printer.BeginDoc;

  Printer.Canvas.TextOut(0, 0, 'teste');

  Printer.Enddoc;

Desculpe a ignorância, mas neste código acima, onde está a vinculação com o DBGrid?

Abs

Paulo Nobre

Link para o comentário
Compartilhar em outros sites

  • 0

Em lugar algum. Por isso que salientei que: """para imprimir o conteúdo do DBGrid (ou seja, os registros), mas não a imagem do mesmo (aliás, deve ser possível fazer isso também), você pode usar o objeto Printer."""

Ou seja, o código real seria algo do tipo:

  Printer.BeginDoc;
  Printer.Canvas.TextOut(0, 0, Table1.Fields['campo'].AsString;);
  Printer.Enddoc;

Ou seja, seria necessário percorrer toda a tabela imprimindo campo a campo.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Ae Galera... eu ia postar aki o código q estou usando mas aconteceu uma desgraça... não sei porque mas o código sumiu do meu arquivo .pas...

Mas mesmo assim eu gostaria de uma resposta... eu não quero imprimir em printscreen... mas um BDGrid de modo contínuo...

quando eu refizer o código eu posto outra vez...

Link para o comentário
Compartilhar em outros sites

  • 0

Aloha... consegui refazer o código... desculpem... sou meio newb com o linguagem de programação... e sei q o códgigo abaixo é meio tosco e básico demais... mas não quero nada complicado... só gostaria de imprimir o BDGrid de forma contínua e sem o restante do Form... apenas o BDGrid...

____________________________________________________________________

type

TForm1 = class(TForm)

ABSTable1: TABSTable;

ABSDatabase1: TABSDatabase;

DataSource1: TDataSource;

DBGrid1: TDBGrid;

DBNavigator1: TDBNavigator;

btnprint: TBitBtn;

PrintDialog1: TPrintDialog;

PrinterSetupDialog1: TPrinterSetupDialog;

GroupBox1: TGroupBox;

GroupBox2: TGroupBox;

btnsair: TBitBtn;

Bevel1: TBevel;

Bevel2: TBevel;

Label1: TLabel;

Image1: TImage;

Image2: TImage;

Bevel3: TBevel;

Image3: TImage;

procedure btnprintClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.DFM}

procedure TForm1.btnprintClick(Sender: TObject);

begin

if

(PrinterSetupDialog1.execute)and(PrintDialog1.execute)

Then

Print;

end;

end.

Link para o comentário
Compartilhar em outros sites

  • 0

Em lugar algum. Por isso que salientei que: """para imprimir o conteúdo do DBGrid (ou seja, os registros), mas não a imagem do mesmo (aliás, deve ser possível fazer isso também), você pode usar o objeto Printer."""

Ou seja, o código real seria algo do tipo:

  Printer.BeginDoc;
  Printer.Canvas.TextOut(0, 0, Table1.Fields['campo'].AsString;);
  Printer.Enddoc;

Ou seja, seria necessário percorrer toda a tabela imprimindo campo a campo.

Abraços,

Graymalkin

Eu não entendi esse código... porque printer ao invés de print?

E como eu faço pra imprimir o DBGrid de forma contínua?

Link para o comentário
Compartilhar em outros sites

  • 0

Eu não entendi esse código... porque printer ao invés de print?

Porque adicionei a unit Printers.

E como eu faço pra imprimir o DBGrid de forma contínua?

Se entendi bem, você não quer imprimir *o DBGrid* e sim os dados que estão sendo *exibidos* no mesmo. Na verdade os dados estão na tabela que está relacionada ao DBGrid, por isso você pode percorrer toda a tabela mandando imprimir cada registro.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Eu não entendi esse código... porque printer ao invés de print?

Porque adicionei a unit Printers.

E como eu faço pra imprimir o DBGrid de forma contínua?

Se entendi bem, você não quer imprimir *o DBGrid* e sim os dados que estão sendo *exibidos* no mesmo. Na verdade os dados estão na tabela que está relacionada ao DBGrid, por isso você pode percorrer toda a tabela mandando imprimir cada registro.

Abraços,

Graymalkin

Pois é... sei q o DBGrid está relaciondado a tabela... então eu tentei usar o seguinte código:

procedure TForm1.btnprintClick(Sender: TObject);

begin

if

(PrinterSetupDialog1.execute)and(PrintDialog1.execute)

Then

Print.ABSTable1;

end;

Onde ABSTable1 é o nome da minha tabela... eu achei q isso funcionaria e acho tb q seria mais fácil... mas não deu certo...

O único jeito de imprimir os dados do DBGrid é imprimindo registro por registro?... achei q pudesse imprimir tudo de forma contínua...

Link para o comentário
Compartilhar em outros sites

  • 0
Guest cEpTrOn

COMO IMPRIMIR OS DADOS DE UM DBGRID DIRECTAMENTE -> SOLUÇÃO COMPLETA

Caros amigos aqui fica finalmente e após mil e uma pesquisas na internet, juntei as melhores dicas e deu isto:

1. Colocar um "TPrintDialog" no formulário

2. Adicionar ao uses do form "Printers"

3. No procedimento "OnClick" do button e adicione as variáveis: "var x, y, i: Integer;"

4. Copie o seguinte texto e cole dento do "Begin" e "End."

If PrintD.Execute Then

Begin

With Printer Do

Begin;

BeginDoc;

x := 200; //margem da página

y := 200; //margem da página

With canvas Do

Begin

TABELA.First;

For i := 1 To TABELA.RecordCount Do

Begin

textout(x, y, inttostr(i)+'º | Campo 1: '+

TABELA.FieldValues['NOME_CAMPO_1']+

' | Campo 2: '+string(TABELA.FieldValues['NOME_CAMPO_2'])+

' | Campo 3: '+string(TABELA.FieldValues['NOME_CAMPO_3'])+

' | Campo 4: '+string(TABELA.FieldValues['NOME_CAMPO_4']));

inc(y, 50); ///espaçamento das linhas, não eliminar, 50 é para linha normal

If y = 6600 Then ///tamanho de uma página A4

Begin

Newpage;

y := 200; //margem da nova página

End;

TABELA.Next;

End;

End;

EndDoc;

End;

End;

5. Onde diz "TABELA" substituir pelo nome real da sua tabela

6. Onde diz "NOME_CAMPO_1","NOME_CAMPO_2","NOME_CAMPO_3","NOME_CAMPO_4", substituir pelo nome dos campos da sua tabela

7. Pode eliminar os campos demais ou pode adicionar mais campos na mesma linha basta escrever o "+" para juntar campos e texto

8. E pronto, agora é imprimir o que quiser e inovar ...

trazido por: cEpTrOn

PORTUGAL ;) :lol:

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...