Exibir Campo Memo em DbGrid...de novo
Pessoal boa tarde,
eu estou com uma aplicação em Delphi 7 Enterprise, Banco PostGreSql 8 e paleta Zeos 6.5.1. Eu tinha colocado no fórum uma pesquisa deste tipo e fui atendido porém agora me deparo com um problema. Na unit que estou criando agora tenho 4 campos memo (que são dois campos concatenados que geram um único campo). Quando jogo o código para o OnDrawnColumnCell, ele só realiza a exibição do primeiro campo memo, os outros continuam do mesmo jeito. Vai aí o código:
Detalhe, já utilizei um laço for para as colunas do DbGrid, não deu erro mas tb não funcionou.
Agradeço toda a ajuda.
eu estou com uma aplicação em Delphi 7 Enterprise, Banco PostGreSql 8 e paleta Zeos 6.5.1. Eu tinha colocado no fórum uma pesquisa deste tipo e fui atendido porém agora me deparo com um problema. Na unit que estou criando agora tenho 4 campos memo (que são dois campos concatenados que geram um único campo). Quando jogo o código para o OnDrawnColumnCell, ele só realiza a exibição do primeiro campo memo, os outros continuam do mesmo jeito. Vai aí o código:
R := Rect; Dec(R.Bottom, 2); if Column.Field = ZQybusca.FieldByName(´cnome_contabildb´) then begin if not (gdSelected in State) then begin DBGrid1.Canvas.FillRect(Rect); DBGrid1.Canvas.TextRect(R,R.Left,R.Top, ZQybusca.FieldByName(´Cnome_contabildb´).AsString); end;
Detalhe, já utilizei um laço for para as colunas do DbGrid, não deu erro mas tb não funcionou.
Agradeço toda a ajuda.
Zooropa
Curtidas 0
Respostas
Zooropa
25/11/2006
Pessoal,
será que preciso escrever um bloco desse para cada campo?
Necessito de ajuda pois só falta isso pra eu passar para outro módulo.
Agradeço a ajuda.
será que preciso escrever um bloco desse para cada campo?
Necessito de ajuda pois só falta isso pra eu passar para outro módulo.
Agradeço a ajuda.
GOSTEI 0
Zooropa
25/11/2006
Gente, por favor...algué pode me ajudar? Sobe...
GOSTEI 0
Zooropa
25/11/2006
Olá gente,
eu sei que este caso é simples de resolver...só não estou conseguindo fazer para os quatro campos de uma vez. Por favor, alguém me ajude...
eu sei que este caso é simples de resolver...só não estou conseguindo fazer para os quatro campos de uma vez. Por favor, alguém me ajude...
GOSTEI 0
Emerson Nascimento
25/11/2006
não sei se eu entendi direito, mas poderia ser algo assim:
(certifique-se do tipo correto do campo)
if Column.Field.DataType in [ftBlob, ftMemo] then begin if not (gdSelected in State) then begin DBGrid1.Canvas.FillRect(Rect); DBGrid1.Canvas.TextRect(R,R.Left,R.Top, Column.Field.AsString); end;
(certifique-se do tipo correto do campo)
GOSTEI 0
Zooropa
25/11/2006
Olá Emerson,
seu código funcionou, porém estou utilizando isto num campo Valor (está com máscara, por isso ficou com o texto MEMO na Grid). O seu código só funciona se eu tirar a máscara do valor. Tem como exibir o campo Valor com máscara sem que a grid exiba o MEMO?
Muito obrigado.
seu código funcionou, porém estou utilizando isto num campo Valor (está com máscara, por isso ficou com o texto MEMO na Grid). O seu código só funciona se eu tirar a máscara do valor. Tem como exibir o campo Valor com máscara sem que a grid exiba o MEMO?
Muito obrigado.
GOSTEI 0
Zooropa
25/11/2006
Saudações emerson,
consegui resolver. Modifiqei o código que vc me enviou e implementei uma função para substituir os caracteres (vírgula e ponto). Segue o OnDrawColumnCell depois da implementação:
Muito obrigado pela ajuda.
consegui resolver. Modifiqei o código que vc me enviou e implementei uma função para substituir os caracteres (vírgula e ponto). Segue o OnDrawColumnCell depois da implementação:
var R : TRect; Valor : string; begin R := Rect; Dec(R.Bottom, 2); if Column.Field.DataType in [ftMemo] then begin if not (gdSelected in State) then DBGrid1.Canvas.FillRect(Rect); Valor := AjustaMascara(Column.Field.AsString); DBGrid1.Canvas.TextRect(R,R.Left-7,R.Top + 2, Valor); end;
Muito obrigado pela ajuda.
GOSTEI 0