Autor
Mensagem
Citação:
Bom dia Pessoal, estou precisando de uma força aqui.
Bom dia Pessoal, estou precisando de uma força aqui.
estou precisando de um campo imagem no banco de dados. trabalho com firebird 2.1.
preciso gravar foto dentro do banco. tenho um campo. tipo memo aonde coloco a descrição da foto
e um campo blob aonde quero armazer as fotos. coloquei no formulario, alguns componentes da paleta
win.3.1 . directory e o file list box para capturar as imagens . coloquei um memo e um dbimagem no formulario
. uso os botões para novo, salvar, editar, cancelar e excluir. porem faço isto em outros formularios que não tem campo imagem. e da certo, porem neste não está dando certo. pois não sei como colocar pór exemplo.
procedure Tfrm_imagem.Mostrar;
begin
memo1.Text :=tbl_imagem.fieldbyname('texto').AsString; // este aqui passa na compilação
image1.Picture :=tbl_imagem.fieldbyname('imagem').Asstring; // este não passa.por causa do asstring , diz que é incompatível com picture, sim concordo, mais não sei o que colocar aqui.
end;
begin
memo1.Text :=tbl_imagem.fieldbyname('texto').AsString; // este aqui passa na compilação
image1.Picture :=tbl_imagem.fieldbyname('imagem').Asstring; // este não passa.por causa do asstring , diz que é incompatível com picture, sim concordo, mais não sei o que colocar aqui.
end;
procedure Tfrm_imagem.salvar;
begin
tbl_imagem.fieldbyname('texto').AsString := memo1.text;
tbl_imagem.fieldbyname('imagem').AsString := dbimage1.Picture;
begin
tbl_imagem.fieldbyname('texto').AsString := memo1.text;
tbl_imagem.fieldbyname('imagem').AsString := dbimage1.Picture;
nos formulario comuns uso no botão salvar no onclic. o procedimento
begin
salvar;
end;
se puderem ajudar agradeço
geraldo leal
Geraldo,
----------------------------------------------------------------------------------------------------------------------------------------
Usando os componentes IBX (mas pode ser adaptado para outro component):
var
q : tibquery;
begin
if openpicturedialog1.Execute then
begin
q := tibquery.create(nil);
q.Database := datamodule.bancodedados;
q.SQL.Text := ‘insert into fotos (foto) values (:foto)’;
q.ParamByName(‘foto’).LoadFromFile(openpicturedialog1.FileName,ftBlob);
q.ExecSQL;
q.free;
end;
end;
q : tibquery;
begin
if openpicturedialog1.Execute then
begin
q := tibquery.create(nil);
q.Database := datamodule.bancodedados;
q.SQL.Text := ‘insert into fotos (foto) values (:foto)’;
q.ParamByName(‘foto’).LoadFromFile(openpicturedialog1.FileName,ftBlob);
q.ExecSQL;
q.free;
end;
end;
----------------------------------------------------------------------------------------------------------------------------------------
Verifica se esses links também ajudam:
Qualquer coisa estou à disposição!!!
Atenciosamente,
Emanoel Deivison
Recife - PE
Você pode usar o componente EDBImage:
Para mostrar:
if not tbl_imagem.fieldbyname('imagem').IsNull then
EDBImage1.Picture.LoadFromFile(tbl_imagem.fieldbyname('imagem').Value);
Para gravar:
Utilize o componente OpenPictureDialog da palheta Dialogs:
if openpicturedialog1.Execute then
begin
begin
tbl_imagem.fieldbyname('imagem').LoadFromFile(openpicturedialog1.FileName,ftBlob);
Este componente suporta tanto jpg como bmp e funciona apenas com o método loadfromfile, tanto para gravar como para ler.
Se quiser fazer na unha, veja este link:
Se o campo que armazena imagem é do tipo Blob tem que funcionar, veja este link que respondi abaixo:
Citação:
Eriley, boa tarde , tenho tentado várias maneiras
Eriley, boa tarde , tenho tentado várias maneiras
mais não estou achando a o geito. Veja bem.
na minha aplicação, quando uso o o componente da palheta dialogs, dá pau, não sei o motivo,
creio que por outros componentes que uso e não combina.
então uso o componente da win.3.1 .
primeiro uso
drive combobox. para escolher o driver
segundo
directory listbox. para localizar o caminho da imagem.
terceiro
um file listbox para mostrar as imagens dentro da pasta.
um botão
No on click dele uso o seguinte codigo
procedure Tfrm_foto.SpeedButton1Click(Sender: TObject);
begin
frm_foto.dbimage1.Picture.LoadFromFile(flb_papelparede.FileName);
iniconf.WriteString('papel de parede','figura',flb_papelparede.FileName);
iniconf.WriteString('papel de parede','tipo',combobox1.text);
iniconf.WriteString('papel de parede','figura',flb_papelparede.FileName);
iniconf.WriteString('papel de parede','tipo',combobox1.text);
end.
até aqui tudo certo o problema é daqui para baixo
tenho um dbimage no formulario, escolho a foto pelo caminho e jogo no dbimagem.
o problema é na hora de salvar. e mostrar.
no formulario,
tenho.
um memo - // para escrever os comentarios sobre a foto
um dbimagem - // para mostrar a foto e pegar para gravar no banco
botão salvar
botão novo -
botão editar
botão excluir
botão cancelar.
e quatro botões para navegar.
primeiro - tbl_imagem.First;
proximo - tbl_imagem.Next;
anterior -tbl_imagem.Prior;
ultimo -tbl_imagem.Last;
se puder colocar para mim o que fazer nestes botões. agradeço
sucesso
geraldo leal
Declare jpeg, clipbrd no Uses.
Coloque um radiogroup da palheta standard no formulário.
No seu caption digite Formato da imagem
no ItemIndex digite 1
Na sua propriedade items, digite:
BMP
JPG
JPG
E modifique seu código do botão que carrega a foto para :
procedure Tfrm_foto.SpeedButton1Click(Sender: TObject);
var
jpg: Tjpegimage;
jpg: Tjpegimage;
begin
if tbl_imagem.State in [dsEdit, dsInsert] then
begin
if radiogroup1.ItemIndex = 1 then //É jpg
begin
jpg:= Tjpegimage.Create;
jpg.LoadFromFile(flb_papelparede.FileName);
Clipboard.Assign(jpg);
Dbimage1.PasteFromClipboard;
jpg.Free;
end
else
tbl_imagem.FieldByName('NamedoSeuCampoFoto').LoadFromFile(flb_papelparede.FileName);
begin
if radiogroup1.ItemIndex = 1 then //É jpg
begin
jpg:= Tjpegimage.Create;
jpg.LoadFromFile(flb_papelparede.FileName);
Clipboard.Assign(jpg);
Dbimage1.PasteFromClipboard;
jpg.Free;
end
else
tbl_imagem.FieldByName('NamedoSeuCampoFoto').LoadFromFile(flb_papelparede.FileName);
iniconf.WriteString('papel de parede','figura',flb_papelparede.FileName);
iniconf.WriteString('papel de parede','tipo',combobox1.text);
iniconf.WriteString('papel de parede','tipo',combobox1.text);
end
else
ShowMessage('Edite o registro ou insira um novo');
else
ShowMessage('Edite o registro ou insira um novo');
end;
Novo : tbl_imagem.Append;
Salvar: tbl_imagem.Post;
Editar: tbl_imagem.Edit;
Cancelar: tbl_imagem.Cancel;
Excluir: tbl_imagem.delete;
Não utilize o memo, utilize o dbMemo.
Citação:
olá pessoal, tentei de várias maneiras e não consegui fazer, para colocar no banco de dados então resolvi de outra maneira, que ficou bem legal eu achei, coloquei um form e coloquei várias componentes
olá pessoal, tentei de várias maneiras e não consegui fazer, para colocar no banco de dados então resolvi de outra maneira, que ficou bem legal eu achei, coloquei um form e coloquei várias componentes
notebook da plheta win3.1 coloquei um imagem em cada um e os links para acessar cada imagem, no total
coloquei 60 imagens, funcionou para mim, pois as imagens são fixas para o que quero. não ficam soltas e ficou pequeno em jpg. fica ai para alguém que precisar fazer. da mesma forma. obrigado pela colaboração de todos.
sucesso a todos
geraldo leal









