Buscar

Incluir foto

Código

Não se recomenda a inclusão de imagens nos campos de tabelas de BD, então o recomendável é que você armazene na tabela apenas o caminho de onde a imagem/foto está localizada, sendo assim:

Inicialmente vc precisa definir na tabela um campo varchar onde será armazenado o caminho da foto, no meu caso, eu coloquei um campo de tamanho 100 não nulo para isso.
Muito bem, depois disso, insira o componente OpenDialog, da palheta Dialogs no seu formulário.
Na propriedade Filter do OpenDialog coloque os tipos de imagens a serem aceitas, no meu caso eu digitei: Image files (*.jpg),(*.jpeg),(*.bmp),(*gif)

A seguir, marque na propriedade initialDir o diretório inicial onde a caixa de diálogo vai apontar, por ex: E:Meus documentosMinhas Imagens

Agora coloque um componente Image da paleta Additional, onde será exibida a foto, marque true para a propriedade Center, na propriedade Picture carregue a imagem que vc vai deixar antes de carregar a foto pretendida, por ex, mo meu caso eu deixei uma figura de uma camera fotografica para indicar ao usuário que o campo é para inserção de fotografia.

No evento OnDblClick do componente Image adicione o seguinte código:

  if OpenDialog.Execute then
  begin
     ClientDataSetNOMEDOCAMPO.asString := OpenDialog.FileName;
     Image.Picture.LoadFromFile(OpenDialog.FileName);
  end;

Lembrando que na hora de editar o registro, além das instruções pertinentes, adicione o seguinte código no botão Editar:

    if not FileExists(ClientDataSet.fieldByName('NOME_DO_CAMPO').asString) then   //carregando a foto
      Image.Picture.LoadFromFile('C:Meus documentosMinhas Imagensmaquina.jpg')   //maquina é o nome da figura inicial
    else
      try
        Image.Picture.LoadFromFile(ClientDataSet.fieldByName('NOME_DO_CAMPO').asString);
      except
        Image.Picture := NIL;
        Application.MessageBox('Erro na abertura da foto!','ATENÇÃO!',MB_ICONERROR);
      end;

Estou usando os componentes: SQLQuery, DataSetProvider, ClientDataSet e DataSource para manipular os dados, delphi 7 e Firebird.

Bom, é isso aí, agradeço sugestões distintas e que sejam mais adequadas.
Abraços a todos.

Publicidade

Vote na dica




Quantidade de votos: 0 votos
Aceitação: 0%


Detalhes da dica

Categoria: Banco de dados
Adicionada dia: 06/05/07
Por: Flavio Pereira Guimaraes
Visualizada: 14663 vezes

Planeta Delphi - Tudo sobre programação Delphi Planeta Delphi - www.planetadelphi.com.br - Todos os direitos reservados | Copyright 2001-2009