Guest - Marcelo - Postado Janeiro 19, 2004 Denunciar Share Postado Janeiro 19, 2004 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 ?!?!?! Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 bolomaster Postado Janeiro 20, 2004 Denunciar Share Postado Janeiro 20, 2004 cara se registra forum para ajudar a comunidade a crescernã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á. Citar Link para o comentário Compartilhar em outros sites More sharing options...
0 Turbo Postado Janeiro 21, 2004 Denunciar Share Postado Janeiro 21, 2004 cara se registra forum para ajudar a comunidade a crescernã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. Citar Link para o comentário Compartilhar em outros sites More sharing options...
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
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.