![]() |
Urgente! No encuentro sol. para mostrar memo en rxdbgrid.
Buenos días,
Tengo un rxdbgrid enlazado con una qry que tiene un campo memo. Como sabéis, aparece el texto [Memo] en el grid al enlazarlo. He probado varias soluciones en el OnDrawColumnCell que he encontrado, pero no he podido visualizar el memo. Las soluciones son del tipo: var Grid : TStringGrid; Texto : String; Rectangulo : TRect; begin Rectangulo:=Rect; Grid := TStringGrid(Sender); if Field.IsBlob then begin Grid.Canvas.FillRect(Rect); Texto := Field.AsString; DrawText( Grid.Canvas.Handle, PChar(Texto), StrLen(PChar(Texto)), Rectangulo, DT_WORDBREAK); end; o En este recomendaban quitar el field del campo del grid que es el memo. var rectangulo:trect; begin with Sender as TDBGrid do begin //micampo es campo memo if column.Title.Caption='micampo' then begin rectangulo:=rect; DrawText(Canvas.Handle,PChar(ibdataset.FieldByName('micampo').AsString),StrLen(PChar(ibdataset.Field ByName('micampo').AsString)),Rectangulo,DT_EDITCONTROL); end; He probado estas y otras más, pero no he conseguido que funcionen. Si directamente en la qry corto el memo a 255 caracteres, entonces sí me muestra el contenido del memo, pero en los retornos de carro aparece un cuadrado. Hoy parece que estoy un poco negado porque no he podido ni quitar los retornos de carro directamente desde la qry (para que almenos me muestre 255 car. del memo limpios) ni al mostrar el dado en el grid. Muchas gracias de antemano por vuestro tiempo. Un saludo. |
¿Por qué no te funciona el primer método?
Es el método que se porpone en Trucomanía y yo aun no he visto ahí ninguno publicado y que no funcione... |
Ajustes por ejecutar en OnDrawColumnCell.
Hola Marto,
Tienes razón. No 'me' funciona. A mí tampoco me ha fallado nunca trucomania, por estoy seguro de que hay algo que no estoy haciendo bien. Lo ha utilizado en el OnDrawDataCell y en OnDrawColumnCell con ajustes: var Grid : TStringGrid; Texto : String; Rectangulo : TRect; begin Rectangulo:=Rect; Grid := TStringGrid(Sender); if Column.Field.IsBlob then begin Grid.Canvas.FillRect(Rect); Texto := Column.Field.AsString; DrawText( Grid.Canvas.Handle, PChar(Texto), StrLen(PChar(Texto)), Rectangulo, DT_WORDBREAK); end; end; El resultado en los dos eventos es el mismo, aparece la palabra (MEMO) en el campo del grid. ¿Puedes orientarme cual puede ser el problema? Muchas gracias. |
Buenos dias,
Alguna sugerencia al problema? Muchas gracias por todo. |
No lei por completo lo que hiciste pero me parece mucho mas simple que en el select uses substr sobre la columna memo, onda select columna1, columna2, substr(columna3,0,150) as "columna3" from tabla con eso tranformas el memo en string
|
a mi me da el mismo error con el rxdbgrid pero lo reemplace por el dbgrid y si funciona, proba con el dbgrid.
chau suerte |
Pues acabo de probarlo tanto en un TRxDbGrid como en un TDbGrid y me ha funcionado correctamente
Código:
procedure TForm1.RxDBGrid1DrawColumnCell(Sender: TObject; |
La franja horaria es GMT +2. Ahora son las 07:37:39. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi