Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-04-2004
setry2 setry2 is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 45
Poder: 0
setry2 Va por buen camino
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.
__________________
Setry2
Eres un bit?
www.lafesta.com
Responder Con Cita
  #2  
Antiguo 02-04-2004
Avatar de marto
marto marto is offline
Miembro
 
Registrado: may 2003
Ubicación: Barcelona, Catalunya
Posts: 882
Poder: 21
marto Va por buen camino
¿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...
__________________
E pur si muove
Responder Con Cita
  #3  
Antiguo 02-04-2004
setry2 setry2 is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 45
Poder: 0
setry2 Va por buen camino
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.
__________________
Setry2
Eres un bit?
www.lafesta.com
Responder Con Cita
  #4  
Antiguo 05-04-2004
setry2 setry2 is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 45
Poder: 0
setry2 Va por buen camino
Buenos dias,

Alguna sugerencia al problema?

Muchas gracias por todo.
__________________
Setry2
Eres un bit?
www.lafesta.com
Responder Con Cita
  #5  
Antiguo 08-04-2004
Nadie Nadie is offline
Miembro
 
Registrado: ago 2003
Ubicación: http://manchasenlapared.blogspot.com
Posts: 75
Poder: 21
Nadie Va por buen camino
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
Responder Con Cita
  #6  
Antiguo 09-04-2004
tutuk tutuk is offline
Miembro
 
Registrado: may 2003
Posts: 42
Poder: 0
tutuk Va por buen camino
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
Responder Con Cita
  #7  
Antiguo 09-04-2004
__cadetill __cadetill is offline
Miembro
 
Registrado: may 2003
Posts: 3.387
Poder: 25
__cadetill Va por buen camino
Pues acabo de probarlo tanto en un TRxDbGrid como en un TDbGrid y me ha funcionado correctamente

Código:
procedure TForm1.RxDBGrid1DrawColumnCell(Sender: TObject;
  const Rect: TRect; DataCol: Integer; Column: TColumn;
  State: TGridDrawState);
var
  Grid: TStringGrid;
  Texto: String;
  Rectangulo: TRect;
begin
  Rectangulo:=Rect;
  Grid := TStringGrid(Sender);
//  if Column.Field.IsBlob then  // <= esta forma también me ha funcionado
  if Column.Field.ClassType = TMemoField then
  begin

    Grid.Canvas.FillRect(Rect);
    Texto := Column.Field.AsString;
    DrawText( Grid.Canvas.Handle,
              PChar(Texto),
              StrLen(PChar(Texto)),
              Rectangulo,
              DT_WORDBREAK);
  end;
end;
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 14:19:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi