Ir para conteúdo
Fórum Script Brasil
  • 0

(Resolvido) Campo Memo em um DBgrid


Arrais Júnior

Pergunta

olá, estou tendo um probleminha, como exibo em um DBGRIG um campo MEMO ?

dei uma olhada nos sites e não consegui com nenhum exemplo, sou iniciante, deve ser por isso...

o nome do campo da tabela é COMENTARIOS

alguém poderia me fornecer o codigo e informar em qual evento do DBGRID ele tem que ser posto.

obrigado.

Link para o comentário
Compartilhar em outros sites

17 respostass a esta questão

Posts Recomendados

  • 0

olhei o exemplo do link e ficou assim:

procedure TForm1.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

var R : TRect;

begin

R:=Rect;

Dec(R.Bottom,2);

if Column.Field=Query1.FieldByName('comentario') then

begin

if not (gdSelected in State) then

DBGrid2.Canvas.FillRect(Rect);

DBGrid2.Canvas.TextRect(R,R.Left,R.Top,

Query1.FieldByName('comentario').AsString);

end;

end;

end;

end.

porém, dar erro nessa linha: if Column.Field=Query1.FieldByName('comentario') then

detalhe, eu apenas uso um adoconnect, um adotable um datasoucer e um dbgrid.

como eu faria pro memo ficar na coluna? pode ser que essa solução seja viavel!

obrigado

Link para o comentário
Compartilhar em outros sites

  • 0
olhei o exemplo do link e ficou assim:

procedure TForm1.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

var R : TRect;

begin

R:=Rect;

Dec(R.Bottom,2);

if Column.Field=Query1.FieldByName('comentario') then

begin

if not (gdSelected in State) then

DBGrid2.Canvas.FillRect(Rect);

DBGrid2.Canvas.TextRect(R,R.Left,R.Top,

Query1.FieldByName('comentario').AsString);

end;

end;

end;

end.

porém, dar erro nessa linha: if Column.Field=Query1.FieldByName('comentario') then

detalhe, eu apenas uso um adoconnect, um adotable um datasoucer e um dbgrid.

como eu faria pro memo ficar na coluna? pode ser que essa solução seja viavel!

obrigado

hehe, tenta assim ó:

if Column.Field.Name = 'comentario' then

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

ok, ficou assim....

mais tah dando erra lá na linha vermelha

var R : TRect;

begin

R:=Rect;

Dec(R.Bottom,2);

if Column.Field.Name = 'comentario' then

begin

if not (gdSelected in State) then

DBGrid2.Canvas.FillRect(Rect);

DBGrid2.Canvas.TextRect(R,R.Left,R.Top,

Query1.FieldByName('comentario').AsString);

end;

end;

obrigado pela paciencia

Editado por Arrais Júnior
Link para o comentário
Compartilhar em outros sites

  • 0

ok ok, realmente eu não tinha o query Oo...

agora tá tudo normal...porem, ainda no Dbgrid exibe (MEMO) ....

begin

R:=Rect;

Dec(R.Bottom,2);

if Column.Field.Name = 'comentario' then

begin

if not (gdSelected in State) then

DBGrid2.Canvas.FillRect(Rect);

DBGrid2.Canvas.TextRect(R,R.Left,R.Top,

Query1.FieldByName('comentario').AsString);

end;

end;

queria saber se nesse código eu preciso ativar pra que seja mostrada, algo do tipo...eu gostaria que no grid já mostrasse automaticamente as memos...

vlws

Link para o comentário
Compartilhar em outros sites

  • 0

Se você já usava um dbGrid que tinha dados e estava funcionando, eu acho que esse Query1 que você criou não tem nada relacionado com os componentes do banco, tente substituir o Query1.FieldByName('comentario').AsString); pelo nome do componente de banco que você usa, acho que deve ser até outra query, exemplo: qryconsulta, qryDbGrid, minhaQry, ou algo assim, ou você deve estar usando um clientdataset, daí você deve coloca-lo, CdsConsulta, CdsMeu, MeuCds..... você tem q colocar o componente de banco que usa, e não criar uma Query1 somente para dar certo o código!

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

pronto...deu certo aqui :)

procedure TForm1.DBGrid2DrawColumnCell(Sender: TObject; const Rect: TRect;

DataCol: Integer; Column: TColumn; State: TGridDrawState);

var R : TRect;

begin

R:=Rect;

Dec(R.Bottom,2);

if Column.Field=adotable1.FieldByName('qualificacao') then

begin

if not (gdSelected in State) then

DBGrid2.Canvas.FillRect(Rect);

DBGrid2.Canvas.TextRect(R,R.Left,R.Top,

adotable1.FieldByName('qualificacao').AsString);

end;

end;

end.

OBS...só tem um probleminha.....quando eu clico no grid pra Copiar tudo que tem lá, copia apenas (MEMO) não copia os dados :(....algum luz?...algum dica de como eu poderia copiar todo o comentário?

Editado por Arrais Júnior
Link para o comentário
Compartilhar em outros sites

  • 0
OBS...só tem um probleminha.....quando eu clico no grid pra Copiar tudo que tem lá, copia apenas (MEMO) não copia os dados :(....algum luz?...algum dica de como eu poderia copiar todo o comentário?

Não entendi, carrega uma print da tela no imageshack.us e manda aqui pra mim ver e entender melhor!

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

tipo, os COMENTÁRIOS que estao dentro do campo comentário, não estao sendo copiados quando eu dou um CTRL + C, por mais que eu selecione o campo para copiar, quando eu colo CRTL + V, aparece apenas (MEMO) ...como se o conteudo que tivesse sendo mostrado fosse apenas uma imagem e não um texto que pudesse ser copiado...

é de extrema importancia que eu pegue todo o comentário , copiando do grid, ou de outra forma, e cole em um arqivo do tipo editor de texto....

obrigado e desculpas mais uma vez pelo transtorno.

Link para o comentário
Compartilhar em outros sites

  • 0

Adicione a Use ClipBrd no seu projeto.

Tenta fazer isso no evento OnKeyDown do DBGrid:

if (ssCtrl in Shift) and (Key=Ord('C')) then
begin
if DBGrid1.SelectedField = adotable1.FieldByName('qualificacao') then
begin
Clipboard.AsText := ADOTable1.FieldByName('qualificacao').AsString;
end;
end;
Lembrando que essa linha: Clipboard.AsText := ADOTable1.FieldByName('qualificacao').AsString; você tem que colocar o campo do Memo, se for esse então deixa assim... caso não dê certo, tente colocar outra coisa no OnKeyDown do DBGrid:
if (ssCtrl in Shift) and (Key=Ord('C')) then
begin
Clipboard.AsText = trim(lowercase('(memo)')) then
Clipboard.AsText := ADOTable1.FieldByName('qualificacao').AsString;
end;

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0
muito obrigado...só não tou conseguindo achar o Clipbrd, já procurei 3x os componentes do delphi 7 e não achei...tou procurando no canto certo?

Nem vai achar .. não é um componente

uses Clipbrd;

procedure TForm1.Button1Click(Sender: TObject);
begin
   if (ssCtrl in Shift) and (Key=Ord('C')) then
   begin
      Clipboard.AsText := trim(lowercase('(memo)'));
      Clipboard.AsText := ADOTable1.FieldByName('qualificacao').AsString;
   end;
end;

abraço

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...