Exibir campo blob em Dbgrid
Galera...
eu uma tabela onde possue um campo blob... e tipow faco um query buscando estes dados junto com o blob.. e qria q fosse exibido no grid o texto q eh gravado no campo blob...
tem alguma maneira...
abracos
valmar
eu uma tabela onde possue um campo blob... e tipow faco um query buscando estes dados junto com o blob.. e qria q fosse exibido no grid o texto q eh gravado no campo blob...
tem alguma maneira...
abracos
valmar
Valmarsantos
Curtidas 0
Respostas
Adriano Santos
12/12/2005
Amanha de manha no trampo te passo um exemplo que saiu em uma revista clubedelphi a um tempo atras. É facil até.
GOSTEI 0
Eniorm
12/12/2005
Também vou aguardar a solução do amigo acima, mas até la vc pode tentar fazer assim
SELECT
CODIGO,
NOME,
[color=red:1d93bb1d32]SUBSTRING(CAMPOBLOB FROM 1 FOR TOTAL) [/color:1d93bb1d32]AS NOMECAMPO
FROM....
Note que o SUBSTRING é do banco FB então não funciona com outro. E TOTAL é a quantidade de caracteres a ser copiado a partir da posição 1, é semelhante ao COPY do Pascal.
abraço
SELECT
CODIGO,
NOME,
[color=red:1d93bb1d32]SUBSTRING(CAMPOBLOB FROM 1 FOR TOTAL) [/color:1d93bb1d32]AS NOMECAMPO
FROM....
Note que o SUBSTRING é do banco FB então não funciona com outro. E TOTAL é a quantidade de caracteres a ser copiado a partir da posição 1, é semelhante ao COPY do Pascal.
abraço
GOSTEI 0
Adriano Santos
12/12/2005
No evento onDrawColumnCell coloque:
Notem que há um problema na exibição porque a altura da linha é muito pequena então mude a fonte do DBGrid para uns 24 e depois cliquem duas vezes no DBGrid, selecione todos os campos e mudem o tamanho da fonte deles para o tamanho padrão. Isso fará com que a linha do DBGrid fique mais alta.
Pronto. Essa dica foi tirada de uma revista ClubeDelphi, mas não me lembro qual...faz muito tempo que isso saiu.
procedure TfPrincipal.dgGradePrincipalDrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var R : TRect; begin {exibe campo memo} R := Rect; Dec(R.Bottom,2); if Column.Field = qrySuaQuerySEU_CAMPO then begin if not (gdSelected in State) then dgGradePrincipal.Canvas.FillRect(Rect) else dgGradePrincipal.Canvas.FillRect(Rect); {Desenha o texto do campo} DrawText(dgGradePrincipal.Canvas.Handle, pchar(qrySuaQuerySEU_CAMPO.AsString),Length(qrySuaQuerySEU_CAMPO.AsString),R,DT_WORDBREAK); end; end;
Notem que há um problema na exibição porque a altura da linha é muito pequena então mude a fonte do DBGrid para uns 24 e depois cliquem duas vezes no DBGrid, selecione todos os campos e mudem o tamanho da fonte deles para o tamanho padrão. Isso fará com que a linha do DBGrid fique mais alta.
Pronto. Essa dica foi tirada de uma revista ClubeDelphi, mas não me lembro qual...faz muito tempo que isso saiu.
GOSTEI 0
Mdm
12/12/2005
Ola Colega !!!
uma forma mais simples setia vc usar o evento OnGetText do Field do Campo Blob, assim :
Espero ter lhe ajudado.
[]s
uma forma mais simples setia vc usar o evento OnGetText do Field do Campo Blob, assim :
Text := qryNomeCampo.Asstring;
Espero ter lhe ajudado.
[]s
GOSTEI 0
Adriano Santos
12/12/2005
Ola Colega !!!
uma forma mais simples setia vc usar o evento OnGetText do Field do Campo Blob, assim :
Espero ter lhe ajudado.
[]s
Text := qryNomeCampo.Asstring;
Funciona també, só não tem o mesmo efeito. Do jeito que falei ele mostra uma boa parte do texto contido no BLOB.
GOSTEI 0
Eniorm
12/12/2005
Ola Colega !!!
uma forma mais simples setia vc usar o evento OnGetText do Field do Campo Blob, assim :
Espero ter lhe ajudado.
[]s
Text := qryNomeCampo.Asstring;
E outro, isso funciona caso vc tenha adicionado os TFields na query....! do contrário vc não acessa pelo evento OnGetText do TField
GOSTEI 0