Exibir mensagem anterior :: Exibir próxima mensagem |
Autor |
Mensagem |
marcellomm Colaborador
Registrado: Segunda-Feira, 7 de Novembro de 2005 Mensagens: 1045
|
Enviada: Ter Nov 27, 2007 1:28 pm Assunto: Inserir foto no TImage - R E S O L V I D O |
|
|
Boa tarde galera! O meu problema é o seguinte:
Tenho dois forms. Um de cadastro de alunos e um com o componente VideoCap.
No form de cadastro de alunos tenho um TImage que recebe a imagem gravada na pasta 'Fotos' dentro do sistema.
Com um button nesse form eu chamo o form que contem o componente VideoCap.
Eu gostaria de saber como fazer:
1 - Nomear ('Gravar') a foto com o código ou RG do aluno, sem precisar de digitá-lo.
2 - Após registrar a foto do aluno, fazer com que ela apareça no form Alunos sem precisar de reabrir o form ou voltar um registro e depois retornar ao registro desse aluno.
No form Alunos: Código: |
procedure TfAlunos.AtivaCapturaFotoClick(Sender: TObject);
begin
dmTables.tbAlunos.Edit;
if fCapturaFoto=Nil then
Application.CreateForm(TfCapturaFoto,fCapturaFoto);
fCapturaFoto.Show;
end;
|
No form CapturaFoto: Código: |
procedure TfCapturaFoto.ButtonCapturaFotoClick(Sender: TObject);
begin
if SaveFoto.Execute then
begin
VideoCap1.SingleImageFile:=SaveFoto.FileName;//.SaveDialog1.FileName;
VideoCap1.SaveAsDIB;
dmTables.tbAlunosFotoAluno.value:='C:\Arquivos de Programas\Borland\Delphi7\Projects\Gestao_CFC\Fotos\'+fAlunos.DBEdit5.Text;//Nesse Edit é colocado a identidade do cliente. Poderia ser qualquer outro...
//dmTables.tbAlunos.Post;
end;
end;
|
Do jeito que está ele trunca o RG do aluno. Portanto quando eu abro o form com o cadastro ele informa que não encontrou o endereço da foto. Ela está sendo gravada com extenção .bmp Pelo simples motivo de não ter conseguido faze-lo gravar em JPEG.
Tentei acrescentar a extenção ao endereço: 'C:\Arquivos de Programas\Borland\Delphi7\Projects\Gestao_CFC\Fotos\'+fAlunos.DBEdit5.Text+'.bmp'; Mas tbm não deu resultado.
Editado pela última vez por marcellomm em Sex Dez 07, 2007 3:52 pm, num total de 1 vez |
|
Voltar ao Topo |
|
|
casetek Aprendiz
Registrado: Segunda-Feira, 13 de Setembro de 2004 Mensagens: 211 Localização: Londrina - PR
|
Enviada: Ter Nov 27, 2007 5:12 pm Assunto: |
|
|
Olá Marcelo.
Em partes:
1 - Ao invés de gravar o caminho todo da foto, grave no bd somente o nome dela.
Errado:
{dmTables.tbAlunosFotoAluno.value:='C:\Arquivos de Programas\Borland\Delphi7\Projects\Gestao_CFC\Fotos\'+fAlunos.DBEdit5.Text;//Nesse Edit é colocado a identidade do cliente. Poderia ser qualquer outro.}
Certo:
dmTables.tbAlunosFotoAluno.value:=dmTables.tbAlunosAluCodigo.AsString + '.jpg'+;// supondo que AluCodigo é o nome do campo Id da tabela de alunos.
Na hora de buscar a foto, vc adiciona o diretório que elas estão. Ex:
imageFoto.LoadFromFile(ExtractFilePath(ParamStr(0)) + 'fotos\'+tbAlunosFotoAluno.AsString);
Isso vai lhe permitir mudar a pasta do programa depois e as fotos serão corretamente lidas.
2- Para salvar a foto como jpg
-declare jpeg na cláusula uses superior;
procedure TfrCapturaFoto.botSalvarFotoClick(Sender: TObject);
Var
BMP : TBitMap;
JPG : TJpegImage;
Arq: String;
begin
VideoCap1.SaveToClipboard;
BMP := TBitMap.Create;
BMP.LoadFromClipboardFormat(cf_BitMap,ClipBoard.GetAsHandle(cf_Bitmap),0);
JPG := TJpegImage.Create;
JPG.Assign(BMP);
JPG.CompressionQuality:= 100;
JPG.Performance:= jpBestQuality;
Arq:= ExtractFilePath(ParamStr(0)) + 'fotos\'+tbAlufoto.AsString + '.jpg';
JPG.SaveToFile(Arq);
JPG.Free;
BMP.Free;
end;
3- Se o evento para carregar a foto estiver no OnDataChange do DataSource, automaticamente após gravar a tabela, ela já vai aparecer |
|
Voltar ao Topo |
|
|
marcellomm Colaborador
Registrado: Segunda-Feira, 7 de Novembro de 2005 Mensagens: 1045
|
Enviada: Ter Nov 27, 2007 6:34 pm Assunto: |
|
|
Blz casetek, vou experimentar e posto + tarde... vlw ae |
|
Voltar ao Topo |
|
|
marcellomm Colaborador
Registrado: Segunda-Feira, 7 de Novembro de 2005 Mensagens: 1045
|
Enviada: Qui Nov 29, 2007 2:28 pm Assunto: Inserir foto no TImage[Resolvido] |
|
|
Segue solução:
No TImage no OnDblClick:
Código: | procedure TfAlunos.Image1DblClick(Sender: TObject);
begin
dmTables.tbAlunos.Edit; //Data Module Tabelas e Tabela Alunos
if fCapturaFoto=Nil then //Se o form não foi...
Application.CreateForm(TfCapturaFoto,fCapturaFoto); //Cria-o
fCapturaFoto.Show;
end;
|
No form Captura Imagem:
Código: | procedure TfCapturaFoto.btAtivarCameraClick(Sender: TObject);
begin
VideoCap1.VideoPreview:=true; //Seta o Preview do componente VideoCap como verdadeiro
VideoCap1.CapAudio:=true; //Seta o Audio do componente VideoCap com verdadeiro
end;
|
No form Captura Imagem no button Gravar:
Código: | procedure TfCapturaFoto.btGravarFotoClick(Sender: TObject);
begin
VideoCap1.SingleImageFile:=(ExtractFilePath(ParamStr(0))+'\Fotos\')+dmTables.tbAlunosCIAluno.Value+'.bmp'; //Informa o nome e onde salvar a foto: No caso, será salva na pasta 'Fotos' que se encontra dentro da aplicação e nomeada com o RG do aluno + extenção bmp
VideoCap1.SaveAsDIB; //Salva a imagem
dmTables.tbAlunosFotoAluno.value:=dmTables.tbAlunosCIAluno.asString+'.bmp'; //Coloca o nome da foto na Tabela Alunos no campo FotoAluno que é String
Self.Close; //Fecha o formulário Captura Foto
end;
|
No Form Cadastro Aluno:
Código: | procedure TfAlunos.FormShow(Sender: TObject);
begin
CarregaFoto(Sender); //Chama o procedimento carrega foto
end;
|
Procedimento carrega foto:
Código: | Procedure TfAlunos.CarregaFoto(Sender:TObject);
begin
//Apaga a imagem do Image1
Image1.Picture.Assign(nil);
//Se o campo FotoAluno não está vazio carrega a imagem no image1
If Not dmTables.tbAlunos.FieldByName('FotoAluno').IsNull then
begin
fAlunos.Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Fotos\'+dmTables.tbAlunosFotoAluno.AsString);
end
else
//Caso contrário carrega a Logo da empresa
Image1.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Icones\’+dmTables.tbCFCLogo+’.bmp');
end;
|
No button Excluir registro:
Código: |
procedure TfAlunos.btExcluirClick(Sender: TObject);
begin
if Application.MessageBox('Deseja mesmo excluir esse registro?'#13#10'Após a exclusão o mesmo não poderá ser recuperado!','.:: Exclusão de registro ::.',36)=6 then
Deletefile(ExtractFilePath(ParamStr(0))+'\Fotos\'+dmTables.tbAlunosCIAluno.value+'.bmp'); // Deleta a foto do registro selecionado
dmTables.tbAlunos.Delete; //Deleta o registro selecionado
CarregaFoto(Sender);
TabelaNaoLocada(Sender);
end;
|
No mais agradeço aos colegas do forum em especial fabiano e casetek. VALEEEUU! |
|
Voltar ao Topo |
|
|
marcellomm Colaborador
Registrado: Segunda-Feira, 7 de Novembro de 2005 Mensagens: 1045
|
Enviada: Sex Dez 07, 2007 3:55 pm Assunto: |
|
|
UP |
|
Voltar ao Topo |
|
|
|