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

(Resolvido) Carregando Fotos pelo em campo VARCHAR


Ronaldo Lanhellas

Pergunta

Bom, estou utilizando a seguinte estrutura para carregar fotos com campo varchar, eu aponto no campo o caminho onde a foto esta através do comando:

procedure TFrmPastores.ImageDblClick(Sender: TObject);
begin
  inherited;
if OpenDialog.Execute then

begin

         cdsPASTORESFILHO1_NOME := OpenDialog.FileName;

        Image.Picture.LoadFromFile(OpenDialog.FileName);

end;
end;

porém, o cdsPASTORESFOTO_PASTOR está dizendo que não foi declarado, o cdsPASTORES (é o nome do meu ClientDataSet) e o FOTO_PASTOR (é o nome do campo onde fica o caminho da foto).

Link para o comentário
Compartilhar em outros sites

6 respostass a esta questão

Posts Recomendados

  • 0

Claro Ronaldo!

veja este exemplo se ele vai te ajudar

no meu caso o bando é MSAccess mas como estou utilizando Query na há mtas diferenças!

uses shellapi

======================= code

var

Form1: TForm1;

exeDir, fname : String; // var global

====================== // botao seleciona foto e copia para pasta onde vai ficar guardada as fotos

procedure TForm1.btnGETClick(Sender: TObject);

var

Dados: TSHFileOpStruct;

begin

if OpenPictureDialog1.Execute then

begin

FillChar(Dados,SizeOf(Dados), 0);

with Dados do

begin

wFunc := FO_COPY;

pFrom := PChar(OpenPictureDialog1.FileName);

pTo := PChar(exeDir+'JPG\');

fFlags:= FOF_ALLOWUNDO;

end;

SHFileOperation(Dados);

fname := ExtractFilename(OpenPictureDialog1.FileName);

Label1.Caption := fname;

RenameFile(exeDir+'JPG\'+fname,exeDir+'JPG\'+dbEdit1.Text+'.jpg');

Image1.Picture.LoadFromFile(exeDir+'JPG\'+dbEdit1.Text+'.jpg');

dbEdit4.Text := 'JPG\'+dbEdit1.Text+'.jpg'; // dbEdit4 é onde fica o caminho da foto exp. c:\fotos\jpg\foto.jpg

end;

======================= para mudar as fotos quando selecionado do DBGRID

procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

begin

if dbEdit4.Text = '' then

begin

Image1.Picture := nil;

lblNAME.Visible := true;

lblNAME.Caption := 'Sem imagem';

end

Else

begin

lblNAME.Visible := false;

btnShow.OnClick(Sender);

end;

end;

=================== botao para mostrar a foto manualmente que tb utilizo no SENDER acima

procedure TForm1.btnSHOWClick(Sender: TObject);

begin

Image1.Picture.LoadFromFile(exeDir+dbEdit4.Text);

end;

=================== define o diretorio padrão do EXE

procedure TForm1.FormShow(Sender: TObject);

begin

exeDIR := ExtractFilePath(Application.ExeName);

end;

é só! com este exemplo axo que vai dar certo!

Mais detalhado é assim:

1 - você seleciona uma foto no desktop por exemplo

2 - quando selecionado ele vai Copiar para umas pasta no seu Programa

3 - vai mudar o nome da foto para um campo determinado "no meu caso é o ID COD que é unico"

4 - depoiz de fazer isso ele vai exibir a imagem JPG/BMP/GIF etc... no componente TImage não TDBImage

5 - Dai é só você fazer as devidas alterações! ;)

abraço!

Link para o comentário
Compartilhar em outros sites

  • 0
desculpe a demora para agradeçer pois estava sem ver este tópico a um bom tempo já que não recebi nenhum resposta, desculpa mesmo e agradeço a ajuda de vocÊs

set der jeito deixo codigo que uso

private

ImagePath: String;

......

procedure TFHorar.DbImage1DblClick(Sender: TObject);

var ImageFile, Path: String;

begin

inherited;

self.horas_SUB.Edit;

if (OpenPictureDialog2.Execute) and (OpenPictureDialog2.FileName <> '') then begin

DbImage1.Picture.LoadFromFile(OpenPictureDialog2.FileName);

Path := ExtractFilePath(OpenPictureDialog2.FileName);

ImageFile := ExtractFileName(OpenPictureDialog2.FileName);

horas_SUB.edit;

ImageFile := 'Colab'+ DBEditEh1.text+'.jpeg' ;

horas_SUB.FieldByName('Foto').AsString := ImageFile ;

if Path <> ImagePath then DbImage1.Picture.SaveToFile(ImagePath + ImageFile);

self.horas_SUB.post;

end;

end;

procedure TFHorar.D_Horas_subStateChange(Sender: TObject);

var ImageFile: String;

begin

inherited;

if horas_SUB.State in [dsBrowse, dsOpening] then begin

if horas_SUB.FieldByName('Foto').IsNull then

DbImage1.Picture.Assign(nil)

else begin

ImageFile := ImagePath + horas_SUB.FieldByName('Foto').AsString;

DbImage1.Picture.LoadFromFile(ImageFile);

end;

end;

end;

procedure TFHorar.FormShow(Sender: TObject);

begin

inherited;

ImagePath := ExtractFilePath(Application.ExeName) + 'Fotos\';

OpenPictureDialog2.InitialDir := ImagePath;

end;

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