Selecao DevMedia QUERO SER PRIME

Fórum Exibir Campo Memo em DbGrid...de novo #333722

25/11/2006

0

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:
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

Zooropa

Responder

Posts

27/11/2006

Zooropa

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.


Responder

Gostei + 0

29/11/2006

Zooropa

Gente, por favor...algué pode me ajudar? Sobe...


Responder

Gostei + 0

08/12/2006

Zooropa

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...


Responder

Gostei + 0

08/12/2006

Emerson Nascimento

não sei se eu entendi direito, mas poderia ser algo assim:
      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)


Responder

Gostei + 0

06/01/2007

Zooropa

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.


Responder

Gostei + 0

06/01/2007

Zooropa

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:
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.


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar