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

Impressão Pelo Dbgrid


Guest - Marcelo -

Pergunta

Guest - Marcelo -

Como eu consigo fazer para imprimir os dados de um dbgrid, sem usar um outro intermediario de formatação de dados, sem ter q fazer um formulario antes, direto dbgrid para impressora ?!?!?!

Link para o comentário
Compartilhar em outros sites

2 respostass a esta questão

Posts Recomendados

  • 0

cara se registra forum para ajudar a comunidade a crescer

não sei se resolve:

1ª opcao. Coloque um botao na tela e em seu codigo digite PRINT;

isto fara com q sua tela seja impressa.

mas como acho q não é isto q você deseja, vamos a 2ª opcao:

procedure TfSQL.SpeedButton1Click(Sender: TObject);

var Cont : Integer;

Arquivo : TextFile;

Caminho : String;

begin

Cont := 0;

screen.Cursor := crHourGlass;

with fDM.ADOQrySQL do begin

Caminho := InputBox('Informe o nome do arquivo', 'Nome', 'Consulta_'+FormatDateTime('YYYYMMDDhhmmss', Now)+'.txt');

if Trim(Caminho) = '' then begin

Caminho := 'Consulta_'+FormatDateTime('YYYYMMDDhhmmss', Now)+'.txt';

end;

try

AssignFile(Arquivo, ExtractFilePath(Application.ExeName)+Caminho);

except

Caminho := 'Consulta_'+FormatDateTime('YYYYMMDDhhmmss', Now)+'.txt';

AssignFile(Arquivo, ExtractFilePath(Application.ExeName)+Caminho);

end;

Rewrite(Arquivo);

//Acrescenta os nomes dos campos

for Cont := 0 to FieldDefList.Count - 1 do begin

Write(Arquivo, Fields.Fields[Cont].DisplayName, ';');

end;

WriteLn(Arquivo);

//Acrescenta os valores dos campos

while not Eof do begin

for Cont := 0 to FieldDefList.Count - 1 do begin

Write(Arquivo, Fields.Fields[Cont].AsString, ';');

end;

WriteLn(Arquivo);

Next;

end;

CloseFile(Arquivo);

end;

screen.Cursor := crDefault;

MessageDlg('Arquivo gerado com êxito!'+#13+

ExtractFilePath(Application.ExeName)+Caminho, mtInformation, [mbOK], 0);

end;

Este código pega o conteudo do dbgrid e envia para um arquivo TXT separado por ;

Se deseja enviar para a impressora, altere o comando

AssignFile(Arquivo, ExtractFilePath(Application.ExeName)+Caminho);

por

AssignFile(Arquivo, 'LPT1');

Assim, seus dados serao enviados para a porta LPT1, independente da impressora q estiver lá.

Link para o comentário
Compartilhar em outros sites

  • 0
cara se registra forum para ajudar a comunidade a crescer

não sei se resolve:

1ª opcao. Coloque um botao na tela e em seu codigo digite PRINT;

isto fara com q sua tela seja impressa.

mas como acho q não é isto q você deseja, vamos a 2ª opcao:

procedure TfSQL.SpeedButton1Click(Sender: TObject);

var Cont : Integer;

Arquivo : TextFile;

Caminho : String;

begin

Cont := 0;

screen.Cursor := crHourGlass;

with fDM.ADOQrySQL do begin

Caminho := InputBox('Informe o nome do arquivo', 'Nome', 'Consulta_'+FormatDateTime('YYYYMMDDhhmmss', Now)+'.txt');

if Trim(Caminho) = '' then begin

Caminho := 'Consulta_'+FormatDateTime('YYYYMMDDhhmmss', Now)+'.txt';

end;

try

AssignFile(Arquivo, ExtractFilePath(Application.ExeName)+Caminho);

except

Caminho := 'Consulta_'+FormatDateTime('YYYYMMDDhhmmss', Now)+'.txt';

AssignFile(Arquivo, ExtractFilePath(Application.ExeName)+Caminho);

end;

Rewrite(Arquivo);

//Acrescenta os nomes dos campos

for Cont := 0 to FieldDefList.Count - 1 do begin

Write(Arquivo, Fields.Fields[Cont].DisplayName, ';');

end;

WriteLn(Arquivo);

//Acrescenta os valores dos campos

while not Eof do begin

for Cont := 0 to FieldDefList.Count - 1 do begin

Write(Arquivo, Fields.Fields[Cont].AsString, ';');

end;

WriteLn(Arquivo);

Next;

end;

CloseFile(Arquivo);

end;

screen.Cursor := crDefault;

MessageDlg('Arquivo gerado com êxito!'+#13+

ExtractFilePath(Application.ExeName)+Caminho, mtInformation, [mbOK], 0);

end;

Este código pega o conteudo do dbgrid e envia para um arquivo TXT separado por ;

Se deseja enviar para a impressora, altere o comando

AssignFile(Arquivo, ExtractFilePath(Application.ExeName)+Caminho);

por

AssignFile(Arquivo, 'LPT1');

Assim, seus dados serao enviados para a porta LPT1, independente da impressora q estiver lá.

não é isso q eu quero, eu queria imprimir direto pelo dbgrid com aquelas colunas e tudo mais......

mas valeu pela dica. biggrin.gif

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,2k
    • Posts
      651,9k
×
×
  • Criar Novo...