Ajuda - Busca - Membros - Calendário
Versão Completa: Imagens hora são impressas, hora não
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
RafaelemeNt
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.
RafaelemeNt
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.

CODE
//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;
Jhonas
QUOTE
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:

CODE
Function BlockInput(ABlockInput: boolean): Boolean; stdcall;
  external 'USER32.DLL';


CODE
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:

CODE
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
RafaelemeNt
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.
RafaelemeNt
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:

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


A Unit do Formulário:

CODE
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.
Jhonas
Criação Dinâmica do Relatório:

CODE
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
RafaelemeNt
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).

CODE
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,
RafaelemeNt
Senhores, alguma sugestão? Ainda estou com o problema...

Se quiserem, eu disponibilizo todos os códigos Delphi, Banco, ScreenShots e etc....

Muito obrigado.
Jhonas
mude a figura para JPG e depois informe

abraço
RafaelemeNt
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:

CODE
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
Jhonas
QUOTE
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 ....

QUOTE
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
RafaelemeNt
Jhonas, obrigado pela atenção.

Final de semana que vem, farei vários testes sobre isso. Espero que consigo resolver o problema.
Domingo que vem, no mais tardar segunda-feira eu posto os resultados aqui.

Obrigado.
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.