GARANTIR DESCONTO

Fórum Problema em grid pra ver campos concatenados #279503

29/04/2005

0

Bom dia pessoal, me desculpem se o topico esta repetido, mas eu naum encontrei nada na pesquisa.

Meu problema eh o seguinte. Tenho varios edits em um form, e quando vou salvar, pego esses edits, concateno e salvo tudo em um campo vachar.

ex: qry_testeCAMPO.value:=edit01.text+#13+edit02.text+13´+edit03.text;

Bom, eu estou usando FB, com drive ODBC, e ADO. No banco, (IBExpert q uso), o campo aparece de forma correta, vejo cada text dos edits em uma linha.

O prob eh, qdo vou fazer uma consulta e recebo este campo em um DBGrid, ele aparece assim: Text 01 bla,bla,bla//Texto 02 ble,ble,ble//texto03 bli,bli,bli

Detalhe, as barras sao aquelas reta e naum essas ai, eh pq naum tem no meu teclado.

O que devo fazer??? Espero ter sido claro.

Desde ja agradeco

Bruno Augusto


Brunobaco

Brunobaco

Responder

Posts

29/04/2005

Brunobaco

Pessoal, isso tambem ta acontecendo qdo eu vou digitar dentro do memo o seguinte:

Fulano (ai dou enter)
Beltrano (enter de novo)
Ciclano

Entaum eu salvo, e qdo vou ver isso em um dbgrid aparece Fulano/Beltrano/Ciclano (obs.: As barras sao verticais, eh pq naum tenho elas no meu teclado)

Que e tah acontecendo?

Por favor, me ajudem

Desde ja gradeco

Bruno Augusto


Responder

Gostei + 0

29/04/2005

Technos

Já penssou em usar Campos Calculados ?

É melhor.

Qualquer bronca avisa.


Responder

Gostei + 0

29/04/2005

Massuda

...qdo vou fazer uma consulta e recebo este campo em um DBGrid, ele aparece assim ... Detalhe, as barras sao aquelas reta e naum essas ai...
Pelo que me lembro, o DBGrid não sabe como tratar o #13... ele tenta mostrar o 13 na tela, o que resulta nas ´barras´.

A única solução é você mesmo fazer o desenho da célula que contem esse texto usando o evento OnDrawColumnCell do DBGrid.


Responder

Gostei + 0

29/04/2005

Raserafim

bruno, o problema deve ser por causa do #13 (e pode estar sendo mal interpretado como disse o Massuda), isso significa a tecla Enter, neste caso passar para uma outra linha.
Mas vc disse que está usando o VarChar, então eu deduzo que vc está querendo que fique tudo na mesma linha. se for isso mesmo vc pode substituir o seu código por:
ex: qry_testeCAMPO.value:=edit01.text+´ ´+edit02.text+´ ´+edit03.text;



Responder

Gostei + 0

29/04/2005

Brunobaco

Bom pessoal, vamos la.

Technos, o que seriam esses campos calculados? Naum sei do que se trata. Se quiser, me mande por e-mail, ou por aki mesmo (bacoliv@yahoo.com.br)

Massuda, a unica coisa que sei fazer com o OnDrawColumnCell eh ficar listrado meu grid. Como eu faria isso, e o que eh isso que vc escreveu?

raserafim, eu acabei ficando em duvida agora se meu campo eh varchar ou blob. Estou no trabalho e naum possuo meu banco aki.

Se puderem me explicar minhas duvidas acima, eu agradeceria. Vou tentar descobrir ainda hj sobre o campo. Se for blob, tem algum problema?

Desde ja agradeco.


Responder

Gostei + 0

29/04/2005

Massuda

Como eu faria isso, e o que eh isso que vc escreveu?
Use algo assim:
procedure TForm1.DBGridDrawColumnCell(Sender: TObject; const Rect: TRect; 
  DataCol: Integer; Column: TColumn; State: TGridDrawState); 
var 
  R: TRect;
  S: string; 
begin 
  // NomeDoCampo é o campo com o texto em linhas separadas por #13
  if Column.FieldName = ´NomeDoCampo´ then begin 
    with DBGrid.Canvas do begin 

      FillRect(Rect); 

      S := Column.Field.AsString; 

      R := Rect; 
      DrawText(Handle, PChar(S), Length(S), R, DT_CENTER or DT_VCENTER or DT_WORDBREAK); 
    end; 
  end 
  else begin 
    DefaultDrawColumnCell(Rect, DataCol, Column, State); 
  end; 
end;
O valor DT_WORDBREAK passado para DrawText fará com que o texto seja quebrado onde estiver um 13 e onde for necessário para o texto ser mostrado na célula do grid

Provavelmente você terá que aumentar a altura das linhas do DBGrid para poder ver todo o texto; para fazer isso, use algo assim
// inclua isto na seção implementation
type 
  TCrackedDBGrid = class (TDBGrid) 
  public
    property RowHeights;
  end;
...

// faça isto no OnCreate do form
// sempre altere todas as linhas do dbgrid
var
  I: Integer;
...
  for I := 0 to DBGrid.RowCount - 1 do 
    TCrackedDBGrid (DBGrid).RowHeights [I] := ...altura desejada...;



Responder

Gostei + 0

29/04/2005

Massuda

Uma pequena correção...

// faça isto no OnCreate do form // sempre altere todas as linhas do dbgrid ....
Na verdade, mude a altura das linhas depois que o dataset associado ao DBGrid estiver ativo/aberto.


Responder

Gostei + 0

29/04/2005

Brunobaco

Vlw Massuda. Vou tentar isso qdo estiver com o banco.

Estou aberto a novas ideias.

Desde ja agradeço

Bruno Augusto


Responder

Gostei + 0

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

Aceitar