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

Imagens hora são impressas, hora não


RafaelemeNt

Pergunta

Bom dia srs,

Tenho uma aplicação, feita com Delphi 7 + Firebird 1.5 + DBExpress+ QuickReport. É um software de vistoria de veículos. São inseridos dados, imagens da vistoria e o software gera um laudo impresso.

As imagens que são inseridas no programa, são copiadas para uma outra pasta do do computador, e são renomeadas. Posteriormente são recuperadas para fazer o relatório.

O problema é: o relatório é montado normalmente, e todas as imagens da vistoria aparecem. Porém, quando eu mando imprimir, algumas imagens não são impressas (apenas algumas imagens da vistoria, e não partes do relatório).

São 06 imagens da vistoria. Às vezes, a imagem número 02 não é impressa, às vezes a 03 não é impressa, e outras vezes NENHUMA imagem é impressa. Se por exemplo falhar a impressão da imagem 02, e eu mandar imprimir novamente o relatório, outras imagens que foram impressas anteriormente falham.

Reparei algumas coisas:

01) Se não movimentar o mouse após mandar imprimir, TODAS AS IMAGENS SÃO IMPRESSAS. (Senhores, não estou louco. Eu fiz 15 testes seguidos, testando o que eu citei a pouco, e nas 15 vezes aconteceu o que era previsto: se eu movesse o mouse, falhava alguma [ou todas] as imagens; se eu não movesse o mouse, era tudo impresso corretamente).

02) Esse erro acontece em uma máquina de placa-mãe Intel, com processador ATOM e 2 GB de RAM. Essa máquina foi formatada, instalado o Windows XP Professional com todas atualizações, e apenas instalado os programas básicos. Essa falha, acontece nela, mas não em um outro computador, de capacidade de processamento inferior.

Gostaria que o srs me ajudassem, dando alguma sugestão ou opinião sobre o assunto. Estou sem alternativas de testes (pelo menos, não consigo mais pensar em nenhuma).

Agradeço a atenção dos senhores.

Editado por RafaelemeNt
Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0

Para complementar, eis o código que carrega as imagens para o relatório. Não sei se ajuda, mas eu já tentei colocar ele em outros eventos como: beforePrint e onStartPage. Sem sucesso, continua o mesmo problema.

//Variaveis locais recebendo caminho das imagens a ser exibidas
  caminho_chassi := dmModelo.cdsPesquisaLaudo.FieldByName('PATHCHASSI').AsString;
  caminho_motor := dmModelo.cdsPesquisaLaudo.FieldByName('PATHMOTOR').AsString;
  caminho_placa := dmModelo.cdsPesquisaLaudo.FieldByName('PATHPLACA').AsString;
  caminho_extra := dmModelo.cdsPesquisaLaudo.FieldByName('PATHEXTRA').AsString;
  caminho_extra2 := dmModelo.cdsPesquisaLaudo.FieldByName('PATHEXTRA2').AsString;
  caminho_extra3 := dmModelo.cdsPesquisaLaudo.FieldByName('PATHEXTRA3').AsString;

  //Carregando as 3 imagens obrigatórias
  QRImageChassi.Picture.LoadFromFile(caminho_chassi);
  QRImageMotor.Picture.LoadFromFile(caminho_motor);
  QRImagePlaca.Picture.LoadFromFile(caminho_placa);

  /Se houver imagens não-obrigatórias, elas são carregas. senão, deixa vazio
  if not (caminho_extra = '') then
    begin
      QRImageExtra.Picture.LoadFromFile(caminho_extra);
    end
  else
    begin

      QRLabel61.Enabled := False;
    end;

  if not (caminho_extra2 = '') then
    begin
      QRImageExtra2.Picture.LoadFromFile(caminho_extra2);
    end
  else
    begin

      QRLabel62.Enabled := False;
    end;

  if not (caminho_extra3 = '') then
    begin
      QRImageExtra3.Picture.LoadFromFile(caminho_extra3);
    end
  else
    begin

      QRLabel63.Enabled := False;
    end;
end;

Editado por RafaelemeNt
Link para o comentário
Compartilhar em outros sites

  • 0
se eu movesse o mouse, falhava alguma [ou todas]as imagens; se eu não movesse o mouse, era tudo impresso corretamente).

2 possiveis soluções:

1 - se voce não move o mouse funciona, então trave o mouse durante a impressão

exemplo:

Function BlockInput(ABlockInput: boolean): Boolean; stdcall;
  external 'USER32.DLL';
coloque o comando abaixo no inicio do procedimento

  BlockInput(true); //boqueia

coloque o comando abaixo no final do procedimento

  BlockInput(false); // desbloqueia
2 - outro motivo pode ser o tamanho das figuras, se forem do tipo BMP ( que tem mais de 1 Mb ) pode ocorrer esse tipo de coisa na hora da impressão neste caso uma conversão de tipos resolve o problema ( BMP para JPG ) que tem um tamanho muito menor exemplo:
procedure BmpToJpg(FileName: string);
var
  Jpg: TJpegImage;
  Stm: TMemoryStream;
  Bmp: TBitmap;
begin
  if FileExists(FileName) then begin
    Bmp := TBitmap.Create;
    Bmp.LoadFromFile(FileName);
    Jpg := TJpegImage.Create;
    Jpg.Assign(Bmp);
    Jpg.Compress;
    Stm := TMemoryStream.Create;
    Jpg.SaveToStream(Stm);
    Stm.Position := 0;
    Stm.SaveToFile(ChangeFileExt(FileName, '.jpg'));
    Stm.Free;
    Jpg.Free;
    Bmp.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var caminho : string;
begin
   caminho := 'C:\FOTOS\Bmps\CHASSI5.BMP';
   BmpToJpg(caminho);
   if pos('.',caminho)> 0 then
      delete(caminho,pos('.',caminho),4);
   caminho := caminho + '.JPG';
   QReport.QRImageChassi.Picture.LoadFromFile(caminho);
   QReport.Preview; 
   QReport.Print; 
end;

end.

Faça uma adaptação para o seu código

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

boa tarde Jhonas!

Obrigado pela sua ajuda!

Acrescentei o código de bloqueio de Input no meu código.

Agora, consegui resolver o problema. Primeiramente, a rotina que eu havia colocado para carregar as imagens para o QRImage estava no lugar errado. Eu deveria ter colocado no onCreate do FORM do Relatório.

Segundo: realmente, o tamanho das imagens estava influenciando. Embora todas fossem Jpeg, elas tinham dimensões enormes, de 4000 x 3000 ou um pouco menor. Diminuindo as dimensões, seu tamanho foi pra em torno de 100Kb cada uma, e assim o programa funcionou normalmente.

Agradeço a atenção dispensada!

Muito obrigado mesmo pela sua ajuda, ela é sempre muito importante.

Link para o comentário
Compartilhar em outros sites

  • 0

Boa noite senhores.

Desculpem abrir novamente o tópico, porém o meu pesadelo voltou. Eu pensei que havia resolvido o problema, mas eu só retardei.

Explicarei melhor o que está acontecendo, desde o início.

Criei uma pequena aplicação para gerar Laudos técnicos de vistoria de Veículos. O laudo precisa conter informações de veículos e principalmente as FOTOS da vistoria.

Assim sendo, criei a aplicação com Delphi 7 + QuickReport + IBExpert + Firebird 1.5 + Componentes DBExpress.

Basicamente, a aplicação salva em Banco de Dados apenas o CAMINHO da imagem, e usa esse caminho posteriormente para carregar e gerar o relatório. São 6 fotos ao total.

A aplicação funciona dentro do esperado até a geração do Relatório. O usuário consegue visualizar todas as informações corretamente, assim como as fotos. Porém, ao mandar IMPRIMIR, "às vezes", alguma das imagens some.

Não é sempre que isso acontece. Pode acontecer 3 vezes no dia, como pode acontecer 3 vezes na semana, independemente do número de relatórios.Exemplo: São 6 fotos. Chassi, Motor, Placa, Hodômetro, Plaqueta e FotoAdicional. O usuário consegue gerar alguns relatórios, mas depois a imagem não aparece na IMPRESSÃO.

Se o usuário fechar o relatório e abrir novamente, às vezes é possível imprimir corretamente, mas outras vezes não.

Ouvi falar que poderia ser um erro de relatório interno, ou seja, algum problema com o QuickReport. Então, baixei e instalei o pacote do Fortes Report mas infelizmente o problema é O MESMO. Abaixo está relacionado tudo da parte Relatório que eu criei.

Criação Dinâmica do Relatório:

Application.CreateForm(TfrmRelatorio,frmRelatorio);
      frmRelatorio.QRCompositeReport1.Prepare;
      frmRelatorio.QRCompositeReport1.Preview;
      FreeAndNil(frmRelatorio);
A Unit do Formulário:
unit untFrmRelatorio;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, QRCtrls, QuickRpt, ExtCtrls, Jpeg;

type
  TfrmRelatorio = class(TForm)
    QuickRep1: TQuickRep;
    QRBand1: TQRBand;
    QRLabel1: TQRLabel;
    QRCompositeReport1: TQRCompositeReport;
    QRBand3: TQRBand;
    QuickRep2: TQuickRep;
    QRLabel3: TQRLabel;
    QRLabel4: TQRLabel;
    QRLabel5: TQRLabel;
    QRImage1: TQRImage;
    QRSysData1: TQRSysData;
    QRLabel6: TQRLabel;
    QRLabel7: TQRLabel;
    QRDBText1: TQRDBText;
    QRShape1: TQRShape;
    QRLabel8: TQRLabel;
    QRLabel9: TQRLabel;
    QRDBText2: TQRDBText;
    QRLabel10: TQRLabel;
    QRDBText3: TQRDBText;
    QRShape2: TQRShape;
    QRLabel11: TQRLabel;
    QRLabel12: TQRLabel;
    QRLabel13: TQRLabel;
    QRLabel14: TQRLabel;
    QRLabel15: TQRLabel;
    QRLabel16: TQRLabel;
    QRLabel17: TQRLabel;
    QRLabel18: TQRLabel;
    QRLabel19: TQRLabel;
    QRLabel20: TQRLabel;
    QRLabel21: TQRLabel;
    QRLabel22: TQRLabel;
    QRLabel23: TQRLabel;
    QRLabel24: TQRLabel;
    QRLabel25: TQRLabel;
    QRLabel26: TQRLabel;
    QRLabel27: TQRLabel;
    QRLabel28: TQRLabel;
    QRLabel29: TQRLabel;
    QRLabel30: TQRLabel;
    QRLabel31: TQRLabel;
    QRLabel32: TQRLabel;
    QRLabel33: TQRLabel;
    QRLabel34: TQRLabel;
    QRLabel35: TQRLabel;
    QRLabel36: TQRLabel;
    QRLabel37: TQRLabel;
    QRLabel38: TQRLabel;
    QRDBText4: TQRDBText;
    QRDBText5: TQRDBText;
    QRDBText6: TQRDBText;
    QRDBText7: TQRDBText;
    QRDBText8: TQRDBText;
    QRDBText9: TQRDBText;
    QRDBText10: TQRDBText;
    QRDBText11: TQRDBText;
    QRDBText12: TQRDBText;
    QRDBText14: TQRDBText;
    QRDBText15: TQRDBText;
    QRDBText16: TQRDBText;
    QRDBText17: TQRDBText;
    QRDBText18: TQRDBText;
    QRDBText19: TQRDBText;
    QRDBText20: TQRDBText;
    QRDBText21: TQRDBText;
    QRDBText22: TQRDBText;
    QRDBText23: TQRDBText;
    QRDBText24: TQRDBText;
    QRDBText25: TQRDBText;
    QRDBText26: TQRDBText;
    QRDBText27: TQRDBText;
    QRDBText28: TQRDBText;
    QRDBText29: TQRDBText;
    QRShape3: TQRShape;
    QRDBRichText1: TQRDBRichText;
    QRShape4: TQRShape;
    QRLabel39: TQRLabel;
    QRMemo1: TQRMemo;
    QRLabel40: TQRLabel;
    QRShape5: TQRShape;
    QRBand2: TQRBand;
    QRLabel44: TQRLabel;
    QRLabel45: TQRLabel;
    QRLabel46: TQRLabel;
    QRSysData2: TQRSysData;
    QRLabel47: TQRLabel;
    QRLabel48: TQRLabel;
    QRBand5: TQRBand;
    QRLabel50: TQRLabel;
    QRLabel51: TQRLabel;
    QRShape6: TQRShape;
    QRLabel52: TQRLabel;
    QRShape7: TQRShape;
    QRShape8: TQRShape;
    QRShape11: TQRShape;
    QRShape12: TQRShape;
    QRShape9: TQRShape;
    QRShape10: TQRShape;
    QRLabel53: TQRLabel;
    QRLabel54: TQRLabel;
    QRLabel55: TQRLabel;
    QRDBText31: TQRDBText;
    QRDBText32: TQRDBText;
    QRDBText33: TQRDBText;
    QRLabel56: TQRLabel;
    QRLabel57: TQRLabel;
    QRShape13: TQRShape;
    QRShape14: TQRShape;
    QRLabel41: TQRLabel;
    QRLabel42: TQRLabel;
    QRShape15: TQRShape;
    QRShape16: TQRShape;
    QRLabel43: TQRLabel;
    QRLabel49: TQRLabel;
    QRImageChassi: TQRImage;
    QRLabel58: TQRLabel;
    QRDBText34: TQRDBText;
    QRImageMotor: TQRImage;
    QRLabel59: TQRLabel;
    QRDBText35: TQRDBText;
    QRImagePlaca: TQRImage;
    QRLabel60: TQRLabel;
    QRDBText36: TQRDBText;
    QRImageExtra: TQRImage;
    QRImageExtra2: TQRImage;
    QRLabel62: TQRLabel;
    QRDBText38: TQRDBText;
    QRImageExtra3: TQRImage;
    QRLabel63: TQRLabel;
    QRDBText39: TQRDBText;
    QRImage2: TQRImage;
    QRDBText30: TQRDBText;
    QRLabel2: TQRLabel;
    QRImage3: TQRImage;
    QRImage4: TQRImage;
    QRLabel64: TQRLabel;
    QRLabel65: TQRLabel;
    QRDBText40: TQRDBText;
    QRDBText41: TQRDBText;
    QRDBText13: TQRDBText;
    QRLabel66: TQRLabel;
    QRLabel67: TQRLabel;
    procedure QRCompositeReport1AddReports(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmRelatorio: TfrmRelatorio;
  caminho_chassi, caminho_motor, caminho_placa, caminho_extra, caminho_extra2,
  caminho_extra3 : String;

implementation

uses untDmModelo;

{$R *.dfm}

procedure TfrmRelatorio.QRCompositeReport1AddReports(Sender: TObject);
begin

//Preciso de Duas páginas para todas as informações. Na página 1 aparecem os dados e na Página 2 as FOTOS.

  QRCompositeReport1.Reports.Add(QuickRep1);  // Página da Frente
  QRCompositeReport1.Reports.Add(QuickRep2);  //Página do Verso
end;

procedure TfrmRelatorio.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  Action := caFree;
  frmRelatorio.Release;
  frmRelatorio := nil;
end;

procedure TfrmRelatorio.FormCreate(Sender: TObject);
begin
//Variáveis recebem o caminho das imagens

  caminho_chassi := dmModelo.cdsPesquisaLaudo.FieldByName('PATHCHASSI').AsString;
  caminho_motor := dmModelo.cdsPesquisaLaudo.FieldByName('PATHMOTOR').AsString;
  caminho_placa := dmModelo.cdsPesquisaLaudo.FieldByName('PATHPLACA').AsString;
  caminho_extra := dmModelo.cdsPesquisaLaudo.FieldByName('PATHEXTRA').AsString;
  caminho_extra2 := dmModelo.cdsPesquisaLaudo.FieldByName('PATHEXTRA2').AsString;
  caminho_extra3 := dmModelo.cdsPesquisaLaudo.FieldByName('PATHEXTRA3').AsString;

//Os componentes de imagem recebem a IMAGEM para formar o Relatório  

  QRImageChassi.Picture.LoadFromFile(caminho_chassi);
  QRImageMotor.Picture.LoadFromFile(caminho_motor);
  QRImagePlaca.Picture.LoadFromFile(caminho_placa);
  

  if not (caminho_extra = '') then
    begin
      QRImageExtra.Picture.LoadFromFile(caminho_extra);
    end;

  if not (caminho_extra2 = '') then
    begin
      QRImageExtra2.Picture.LoadFromFile(caminho_extra2);
    end;

  if not (caminho_extra3 = '') then
    begin
      QRImageExtra3.Picture.LoadFromFile(caminho_extra3);
    end

end;

end.

Refiz o relatório com o Fortes Report, mas o problema continua. Por favor, não tenho experiência com relatórios. Se estou fazendo alguma besteira, por favor, me alertem!

Agradeço a atenção.

Editado por RafaelemeNt
Link para o comentário
Compartilhar em outros sites

  • 0

Criação Dinâmica do Relatório:

Application.CreateForm(TfrmRelatorio,frmRelatorio);
      frmRelatorio.QRCompositeReport1.Prepare;
      frmRelatorio.QRCompositeReport1.Preview;
      FreeAndNil(frmRelatorio);

Voce limpou da memoria o frmRelatorio ( FreeAndNil(frmRelatorio) ) , mas não fez o mesmo com QuickRep1 e QuickRep2 ... por isso acontece de hora aparecer a imagem e hora não.

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Obrigado por responder Jhonas.

Desculpe não ter respondido antes, estava viajando e só consegui ver esse final de semana. Acrescentei a liberação que você sugeriu. Eu coloquei o código abaixo dentro do evento "onClose" do formulário do Relatório (frmRelatorio).

FreeAndNil(QuickRep1);
FreeAndNil(QuickRep2);

Seria isso? O Código compilou sem erros. Colocarei em teste e depois postarei os resultados. Agradeço sua ajuda.

Abraços,

Editado por RafaelemeNt
Link para o comentário
Compartilhar em outros sites

  • 0

Olá Jhonas, obrigado pelo interesse.

Estou usando apenas figuras JPEG no sistema. Todas redimensionadas para aproximadamente 800x600px com tamanho médio de 70 KB. Eis o código da Unit que faz a gravação no banco de dados e copia as figuras:

unit untFrmCarregarImagem;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, ExtDlgs, StdCtrls, Buttons, ExtCtrls;

type
  TfrmCarregarImagens = class(TForm)
    GroupBox4: TGroupBox;
    Label35: TLabel;
    GroupBox5: TGroupBox;
    Label30: TLabel;
    Panel2: TPanel;
    imgChassi: TImage;
    btnCarregaChassi: TBitBtn;
    btnLimpaChassi: TBitBtn;
    cbChassi: TComboBox;
    GroupBox6: TGroupBox;
    Label31: TLabel;
    Panel4: TPanel;
    imgMotor: TImage;
    btnCarregaMotor: TBitBtn;
    btnLimpaMotor: TBitBtn;
    cbMotor: TComboBox;
    GroupBox7: TGroupBox;
    Label32: TLabel;
    Panel5: TPanel;
    imgPlaca: TImage;
    btnCarregaPlaca: TBitBtn;
    btnLimpaPlaca: TBitBtn;
    cbPlaca: TComboBox;
    GroupBox8: TGroupBox;
    Panel6: TPanel;
    imgExtra: TImage;
    btnCarregaExtra: TBitBtn;
    btnLimpaExtra: TBitBtn;
    edtCaminho: TEdit;
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    Panel1: TPanel;
    imgExtra2: TImage;
    btnCarregaExtra2: TBitBtn;
    btnLimpaExtra2: TBitBtn;
    cbExtra2: TComboBox;
    edtExtra2: TEdit;
    GroupBox2: TGroupBox;
    Label3: TLabel;
    Label4: TLabel;
    Panel3: TPanel;
    imgExtra3: TImage;
    btnCarregaExtra3: TBitBtn;
    btnLimpaExtra3: TBitBtn;
    cbExtra3: TComboBox;
    edtExtra3: TEdit;
    btnConfirmar: TBitBtn;
    btnLimpar: TBitBtn;
    btnIncluir: TBitBtn;
    OpenPictureDialogChassi: TOpenPictureDialog;
    OpenPictureDialogMotor: TOpenPictureDialog;
    OpenPictureDialogPlaca: TOpenPictureDialog;
    OpenPictureDialogExtra: TOpenPictureDialog;
    OpenPictureDialogExtra2: TOpenPictureDialog;
    OpenPictureDialogExtra3: TOpenPictureDialog;
    procedure Gravar;
    procedure btnCarregaChassiClick(Sender: TObject);
    procedure btnLimpaChassiClick(Sender: TObject);
    procedure btnCarregaMotorClick(Sender: TObject);
    procedure btnLimpaMotorClick(Sender: TObject);
    procedure btnCarregaPlacaClick(Sender: TObject);
    procedure btnLimpaPlacaClick(Sender: TObject);
    procedure btnCarregaExtraClick(Sender: TObject);
    procedure btnLimpaExtraClick(Sender: TObject);
    procedure btnCarregaExtra2Click(Sender: TObject);
    procedure btnLimpaExtra2Click(Sender: TObject);
    procedure btnCarregaExtra3Click(Sender: TObject);
    procedure btnLimpaExtra3Click(Sender: TObject);
    procedure btnIncluirClick(Sender: TObject);
    procedure btnConfirmarClick(Sender: TObject);
    procedure btnLimparClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  frmCarregarImagens: TfrmCarregarImagens;

implementation

uses untDmModelo, untFrmGerarLaudo, untFrmRelatorio;

{$R *.dfm}

procedure TfrmCarregarImagens.Gravar;
begin

  dmModelo.cdsGerarLaudos.FieldByName('NOME').AsString := frmGerarLaudo.edtNome.Text;

    if frmGerarLaudo.rbCpf.Checked = True then
      dmModelo.cdsGerarLaudos.FieldByName('CPFCNPJ').AsString := frmGerarLaudo.mEdtCpf.Text;
    if frmGerarLaudo.rbCnpj.Checked = True then
      dmModelo.cdsGerarLaudos.FieldByName('CPFCNPJ').AsString := frmGerarLaudo.mEdtCnpj.Text;

  dmModelo.cdsGerarLaudos.FieldByName('PLACA').AsString := frmGerarLaudo.mEdtPlaca.Text;
  dmModelo.cdsGerarLaudos.FieldByName('MARCA').AsString := frmGerarLaudo.edtMarca.Text;
  dmModelo.cdsGerarLaudos.FieldByName('ANOFABRICACAO').AsString := frmGerarLaudo.edtAnoFabricacao.Text;
  dmModelo.cdsGerarLaudos.FieldByName('COR').AsString := frmGerarLaudo.edtCor.Text;
  dmModelo.cdsGerarLaudos.FieldByName('RENAVAM').AsString := frmGerarLaudo.edtRenavam.Text;
  dmModelo.cdsGerarLaudos.FieldByName('MODELO').AsString := frmGerarLaudo.edtModelo.Text;
  dmModelo.cdsGerarLaudos.FieldByName('ANOMODELO').AsString := frmGerarLaudo.edtAnoModelo.Text;
  dmModelo.cdsGerarLaudos.FieldByName('COMBUSTIVEL').AsString := frmGerarLaudo.edtCombustivel.Text;
  dmModelo.cdsGerarLaudos.FieldByName('CHASSI').AsString := frmGerarLaudo.edtChassi.Text;
  dmModelo.cdsGerarLaudos.FieldByName('MOTOR').AsString := frmGerarLaudo.edtMotor.Text;
  dmModelo.cdsGerarLaudos.FieldByName('CAMBIO').AsString := frmGerarLaudo.edtCambio.Text;
  dmModelo.cdsGerarLaudos.FieldByName('DIFERENCIAL').AsString := frmGerarLaudo.edtDiferencial.Text;
  dmModelo.cdsGerarLaudos.FieldByName('CAIXADEDIRECAO').AsString := frmGerarLaudo.edtCaixaDeDirecao.Text;
  dmModelo.cdsGerarLaudos.FieldByName('BOMBAINJETORA').AsString := frmGerarLaudo.edtBombaInjetora.Text;
  dmModelo.cdsGerarLaudos.FieldByName('EIXO1').AsString := frmGerarLaudo.edt1Eixo.Text;
  dmModelo.cdsGerarLaudos.FieldByName('EIXO2').AsString := frmGerarLaudo.edt2Eixo.Text;
  dmModelo.cdsGerarLaudos.FieldByName('EIXO3').AsString := frmGerarLaudo.edt3Eixo.Text;
  dmModelo.cdsGerarLaudos.FieldByName('PLAQUETA').AsString := frmGerarLaudo.edtPlaqueta.Text;
  dmModelo.cdsGerarLaudos.FieldByName('CARROCERIA').AsString := frmGerarLaudo.edtCarroceria.Text;
  dmModelo.cdsGerarLaudos.FieldByName('LOTACAO').AsString := frmGerarLaudo.edtLotacao.Text;
  dmModelo.cdsGerarLaudos.FieldByName('TONELAGEM').AsString := frmGerarLaudo.edtTonelagem.Text;
  dmModelo.cdsGerarLaudos.FieldByName('ALIENACAO').AsString := frmGerarLaudo.edtAlienacao.Text;
  dmModelo.cdsGerarLaudos.FieldByName('ARRENDAMENTO').AsString := frmGerarLaudo.edtArrendamento.Text;
  dmModelo.cdsGerarLaudos.FieldByName('TRIBUTARIA').AsString := frmGerarLaudo.edtTributaria.Text;
  dmModelo.cdsGerarLaudos.FieldByName('ADMINISTRATIVA').AsString := frmGerarLaudo.edtAdministrativa.Text;
  dmModelo.cdsGerarLaudos.FieldByName('RESERVADOMINIO').AsString := frmGerarLaudo.edtReservaDominio.Text;
  dmModelo.cdsGerarLaudos.FieldByName('DEFINEEXTRA').AsString := 'Hodômetro';
  dmModelo.cdsGerarLaudos.FieldByName('DEFINEEXTRA2').AsString := edtExtra2.Text;
  dmModelo.cdsGerarLaudos.FieldByName('DEFINEEXTRA3').AsString := edtExtra3.Text;
  dmModelo.cdsGerarLaudos.FieldByName('PATHCHASSI').AsString := caminho_chassi;
  dmModelo.cdsGerarLaudos.FieldByName('PATHMOTOR').AsString := caminho_motor;
  dmModelo.cdsGerarLaudos.FieldByName('PATHPLACA').AsString := caminho_placa;

  If not (OpenPictureDialogExtra.FileName = '') then
    dmModelo.cdsGerarLaudos.FieldByName('PATHEXTRA').AsString := caminho_extra;
  If not (OpenPictureDialogExtra2.FileName = '') then
    dmModelo.cdsGerarLaudos.FieldByName('PATHEXTRA2').AsString := caminho_extra2;
  If not (OpenPictureDialogExtra3.FileName = '') then
    dmModelo.cdsGerarLaudos.FieldByName('PATHEXTRA3').AsString := caminho_extra3;

  dmModelo.cdsGerarLaudos.FieldByName('OBSERVACAO').AsString := frmGerarLaudo.memoObservacao.Text;
  dmModelo.cdsGerarLaudos.FieldByName('CHASSICONFBIN').AsString := cbChassi.Text;
  dmModelo.cdsGerarLaudos.FieldByName('MOTORCONFBIN').AsString := cbMotor.Text;
  dmModelo.cdsGerarLaudos.FieldByName('PLACACONFBIN').AsString := cbPlaca.Text;
  dmModelo.cdsGerarLaudos.FieldByName('EXTRA2CONFBIN').AsString := cbExtra2.Text;
  dmModelo.cdsGerarLaudos.FieldByName('EXTRA3CONFBIN').AsString := cbExtra3.Text;
  dmModelo.cdsGerarLaudos.FieldByName('DATA').AsDateTime := frmGerarLaudo.dtpHoje.Date;
  dmModelo.cdsGerarLaudos.FieldByName('VIDROS').AsString := frmGerarLaudo.edtVidros.Text;
  dmModelo.cdsGerarLaudos.FieldByName('HODOMETRO').AsString := frmGerarLaudo.edtHodometro.Text;

  end;

procedure TfrmCarregarImagens.btnCarregaChassiClick(Sender: TObject);
begin
  if OpenPictureDialogChassi.Execute then
    begin
      imgChassi.Picture.LoadFromFile(OpenPictureDialogChassi.FileName);
      edtCaminho.Text := OpenPictureDialogChassi.FileName;
    end;
end;

procedure TfrmCarregarImagens.btnLimpaChassiClick(Sender: TObject);
begin
  imgChassi.Picture := Nil;
  OpenPictureDialogChassi.FileName := '';
  caminho_chassi := '';
  edtCaminho.Clear;
end;

procedure TfrmCarregarImagens.btnCarregaMotorClick(Sender: TObject);
begin
  if OpenPictureDialogMotor.Execute then
    begin
      imgMotor.Picture.LoadFromFile(OpenPictureDialogMotor.FileName);
      edtCaminho.Text := OpenPictureDialogMotor.FileName;
    end;
end;

procedure TfrmCarregarImagens.btnLimpaMotorClick(Sender: TObject);
begin
  imgMotor.Picture := Nil;
  OpenPictureDialogMotor.FileName := '';
  caminho_motor := '';
  edtCaminho.Clear;
end;

procedure TfrmCarregarImagens.btnCarregaPlacaClick(Sender: TObject);
begin
  if OpenPictureDialogPlaca.Execute then
    begin
      imgPlaca.Picture.LoadFromFile(OpenPictureDialogPlaca.FileName);
      edtCaminho.Text := OpenPictureDialogPlaca.FileName;
    end;
end;

procedure TfrmCarregarImagens.btnLimpaPlacaClick(Sender: TObject);
begin
  imgPlaca.Picture := Nil;
  OpenPictureDialogPlaca.FileName := '';
  caminho_placa := '';
  edtCaminho.Clear;
end;

procedure TfrmCarregarImagens.btnCarregaExtraClick(Sender: TObject);
begin
  if OpenPictureDialogExtra.Execute then
    begin
      imgExtra.Picture.LoadFromFile(OpenPictureDialogExtra.FileName);
      edtCaminho.Text := OpenPictureDialogExtra.FileName;
    end;
end;

procedure TfrmCarregarImagens.btnLimpaExtraClick(Sender: TObject);
begin
  imgExtra.Picture := Nil;
  OpenPictureDialogExtra.FileName := '';
  caminho_extra := '';
  edtCaminho.Clear;
end;

procedure TfrmCarregarImagens.btnCarregaExtra2Click(Sender: TObject);
begin
  if OpenPictureDialogExtra2.Execute then
    begin
      imgExtra2.Picture.LoadFromFile(OpenPictureDialogExtra2.FileName);
      edtCaminho.Text := OpenPictureDialogExtra2.FileName;
    end;
end;

procedure TfrmCarregarImagens.btnLimpaExtra2Click(Sender: TObject);
begin
  imgExtra2.Picture := Nil;
  OpenPictureDialogExtra2.FileName := '';
  caminho_extra2 := '';
  edtCaminho.Clear;
end;

procedure TfrmCarregarImagens.btnCarregaExtra3Click(Sender: TObject);
begin
  if OpenPictureDialogExtra3.Execute then
    begin
      imgExtra3.Picture.LoadFromFile(OpenPictureDialogExtra3.FileName);
      edtCaminho.Text := OpenPictureDialogExtra3.FileName;
    end;
end;

procedure TfrmCarregarImagens.btnLimpaExtra3Click(Sender: TObject);
begin
  imgExtra3.Picture := Nil;
  OpenPictureDialogExtra3.FileName := '';
  caminho_extra3 := '';
  edtCaminho.Clear;
end;

procedure TfrmCarregarImagens.btnIncluirClick(Sender: TObject);
begin
  dmModelo.cdsGerarLaudos.Append;
  btnConfirmar.Enabled := True;
end;

procedure TfrmCarregarImagens.btnConfirmarClick(Sender: TObject);
var
  auxiliar : String;
begin

  if ((OpenPictureDialogChassi.FileName = '') or (OpenPictureDialogMotor.FileName = '') or (OpenPictureDialogPlaca.FileName = '')) then
      MessageDlg('Somente Imagens "EXTRA" podem ficar em Branco.', mtError, [mbOk], 0)
  else
    begin
      auxiliar := frmGerarLaudo.mEdtPlaca.Text;
      dia := DateToStr(frmGerarLaudo.dtpHoje.Date);
      dia := StringReplace(dia, '/', '', [rfReplaceAll, rfIgnoreCase]);

      //Copia os arquivos para a pasta Imagens direto no Servidor -> (D:\modelo\imagens\)
      //Acrescenta o nome aos novos arquivos
      //Nome formado por: PATH + DDMMAAAA_ (Data) + PLACA + especificação

      imgChassi.Picture.SaveToFile('\\modelo01\modelo$\imagem\' + dia + '_' + auxiliar + '_chassi.jpg');
      caminho_chassi := '\\modelo01\modelo$\imagem\' + dia + '_' + auxiliar + '_chassi.jpg';

      imgMotor.Picture.SaveToFile('\\modelo01\modelo$\imagem\' + dia + '_' + auxiliar + '_motor.jpg');
      caminho_motor := '\\modelo01\modelo$\imagem\' + dia + '_' + auxiliar + '_motor.jpg';

      imgPlaca.Picture.SaveToFile('\\modelo01\modelo$\imagem\' + dia + '_' + auxiliar + '_placa.jpg');
      caminho_placa := '\\modelo01\modelo$\imagem\' + dia + '_' + auxiliar + '_placa.jpg';

      if not (OpenPictureDialogExtra.FileName = '') then
        begin
          imgExtra.Picture.SaveToFile('\\modelo01\modelo$\imagem\' + dia + '_' + auxiliar + '_extra.jpg');
          caminho_extra := '\\modelo01\modelo$\imagem\' + dia + '_' + auxiliar + '_extra.jpg';
        end;

      if not (OpenPictureDialogExtra2.FileName = '') then
        begin
          imgExtra2.Picture.SaveToFile('\\modelo01\modelo$\imagem\' + dia + '_' + auxiliar + '_extra2.jpg');
          caminho_extra2 := '\\modelo01\modelo$\imagem\' + dia + '_' + auxiliar + '_extra2.jpg';
        end;

      if not (OpenPictureDialogExtra3.FileName = '') then
        begin
          imgExtra3.Picture.SaveToFile('\\modelo01\modelo$\imagem\' + dia + '_' + auxiliar + '_extra3.jpg');
          caminho_extra3 := '\\modelo01\modelo$\imagem\' + dia + '_' + auxiliar + '_extra3.jpg';
        end;

      Gravar;
      dmModelo.cdsGerarLaudos.ApplyUpdates(0);
      MessageDlg('Laudo Gravado com Sucesso. Gerando Relatório.', mtConfirmation, [mbOk], 0);

      dmModelo.cdsPesquisaLaudo.Close;
      dmModelo.cdsPesquisaLaudo.CommandText := 'select FIRST 1 * from LAUDOS order by CODIGO desc';
      dmModelo.cdsPesquisaLaudo.Open;
      dmModelo.cdsPesquisaLaudo.Refresh;


      frmGerarLaudo.Limpar;

      Application.CreateForm(TfrmRelatorio,frmRelatorio);
      frmRelatorio.QRCompositeReport1.Prepare;
      frmRelatorio.QRCompositeReport1.Preview;
      FreeAndNil(frmRelatorio);

      Close;

    end;
end;

procedure TfrmCarregarImagens.btnLimparClick(Sender: TObject);
begin
  imgChassi.Picture := Nil;
  imgMotor.Picture := Nil;
  imgPlaca.Picture := Nil;
  imgExtra.Picture := Nil;
  imgExtra2.Picture := Nil;
  imgExtra3.Picture := Nil;
  OpenPictureDialogChassi.FileName := '';
  OpenPictureDialogMotor.FileName := '';
  OpenPictureDialogPlaca.FileName := '';
  OpenPictureDialogExtra.FileName := '';
  OpenPictureDialogExtra2.FileName := '';
  OpenPictureDialogExtra3.FileName := '';
  edtCaminho.Clear;
  edtExtra2.Clear;
  edtExtra3.Clear;
  caminho_chassi := '';
  caminho_motor := '';
  caminho_placa := '';
  caminho_extra := '';
  caminho_extra2 := '';
  caminho_extra3 := '';
  cbChassi.ItemIndex := -1;
  cbMotor.ItemIndex := -1;
  cbPlaca.ItemIndex := -1;
  cbExtra2.ItemIndex := -1;
  cbExtra3.ItemIndex := -1;
end;

procedure TfrmCarregarImagens.FormCreate(Sender: TObject);
begin
  btnConfirmar.Enabled := False;
end;

procedure TfrmCarregarImagens.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  OpenPictureDialogChassi.FreeOnRelease;
  OpenPictureDialogMotor.FreeOnRelease;
  OpenPictureDialogPlaca.FreeOnRelease;
  OpenPictureDialogExtra.FreeOnRelease;
  OpenPictureDialogExtra2.FreeOnRelease;
  OpenPictureDialogExtra3.FreeOnRelease;
  dmModelo.cdsGerarLaudos.CancelUpdates;

end;

end.

Agradeço por qualquer ajuda ou sugestão.

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
Estou usando apenas figuras JPEG no sistema. Todas redimensionadas para aproximadamente 800x600px com tamanho médio de 70 KB.
Voce não atentou para um detalhe ....

1 imagem de 800 x 600 com 24 Bit ( 16.7 Milhões de Cores ) requer uma memoria de aproximadamente 2.7 Mbytes

1 imagem de 800 x 600 com 8 Bit ( 256 Cores ) requer uma memoria de aproximadamente 937.5 Kbytes

1 imagem de 320 x 240 com 24 Bit ( 16.7 Milhões de Cores ) requer uma memoria de aproximadamente 450 Kbytes

1 imagem de 320 x 240 com 8 Bit ( 256 Cores ) requer uma memoria de aproximadamente 150 Kbytes

Será que agora voce conseguiu entender o porque de hora imprimir a imagem e hora não ?

Tenha certeza que o problema está no tamanho da figura e no Bit de cor

abraço

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