Exibir campo de imagem (Foto) no Dbgrid
bom dia pessoal
utilizo delphi7 e FB 1.5
tenho uma tabela q possui um campo Blob q é a foto do cliente.
como faço para exibi-la no TDBgrid padrão do delphi sem adotar componentes de 3ºs ?
obrigado
Diogo
utilizo delphi7 e FB 1.5
tenho uma tabela q possui um campo Blob q é a foto do cliente.
como faço para exibi-la no TDBgrid padrão do delphi sem adotar componentes de 3ºs ?
obrigado
Diogo
Diogoalles
Curtidas 0
Respostas
Diogoalles
14/12/2005
olá pessoal
pesquisei , pesquisei , tentei , tentei e não consegui
será que alguem teria uma dica
obrigado
pesquisei , pesquisei , tentei , tentei e não consegui
será que alguem teria uma dica
obrigado
GOSTEI 0
Adriano Santos
14/12/2005
olá pessoal
pesquisei , pesquisei , tentei , tentei e não consegui
será que alguem teria uma dica
obrigado
To vendo um exemplo aqui cara, acho que vai dar certo...se der eu passo.
GOSTEI 0
Adriano Santos
14/12/2005
Só precisa dar uma arrumada no tamanho das imagens.
procedure TForm1.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var bitmap : TBitmap; fixRect : TRect; bmpWidth : integer; imgIndex : integer; begin fixRect := Rect; if Column.Field = EmployeeTableBMP then begin Bitmap := TBitmap.Create; try //Pega o grafico da Tabela Bitmap.Assign(EmployeeTable.FieldByName(´BMP´)); //Desenha DBGrid1.Canvas.StretchDraw(fixRect, bitmap); finally bitmap.Free; end; // Limpa a saida do Retangulo fixRect := Rect; fixRect.Left := fixRect.Left + bmpWidth; end; //draw default text (fixed position) DBGrid1.DefaultDrawColumnCell(fixRect, DataCol, Column, State); end;
GOSTEI 0
Diogoalles
14/12/2005
e ai galera..
Adriano,
ocorreu o erro ´EInvalidGraphic : ´bitmap image is not valid´´
na linha Bitmap.Assign(EmployeeTable.FieldByName(´BMP´));
:roll:
o q será ?
obrigado
Diogo
Adriano,
ocorreu o erro ´EInvalidGraphic : ´bitmap image is not valid´´
na linha Bitmap.Assign(EmployeeTable.FieldByName(´BMP´));
:roll:
o q será ?
obrigado
Diogo
GOSTEI 0
Adriano Santos
14/12/2005
e ai galera..
Adriano,
ocorreu o erro ´EInvalidGraphic : ´bitmap image is not valid´´
na linha Bitmap.Assign(EmployeeTable.FieldByName(´BMP´));
:roll:
o q será ?
obrigado
Diogo
O que está armazenado no blog? Bitmap ou JPEG? Por ser isso. Fiz só levando em consideração BMP. Talvez precise de alguma adaptação a sua necessidade.
GOSTEI 0
Diogoalles
14/12/2005
Já havia verificado
Estou adicionando ao Blob tipo Bitmap.
Mesmo assim ocorre o erro.
No caso se eu adicionasse um Jpeg ñ funcionaria ?
obrigado
Diogo
Estou adicionando ao Blob tipo Bitmap.
Mesmo assim ocorre o erro.
No caso se eu adicionasse um Jpeg ñ funcionaria ?
obrigado
Diogo
GOSTEI 0
Edilcimar
14/12/2005
Só uma pergunta, o campo realmente tem a imagem, de repente ele está vazio!
GOSTEI 0
Adriano Santos
14/12/2005
Só uma pergunta, o campo realmente tem a imagem, de repente ele está vazio!
Não se quando o campo não possui imgem pararece esta msg, mas de qualquer forma vc pode testar com NIL.
if no Bitmap = Nil then //mostra a imagem
GOSTEI 0
Diogoalles
14/12/2005
blz...
testei o campo
if EmployeeTable.FieldByName(´BMP´)) <> nil
...
e deu certo..
eu tenho o dbgrid com o tamanho das linhas alteradas, para que as imagens não fiquem totalmente cortadas,
mas só tem um problema, a imagem ocupa toda célula, fica distorcida..
vi que voce comentou sobre isso.. eu gostaria de manter ela no tamanho original.. como teria que fazer? ou no exemplo que vc postou em que parte eu devo mexer/implementar ?
obrigado
Diogo
testei o campo
if EmployeeTable.FieldByName(´BMP´)) <> nil
...
e deu certo..
eu tenho o dbgrid com o tamanho das linhas alteradas, para que as imagens não fiquem totalmente cortadas,
mas só tem um problema, a imagem ocupa toda célula, fica distorcida..
vi que voce comentou sobre isso.. eu gostaria de manter ela no tamanho original.. como teria que fazer? ou no exemplo que vc postou em que parte eu devo mexer/implementar ?
obrigado
Diogo
GOSTEI 0
Adriano Santos
14/12/2005
blz...
testei o campo
if EmployeeTable.FieldByName(´BMP´)) <> nil
...
e deu certo..
Fico feliz que tenha funcionado.
eu tenho o dbgrid com o tamanho das linhas alteradas, para que as imagens não fiquem totalmente cortadas,
mas só tem um problema, a imagem ocupa toda célula, fica distorcida..
vi que voce comentou sobre isso.. eu gostaria de manter ela no tamanho original.. como teria que fazer? ou no exemplo que vc postou em que parte eu devo mexer/implementar ?
obrigado
Diogo
Bom, não sei se entendi muito bem. Para dar um efeito diferente no dbgrid eu disse (em outro topíco a um camarada) pra ir na propriedade fonte do DBGrid e aumentar para uns 25 e depois clicar duas vezes no grid e mudar a propriedade fonte das colunas para o tamanho original...certo? [color=red:da3428c850]É só pular esta etapa que falei e tah tudo certo[/color:da3428c850]
GOSTEI 0
Leandro Silva
14/12/2005
Eu não estou conseguindo. Ele me diz que TBitmap não pode fazer Create, nada que quisesse fazer com TBitmap.
Então modifique e funcionou.
Ficou assim:
Então modifique e funcionou.
Ficou assim:
procedure TIWFrameLancamento.DBGridCartoesDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
IMG : TImage;
fixRect : TRect;
imgWidth : integer;
imgHeight : integer;
begin
fixRect := Rect;
if ((Column.Title.Caption = 'IMAGEM') AND (ZQuery_CartaoIMAGEMBMP.AsString<>'')) then
begin
IMG := TImage.Create(Self);
try
//Pega o grafico da Tabela
IMG.Picture.LoadFromFile(ZQuery_CartaoIMAGEMBMP.AsString);
imgWidth := IMG.Picture.Width;
imgHeight := IMG.Picture.Height;
//Desenha
DBGridCartoes.Canvas.StretchDraw(fixRect, IMG.Picture.Bitmap);
finally
IMG.Picture.Graphic:=nil;
end;
// Limpa a saida do Retangulo
fixRect := Rect;
fixRect.Left := fixRect.Left + imgWidth;
fixRect.Top := fixRect.Top + imgHeight;
if IMGCOLUM=0 then
begin
Column.Width := 80;
IMGCOLUM:=1;
end;
end;
//draw default text (fixed position)
DBGridCartoes.DefaultDrawColumnCell(fixRect, DataCol, Column, State);GOSTEI 0
Leandro Silva
14/12/2005
Eu não estou conseguindo. Ele me diz que TBitmap não pode fazer Create, nada que quisesse fazer com TBitmap.
Então modifique e funcionou.
Ficou assim:
Então modifique e funcionou.
Ficou assim:
procedure TIWFrameLancamento.DBGridCartoesDrawColumnCell(Sender: TObject;
const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState);
var
IMG : TImage;
fixRect : TRect;
imgWidth : integer;
imgHeight : integer;
begin
fixRect := Rect;
if ((Column.Title.Caption = 'IMAGEM') AND (ZQuery_CartaoIMAGEMBMP.AsString<>'')) then
begin
IMG := TImage.Create(Self);
try
//Pega o grafico da Tabela
IMG.Picture.LoadFromFile(ZQuery_CartaoIMAGEMBMP.AsString);
imgWidth := IMG.Picture.Width;
imgHeight := IMG.Picture.Height;
//Desenha
DBGridCartoes.Canvas.StretchDraw(fixRect, IMG.Picture.Bitmap);
finally
IMG.Picture.Graphic:=nil;
end;
// Limpa a saida do Retangulo
fixRect := Rect;
fixRect.Left := fixRect.Left + imgWidth;
fixRect.Top := fixRect.Top + imgHeight;
if IMGCOLUM=0 then
begin
Column.Width := 80;
IMGCOLUM:=1;
end;
end;
//draw default text (fixed position)
DBGridCartoes.DefaultDrawColumnCell(fixRect, DataCol, Column, State);
End;GOSTEI 0