OpenDialog ou OpenPictureDialog

Delphi

02/12/2008

:D Ola Amigos Delphianos...

Bem o bicho agora ta queimando meus neuronios, vamos ao caso...

Olha de ante mao vou explicar, tenho o Delphi 2007 trabalho com DbExpress e uso o Firebird 2.1...

Abaixo esta o codigo que estou usando no Cadastro de Clientes ainda nao esta completo, mas ocorre um erro;

procedure TFrmClientes.btnCarregarImgClick(Sender: TObject);
var
loMemoryStream: TMemoryStream;
lsPath : String ;
begin
  inherited;
  try
  if OPPicture.Execute then
  begin
    lsPath := OPPicture.FileName;

    if FileExists(lsPath) then
    begin
      loMemoryStream := TMemoryStream.Create;
      loMemoryStream.LoadFromFile(lsPath);

     DM.cdsClienteFOTO.LoadFromStream(loMemoryStream);
    end;
  end;

  except
//  on e: exception do
//  Mensagem.Erro(´Arquivo seleciona inválido!´, e.message);
end;


O que acontece é o seguinte:

Logo que abre a caixa de dialogo eu seleciono a pasta onde se encontram as imagens, assim que eu a seleciono ja da uma mensagem de erro que segue abaixo:

[b:2ab8b0aa2a]Bitmap image is not valid[/b:2ab8b0aa2a]

Esse erro ocorre logo apos selecionar a imagem de clicar no botao ABRIR da caixa de dialogo do Opendialog pois estou usando ele.

Obs: Nao quero trabalhar com imagens BMP e sim JPG, na clausula uses ja esta declarado a unit JPEG.

Espero ter explicado corretamente meu problema...

Abraços


Peterpan

Peterpan

Curtidas 0

Respostas

Facc

Facc

02/12/2008

Como vc faz para selecionar a imagem?

Pois esse erro é de vc não estar gravando nada, ou seja, não selecionou a imagem.

Provavelmente, qndo clica no botão, a imagem perde o foco, por isso o erro. Agora tenta jogar o nome dela em uma variavel.


GOSTEI 0
Peterpan

Peterpan

02/12/2008

Como vc faz para selecionar a imagem? Pois esse erro é de vc não estar gravando nada, ou seja, não selecionou a imagem. Provavelmente, qndo clica no botão, a imagem perde o foco, por isso o erro. Agora tenta jogar o nome dela em uma variavel.


Qdo abre a pasta eu clico na imagem e apos clico no botao abrir.

Mas entao como devo proceder para jorgar essa imagem selecionada numa variavel?

Pode me ajudar....

Abraços


GOSTEI 0
Ara.es

Ara.es

02/12/2008

Peterpan, vc está exibindo essa imagem?? se não me engano o Timage ou o TDBImage tem problemas com um dos tipos de imagem, nao me lembro se Jpeg, ou BMP, sei que é preciso converter para poder exibir e tal. dê uma verificada nisso, talvez o problema não seja nos opendialogs da vida. Flw !!


GOSTEI 0
Peterpan

Peterpan

02/12/2008

Peterpan, vc está exibindo essa imagem?? se não me engano o Timage ou o TDBImage tem problemas com um dos tipos de imagem, nao me lembro se Jpeg, ou BMP, sei que é preciso converter para poder exibir e tal. dê uma verificada nisso, talvez o problema não seja nos opendialogs da vida. Flw !!


Ola ara.es blz...

É eu uso um TDBImage, agora como vc falou que te erro, vou procurar alguma informação, mas creio que a forma que esta codificado sera que contem algum erro ?

abraços


GOSTEI 0
Wdrocha

Wdrocha

02/12/2008

Bom dia....acho q o problema é no seu código...

Eu uso TImage para carregar imagens e até cortar imagens e não tenho problemas... se vc quer carregar imagens JPG vc tem q primeiro informar ao openDialog que o mesmo só visualizará imagens JPG....E para carregar a imagem vc pod fazer assim...

Procedure CarregaImagen();

Var JPG : TJPegImage;

If OpenDialog.Execute Then
    Try
         JPG.LoadFromFile(OPenDialog.FileName);
         SeuTImageOuTdbImage.Picture.Assign(JPG); 
         //Ou pode fazer assim
         SeuTImageOuTdbImage.Picture.LoadFromFile(OpenDialog.FileName); 
    Finally
   
         FreeAndNil(JPG);     

    End;   



Espero ter sido útil...qualquer coisa...posta aew....

Flw


GOSTEI 0
Wdrocha

Wdrocha

02/12/2008

Esqueci de instanciar a variável JPG...faz assim..


rocedure CarregaImagen(); 

Var JPG : TJPegImage; 

If OpenDialog.Execute Then 
    Begin
      Try
         JPG := TJPEGImage.Create(); 
         JPG.LoadFromFile(OPenDialog.FileName); 
         SeuTImageOuTdbImage.Picture.Assign(JPG); 
         //Ou pode fazer assim 
                     SeuTImageOuTdbImage.Picture.LoadFromFile(OpenDialog.FileName); 
    Finally 
    
         FreeAndNil(JPG);      

    End;
  End;    


E para mostrar apenas imagens JPG no seu OpenDialog usa a propriedade DefaultExt coloca *.jpg...

pronto....agora sim...acho q fui mais claro....


GOSTEI 0
Ara.es

Ara.es

02/12/2008

Peterpan, o problema deve ser esse mesmo, estive olhando um codigo antigo meu. E o problema é esse: O TImage aceita arquivos JPG e TDBImage não. Você teria que converter a imagem, quando for salvar ou quando for exibir para o usuario. Depende da sua necessidade. Qualquer coisa é só falar. Flw !!


GOSTEI 0
Peterpan

Peterpan

02/12/2008

Peterpan, o problema deve ser esse mesmo, estive olhando um codigo antigo meu. E o problema é esse: O TImage aceita arquivos JPG e TDBImage não. Você teria que converter a imagem, quando for salvar ou quando for exibir para o usuario. Depende da sua necessidade. Qualquer coisa é só falar. Flw !!


Bem galera, é o seguinte, os dois codigos passados anteriormente funcionam legal, mas, ainda logo apos selecionar a imagem e clicar no botao abrir da janela o opendialog a tela de CADASTRO DE CLIENTES se fecha ou seja não coloca a imagem no seu devido componente que eu mudei para um TImage e volta para a tela principal do sistema...

Isso ja esta queimando meus neuronis... Bruuuuuuuuuu.....

Se alguem desejar segue abaixo a unit simples do meu sistema:

unit uFrmCliente;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, uFrmModelo, DB, ImgList, ActnList, Menus, Grids, DBGrids, StdCtrls,
  Buttons, ExtCtrls, ComCtrls, ToolWin, Mask, DBCtrls, ExtDlgs, JPEG;

type
  TFrmClientes = class(TFrmModelo)
    Label4: TLabel;
    DBEdit1: TDBEdit;
    Label5: TLabel;
    DBEdit2: TDBEdit;
    Label6: TLabel;
    DBEdit3: TDBEdit;
    Label7: TLabel;
    DBEdit4: TDBEdit;
    Label8: TLabel;
    DBEdit5: TDBEdit;
    Label9: TLabel;
    DBEdit6: TDBEdit;
    Label10: TLabel;
    DBEdit7: TDBEdit;
    Label11: TLabel;
    DBEdit8: TDBEdit;
    Label12: TLabel;
    DBEdit9: TDBEdit;
    Label13: TLabel;
    DBEdit10: TDBEdit;
    Label14: TLabel;
    DBEdit11: TDBEdit;
    Label15: TLabel;
    DBEdit12: TDBEdit;
    Label16: TLabel;
    btnCarregarImg: TBitBtn;
    OpenDialog1: TOpenDialog;
    Image1: TImage;
    procedure btnCarregarImgClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  FrmClientes: TFrmClientes;

implementation

uses uDM;

{$R *.dfm}

procedure TFrmClientes.btnCarregarImgClick(Sender: TObject);
Var JPG : TJPegImage;
begin
  inherited;
  If OpenDialog1.Execute Then
  begin
    Try
         JPG := TJPEGImage.Create();
         JPG.LoadFromFile(OPenDialog1.FileName);
         Image1.Picture.Assign(JPG);
         //Ou pode fazer assim
         //DBImage1.Picture.LoadFromFile(OpenDialog1.FileName);
   Finally
        FreeAndNil(JPG);
   end;
  end;
end;

end.


Qquer coisa estarei no MSN se desejarem conversar....

abraços;

msn:petelegalmsn@hotmail.com


GOSTEI 0
Wdrocha

Wdrocha

02/12/2008

Foi mal cara esqueci d uma coisa....

pra mudar o a imagem do TImage vc tem q fazer assim...


procedure TFrmClientes.btnCarregarImgClick(Sender: TObject); 
Var JPG : TJPegImage; 
begin 
  inherited; 
  If OpenDialog1.Execute Then 
  begin 
    Try 
         JPG := TJPEGImage.Create(); 
         JPG.LoadFromFile(OPenDialog1.FileName); 
         Image1.Picture := Nil;//Coloca essa linha
         Image1.Picture.Assign(JPG); 
         //Ou pode fazer assim 
         //DBImage1.Picture.LoadFromFile(OpenDialog1.FileName); 
   Finally 
        FreeAndNil(JPG); 
   end; 
  end; 
end; 

espero q agora funcione....

qualquer coisa posta aew...até conseguirmos fazer....blz??


flw

end. 



GOSTEI 0
Peterpan

Peterpan

02/12/2008

Foi mal cara esqueci d uma coisa.... pra mudar o a imagem do TImage vc tem q fazer assim...
procedure TFrmClientes.btnCarregarImgClick(Sender: TObject); 
Var JPG : TJPegImage; 
begin 
  inherited; 
  If OpenDialog1.Execute Then 
  begin 
    Try 
         JPG := TJPEGImage.Create(); 
         JPG.LoadFromFile(OPenDialog1.FileName); 
         Image1.Picture := Nil;//Coloca essa linha
         Image1.Picture.Assign(JPG); 
         //Ou pode fazer assim 
         //DBImage1.Picture.LoadFromFile(OpenDialog1.FileName); 
   Finally 
        FreeAndNil(JPG); 
   end; 
  end; 
end; 

espero q agora funcione....

qualquer coisa posta aew...até conseguirmos fazer....blz??


flw

end. 


Ola WDRocha blz...

É o seguinte o código até passa, mas ta acontecendo algo muito estranho, veja só;

1) Eu clico no botao Carregar Imagem;

2) abre a janela de Dialogo

3) Clico na imagem do cliente = 1.Jpg

4) Clico em abrir para colocar a imagem no componente TImage1 mas essa imagem não aparece no componente, fechando a Tela de Cadastro do Cliente, e a tela volta automaticamente para a Tela Principal do Sistema.

Acho que agora deu para passar o que esta acontecendo, qquer coisa me add no Msn que conversamos vlw

Abraços


GOSTEI 0
Peterpan

Peterpan

02/12/2008

[quote:e81276e6b5=´WDRocha´]Foi mal cara esqueci d uma coisa.... pra mudar o a imagem do TImage vc tem q fazer assim...
procedure TFrmClientes.btnCarregarImgClick(Sender: TObject); 
Var JPG : TJPegImage; 
begin 
  inherited; 
  If OpenDialog1.Execute Then 
  begin 
    Try 
         JPG := TJPEGImage.Create(); 
         JPG.LoadFromFile(OPenDialog1.FileName); 
         Image1.Picture := Nil;//Coloca essa linha
         Image1.Picture.Assign(JPG); 
         //Ou pode fazer assim 
         //DBImage1.Picture.LoadFromFile(OpenDialog1.FileName); 
   Finally 
        FreeAndNil(JPG); 
   end; 
  end; 
end; 

espero q agora funcione....

qualquer coisa posta aew...até conseguirmos fazer....blz??


flw

end. 


Ola WDRocha blz...

É o seguinte o código até passa, mas ta acontecendo algo muito estranho, veja só;

1) Eu clico no botao Carregar Imagem;

2) abre a janela de Dialogo

3) Clico na imagem do cliente = 1.Jpg

4) Clico em abrir para colocar a imagem no componente TImage1 mas essa imagem não aparece no componente, fechando a Tela de Cadastro do Cliente, e a tela volta automaticamente para a Tela Principal do Sistema.

Acho que agora deu para passar o que esta acontecendo, qquer coisa me add no Msn que conversamos vlw

Abraços[/quote:e81276e6b5]

WDRocha esqueci de informar um detalhe...rsrsrsr

Todos os componentes do formulario estão dentro de um PageControl, não sei se isso ajuda, mas tai a informação.

Abraços


GOSTEI 0
Wdrocha

Wdrocha

02/12/2008

Bom dia....vc tem como me passar a sua tela???

pod ser só esta mesmo....

pra eu ver o q está acontecendo....

pq é estranho não funcionar.....ontem mesmo eu fiz isso em uma aplicação....

se vc me passar....seria melhor...


Williame.Rocha@yahoo.com.br

no aguardo


GOSTEI 0
Henrique Rodrigues

Henrique Rodrigues

02/12/2008

Tenho um probleminha com esse componente, tenho uma form principal, abro, um por cima com showmodal, abro mais um por cima com o mesmo showmodal, aí chamo o OpenPictureDialog1. Ele está abrindo atrás desta última janela tenho que arrastar a janela para encontrá-lo.


GOSTEI 0
Henrique Rodrigues

Henrique Rodrigues

02/12/2008

up


GOSTEI 0
POSTAR